Bonjour à toutes et à tous,
nouveau sur le forum, je sollicite votre aide (et votre indulgence ) pour m'apporter votre expertise à un problème que je n'arrive pas à résoudre.
Je vous presente mon projet :
je compare 2 tables mysql comprenant des champs identiques qui correspondent à des codifications communes mais en provenance de 2 sources différentes.
Ce travail était réalisé auparavant en Excel mais très fastidieuse car on doit comparer chaque codification ( il y en a une vingtaine) par opération sachant qu'il y a une centaine d'opération à comparer chaque mois...
j'ai donc commence humblement par mettre ces données dans une base MySQL et de créer 2 tables différentes (une pour chaque source de données)
J'affiche en php le contenu des 2 tables dans un tableau tout bête qui me permet de comparer 2 par 2 chaque codification. Le but est que quand nous sommes d'accord sur le chiffre de l'une ou l'autre source pour chaque codification comparée , on incrémente l'une ou l’autre des codifications en cliquant sur un bouton + ou un bouton - et cela pour chaque codification à comparer par opération (les valeurs des champs de codification des 2 tables MySQL change donc en temps reel).
j'arrive tant bien que mal à générer un résultat correct Smiley rolleyes : cad qu'a chaque fois que j'appuie sur + ou - d'une codification je récupère l'état du bouton ainsi que le code de l'opération grâce à
exemple :
<input type="submit" class="myButton" name="MOB52Vp" value='.$row["Code_NIDT_Formate"].'>+
=> je récupère la codification 52V (le p permet de savoir que j’incrémente de +1 la codification 52V) tout en associant dans la requête SQL d'update le code de l'opération grâce à value

mais vu qu'il y a beaucoup de lignes et de colonnes, chaque fois que je me positionne sur une case en particulier et que je clique sur le + ou le - , le rechargement de la page du au formulaire php me remet au début du tableau et je dois retrouver la ligne et la colonne à chaque fois avec les ascenseurs du navigateur ...
c'est pourquoi j'ai pensé à AJAX pour éviter de recharger la page et de rester dans ma "cellule" PHP pour continuer mes comparaisons.
le problème c'est que mon code est architecturé de telle façon que je récupère en POST la valeur de l’opération ( une code alphanumerique qui provient d'une des 2 tables MySQL) en vérifiant pour chaque codification l'état des boutons + et - .
J'ai essayé avec XMLHttpRequest et j'arrive bien a récupérer des données "statiques " cad en provenance d'un input type button avec une classe button et un onclick qui appelle une fonction AJAX ou est déclarée une variable xhr et qui récupère la valeur d'un id en POST dans l'input.
Mais quand j'essaye avec une valeur qui est le résultat d'une requête SQL ( affichée avec While($variable=MYSQL_fetch array($marequete), je suis incapable de récupérer cette valeur avec le send de xhr car je pense devoir "parser" en AJAX le contenu de mon array PHP pour sélectionner en POST la valeur qui intéresse et que je pourrais associer au comportement des bouton + ou - (comme je le fais déjà en PHP/MySQL mais avec rafraichissement de la page) => je pense à JQuery mais je suis trop novice et trop procédural pour bien le manipuler
après avoir navigué sur le net avec Jquery / JSON / $() et consors , j'avoue être perdu et j'aurai besoin d'aide
je vous envoi un extract simplifiée de mon code php avec les fonctions l'AJAX "statique" toutes simples qui renvoient bien en echo les variables mais pour celle qui sont sensées remonter les valeurs de MySQL (PostDataMOB30Vcodenidt() ou PostDataMOB30OFcodenidt())
il renvoie toujours la même valeur cad la 1ere...
en sachant que cette fonction est un test pour remonter les valeur de l'array mais le but est d'associer cette info au reste (les comportements des boutons + ou -) pour pouvoir maj la BDD
=> actuellement avec firebug je n'ai pas d'erreur mais le seul echo de la fonction PostDataMOB30Vcodenidt() ou PostDataMOB30OFcodenidt() est la 1ere valeur de ma BDD quand je clique sur le bouton associé.
il est très possible que la réponse soit simple pour vous mais j'ai toujours eu du mal avec les boucles et les incrémentations dans les tableaux...j'ai essayé avec du JQuery et $() mais sans succès...
Smiley bawling
le fichier import_AJAX.php contient simplement des echo pour savoir si les touches + ou - sont cochés donc il ne me semble pas utile de le poster ici
Grand merci d'avance pour toute l'aide que vous pourrez m'apporter
Hunter.


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<head><title>Analyse bilan Lot 10 mensuel Vinci</title>
        
   <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
    
      <LINK rel="stylesheet" type="text/css" href="style_RRA.css">
 
      <script type="text/javascript">



        
       function PostDataMOB30Vm() {
    // fonction qui permet en post de savoir si le bouton - est coché envoi pour decrementer de 1 la valeur de MOB30V
    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
        throw new Error("Ajax is not supported by this browser");
    }
   
    
    
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status == 200 && xhr.status < 300) {
                document.getElementById('div1').innerHTML = xhr.responseText;
               
            }
        }
    }
  

    var MOB30Vm = document.getElementById("MOB30Vm").value;
    

 
    xhr.open('POST', 'import_AJAX.php');
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("MOB30Vm=" + MOB30Vm)
    
}

        
  function PostDataMOB30Vp() {
    //fonction qui permet en post de savoir si le bouton + est coché envoi pour incrementer de 1 la valeur de MOB30V
    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
        throw new Error("Ajax is not supported by this browser");
    }
    
    
   
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status == 200 && xhr.status < 300) {
                document.getElementById('div1').innerHTML = xhr.responseText;
               
            }
        }
    }
    

    var MOB30Vp = document.getElementById("MOB30Vp").value;
    

    
    xhr.open('POST', 'import_AJAX.php');
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("MOB30Vp=" + MOB30Vp)
   
}


        
       function PostDataMOB30OFm() {
    // fonction qui permet en post de savoir si le bouton - est coché envoi pour decrementer de 1 la valeur de MOB30OF
    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
        throw new Error("Ajax is not supported by this browser");
    }
   
    
    
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status == 200 && xhr.status < 300) {
                document.getElementById('div1').innerHTML = xhr.responseText;
               
            }
        }
    }
  

    var MOB30OFm = document.getElementById("MOB30OFm").value;
    

 
    xhr.open('POST', 'import_AJAX.php');
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("MOB30OFm=" + MOB30OFm)
    
}

        
  function PostDataMOB30OFp() {
    //fonction qui permet en post de savoir si le bouton + est coché envoi pour incrementer de 1 la valeur de MOB30V
    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
        throw new Error("Ajax is not supported by this browser");
    }
    
    
   
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status == 200 && xhr.status < 300) {
                document.getElementById('div1').innerHTML = xhr.responseText;
               
            }
        }
    }
    

    var MOB30OFp = document.getElementById("MOB30OFp").value;
    

    
    xhr.open('POST', 'import_AJAX.php');
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("MOB30OFp=" + MOB30OFp)
   
}


function PostDataMOB30Vcodenidt() {
 //test simplement fait pour remonter la valeur de l'opération (Code_NIDT_Formate) dasn le cas ou on appuie sur  le bouton - de MOB30V 
    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
        throw new Error("Ajax is not supported by this browser");
    }
    
    
   
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status == 200 && xhr.status < 300) {
                document.getElementById('div1').innerHTML = xhr.responseText;
               
            }
        }
    }
    

    var MOB30Vcodenidt = document.getElementById("MOB30Vcodenidt").value;
    

   
    xhr.open('POST', 'import_AJAX.php');
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("MOB30Vcodenidt=" + MOB30Vcodenidt)
  
}

function PostDataMOB30OFcodenidt() {
 //test simplement fait pour remonter la valeur de l'opération (Code_NIDT_Formate) dasn le cas ou on appuie sur  le bouton - de MOB30OF 
    var xhr;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
        throw new Error("Ajax is not supported by this browser");
    }
    
    
   
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status == 200 && xhr.status < 300) {
                document.getElementById('div1').innerHTML = xhr.responseText;
               
            }
        }
    }
    

    var MOB30OFcodenidt = document.getElementById("MOB30OFcodenidt").value;
    

   
    xhr.open('POST', 'import_AJAX.php');
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("MOB30OFcodenidt=" + MOB30OFcodenidt)
  
}

      </script>  
 </head>
  
  
      
          <?php
          
      //CONNEXIONMYSQL

include("includeodin.php");
$connexion=MYSQL_CONNECT($ip,$utilisateur,$mot_de_passe) ;
if (!$connexion) {
echo "ERREUR DE CONNEXION"."<br>" ; }
$db=MYSQL_SELECT_DB('OPEX_Lot_10_Facturation');
if (!$db) { echo " ERREUR BASE DE DONNEE"."<BR>" ; }  

   
   $comparo ="SELECT Synthese_facturation.Code_NIDT_Formate, 
Synthese_facturation.V_MOB30_VINCI, Synthese_facturation.V_MOB30_OF 
from Synthese_facturation";

$result = mysql_query($comparo,$connexion) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


if ($total) {
// debut du tableau
        echo '<table bgcolor="#FFFFFF">' . "\n";
     //   echo'<tr  onmouseover="this.className=\'survol\';" onmouseout="this.className=\'parti\';">';
        
// exemple de comparaison de la codification VMOB30 entre les 2 sources : les boutons + et - permettront d'incrementer les valeurs en temps reel sans recharger la page par le navigateur
        echo '<tr>';
        echo '<div id="div1"></div>';
        while ($row = mysql_fetch_array($result)) {
        echo ''.$row["Code_NIDT_Formate"].'</u></b></td><br>';
        echo '' . $row["V_MOB30_VINCI"] . '<input type="button" id="MOB30Vcodenidt"  name="MOB30Vcodenidt" value='.$row["Code_NIDT_Formate"].' onclick="PostDataMOB30Vcodenidt()"><input type="button" id="MOB30Vm" class="myButton"  name="MOB30Vm" value="-" onclick="PostDataMOB30Vm()"></button><input type="button" id="MOB30Vp" class="myButton"  name="MOB30Vp" value="+" onclick="PostDataMOB30Vp()"></button></br></b></td>';
        echo '' . $row["V_MOB30_OF"] . '<input type="button" id="MOB30OFcodenidt"  name="MOB30OFcodenidt" value='.$row["Code_NIDT_Formate"].' onclick="PostDataMOB30OFcodenidt()"><input type="button" id="MOB30OFm" class="myButton"  name="MOB30OFm" value="-" onclick="PostDataMOB30OFm()"></button><input type="button" id="MOB30OFp" class="myButton"  name="MOB3OFp" value="+" onclick="PostDataMOB30OFp()"></button></br></b></td>';
        echo '</tr>' . "\n";
 
 }
        echo '</table>' . "\n";
        //fin du tableau.
    } else {
        echo 'Pas d\'enregistrements dans cette table...';
    }
 
          
    
?>