Récupérer données après POST serializeArray

Par Fistoon, il y a 9 ans


Bonjour à tous,

je souhaite grâce à ajax exécuter une requête update sur ma bdd lors du clique sur un bouton.

J'envoi donc en post dans mon javascript les données du formulaire correspondant. Il y a environ 200 données (input) à envoyer.

Je souhaiterais savoir ce qu'il est conseillé de faire et pourquoi ? Serialize ou serializeArray ?

Ensuite, c'est le gros de ma question, comment je récupère ses fameuses données dans mon php ? Une boucle sur mon post ?

Voici le code :

js

$(document).ready(function(){       $('form.editCodes').submit(function(e){ //submitEdit est l id du input submit (le bouton) dans le fichier editcodes         // J'empêche le comportement par défaut du navigateur, c-à-d de soumettre le formulaire         e.preventDefault();                   // On créer une variable contenant le formulaire sérialisé des éditions de libellés et de codes         var donnees = $(this).serialize();         var donneesArray = $(this).serializeArray();         var donneesjson = JSON.stringify(donneesArray);                   //affichage des données du array du form dans la console du navigateur         console.log( donnees );         console.log( donneesArray );         console.log( donneesjson );         event.preventDefault();           // Envoi de la requête HTTP en mode asynchrone         $.post(             'modif.php', // Un script PHP que l'on va créer juste après             {data : donneesArray}, // Nous récupérons les valeurs de nos textarea que l'on fait passer à modif.php               function(data){ // Cette fonction retourne le message de connection ou erreur.                 console.log( data );                 event.preventDefault()                                   /*if(data == 0)                 {                     // Affichage d'un message suite retour requête modif.php                     $("#resultatEdit").html("<p>Aucune modification.</p>");                 }                 else                 {                     // Affichage d'un message suite retour requête modif.php                     $("#resultatEdit").html("<p>Modification(s) enregistrée(s).</p>");                 }*/             },               'text' // Nous souhaitons recevoir "Success" ou "Failed", donc on indique text !         );     }); });

qui envoie les données dans modif.php

<?php     //requete modification de données pour les libellés et les codes.       //initialisation de la variable     $total_modifs = 0;       // On récupère tous les codes portes     $recup_code = $bdd->query('SELECT * FROM cp_codes');           //boucle récupération de l idcode et update des tables.     while ($recup_codesportes = $recup_code->fetch())     {         $recupidcodesportes = $recup_codesportes['cod_id'];                   //contrôle que la donnée du array "donnees" du post_edit.js correspond au lib         $recuplibelleporte = $_POST['lib'.$recupidcodesportes.''];         $recuplibelleporte = addslashes($recuplibelleporte);         $recupcodesportes = $_POST['cod'.$recupidcodesportes.''];         $recupcodesportes = addslashes($recupcodesportes);                   $bddmodifcodelib = 'UPDATE cp_codes SET cod_libelle = \''.$recuplibelleporte.'\', cod_codes = \''.$recupcodesportes.'\' WHERE cod_id= \''.$recupidcodesportes.'\'';         //$nb_modifs = $bdd->exec($bddmodifcodelib);           $total_modifs = $total_modifs + $nb_modifs;     }             foreach( $_POST['name'] as $datepicker ){         //récupérer et transformer la date version en bon format pour bdd         $bddmodifdate = 'UPDATE cp_date SET date_modification = STR_TO_DATE(\''.$datepicker.'\',\'%d/%m/%Y\')';         //$modifdateversion = $bdd->exec($bddmodifdate);                   $total_modifs = $total_modifs + $modifdateversion;         //mysql_query("UPDATE transactions SET IDDepartamentDestinatie = '$v' WHERE id = '{$_POST['id'][$k]}'");     }                 echo 'post :'.$datepicker;     echo ' / requetes bdd :'.$recuplibelleporte.' / '.$bddmodifdate.' / ' .$bddmodifcodelib;     //echo $_POST['datepicker'];     //echo $total_modifs; ?>

Mon formulaire initial :

<form class="editCodes">           <!-- date version des codes -->         <div id="modifdateversion">             <label for="datepicker" >Date de la version :</label>             <div id="modifdateversioninput">                 <input type="text" maxlength="10" id="datepicker" name="datepicker" label="dateversion" placeholder="Modification de la date de version :" value="<?php echo $recupdate; ?>">             </div>         </div>                      <!-- 40 caractères maximums par li, sinon passage à la ligne. -->         <div data-role="collapsibleset" data-filter="true" data-inset="true" id="collapsiblesetForFilterSet" data-input="#searchForCollapsibleSet">                       <?php             //boucle affichage des résidences.                           // On récupère toutes les résidences             $reponse_residence = $bdd->query('SELECT * FROM cp_residence');               // On affiche chaque residence entrée une à une             while ($donnees_residence = $reponse_residence->fetch())             {                 $nomresidence =  $donnees_residence['res_nom'];                 $identifiantresidence =  $donnees_residence['res_id'];             ?>                 <div data-role="collapsible" data-filtertext="<?php echo $nomresidence; ?>">                     <h2><?php echo $nomresidence; ?></h2>                                           <ul data-role="listview" data-shadow="false" data-inset="true" data-corners="false" data-x-filter="false">             <?php                     // On récupère tous les codes portes de la résidence affichée                     $reponse_code = $bdd->query('SELECT * FROM cp_codes WHERE cod_residence='.$identifiantresidence.'');                                   //boucle affichage des libellés et codes portes.                     while ($donnees_codesportes = $reponse_code->fetch())                     {                         $idcode = $donnees_codesportes['cod_id'];                         $libelle = $donnees_codesportes['cod_libelle'];                         $codes = $donnees_codesportes['cod_codes'];             ?>                         <li>                             <input type="text" maxlength="60" name="lib<?php echo $idcode ?>" id="lib<?php echo $idcode ?>" placeholder="Libellé :" value="<?php echo $libelle; ?>">                             <input type="text" maxlength="60" name="cod<?php echo $idcode ?>" id="cod<?php echo $idcode ?>" placeholder="Code :" value="<?php echo $codes; ?>">                         </li>             <?php                                }             ?>                     </ul>                 </div>             <?php             }             $reponse_residence->closeCursor(); // Termine le traitement de la requête             $reponse_code->closeCursor(); // Termine le traitement de la requête             ?>         </div>     </form> `''

Aucune réponse