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