<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Mailleur WEB Interface</TITLE>
-<script defer src="translations.js?v={$curtime}"></script>
-<script defer src="directives.js?v={$curtime}"></script>
-<script defer src="coloration.js?v={$curtime}"></script>
-<script defer src="selectajax.js?v={$curtime}"></script>
<link rel="stylesheet" href="theme.css?v=$curtime">
</HEAD>
<BODY data-theme={$theme}>
function endhtml()
{
+$curtime=time(); //Loading time stamp
+
$STR = <<<EOT
+<script defer src="translations.js?v={$curtime}"></script>
+<script defer src="directives.js?v={$curtime}"></script>
+<script defer src="coloration.js?v={$curtime}"></script>
+<script defer src="selectajax.js?v={$curtime}"></script>
</BODY>
</HTML>
EOT;
*
* Dépendances : aucun framework nécessaire (vanilla JS)
*/
-
-document.addEventListener('DOMContentLoaded', function(){
+document.addEventListener('DOMContentLoaded', function() {
// Sélection du formulaire
const form = document.getElementById('searchForm');
- if(!form) return; // sécurité si formulaire non présent
+ if (!form) return; // sécurité si formulaire non présent
- form.addEventListener('submit', function(e){
+ form.addEventListener('submit', function(e) {
e.preventDefault(); // empêche le rechargement de la page
// Construction du FormData pour POST
formData.set('ajax', '1');
// Envoi POST via fetch
- fetch('lvlmai.php', {
- method: 'POST',
- body: formData
- })
- .then(response => response.json())
- .then(data => {
- const headerRow = document.getElementById('headerRow');
- const bodyRows = document.getElementById('bodyRows');
-
- // Vider le tableau précédent
- headerRow.innerHTML = '';
- bodyRows.innerHTML = '';
-
- if(data.length === 0) return;
-
- // Générer les en-têtes dynamiques
- Object.keys(data[0]).forEach(col => {
- const th = document.createElement('th');
- th.textContent = col;
- headerRow.appendChild(th);
- });
-
- // Générer les lignes
- data.forEach(row => {
- const tr = document.createElement('tr');
- Object.values(row).forEach(val => {
- const td = document.createElement('td');
- td.textContent = val;
- tr.appendChild(td);
+ fetch('lvlmai.php', { method: 'POST', body: formData })
+ .then(resp => resp.text())
+ .then(text => {
+ console.log("Réponse brute :", text); // JMPDBG1
+ try {
+ return JSON.parse(text);
+ } catch(err) {
+ console.error("Erreur parsing JSON :", err, text);
+ throw err;
+ }
+ })
+ .then(data => {
+ const headerRow = document.getElementById('headerRow');
+ const bodyRows = document.getElementById('bodyRows');
+ if (!headerRow || !bodyRows) {
+ console.error("thead ou tbody introuvable !");
+ return;
+ }
+
+ // Vider le tableau précédent
+ headerRow.innerHTML = '';
+ bodyRows.innerHTML = '';
+
+ console.log("JMPDBG2 nombre de lignes reçues :", data.rows.length);
+
+ if (data.rows.length === 0) return; // rien à afficher
+
+ // Générer les en-têtes dynamiques
+ Object.keys(data.rows[0]).forEach(col => {
+ const th = document.createElement('th');
+ th.textContent = col;
+ headerRow.appendChild(th);
});
- bodyRows.appendChild(tr);
- });
- })
- .catch(err => console.error('Erreur AJAX:', err));
- });
+ // Générer les lignes
+ data.rows.forEach(row => {
+ const tr = document.createElement('tr');
+ Object.values(row).forEach(val => {
+ const td = document.createElement('td');
+ td.textContent = val ?? ''; // gérer les null
+ tr.appendChild(td);
+ });
+ bodyRows.appendChild(tr);
+ });
+ })
+ .catch(err => console.error('Erreur AJAX:', err));
+ });
});