Partage
  • Partager sur Facebook
  • Partager sur Twitter

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

    21 février 2017 à 14:59:35

    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;
    ?>




    -
    Edité par fiston 21 février 2017 à 19:23:58

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 février 2017 à 19:57:13

      Tu peux donner ton formulaire HTML ?

      • Partager sur Facebook
      • Partager sur Twitter
        21 février 2017 à 20:30:08

        Novax a écrit:

        Tu peux donner ton formulaire HTML ?


        <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>


        Voila ce que je récupère dans ma console :

        [{"name":"datepicker","value":"21/02/2017"},{"name":"lib0","value":""},{"name":"cod0","value":""},{"name":"lib1","value":""},{"name":"cod1","value":""},{"name":"lib2","value":""},{"name":"cod2","value":""},{"name":"lib3","value":""},{"name":"cod3","value":""},{"name":"lib4","value":""},{"name":"cod4","value":""},{"name":"lib5","value":""},{"name":"cod5","value":""},{"name":"lib6","value":""},{"name":"cod6","value":""},{"name":"lib7","value":""},{"name":"cod7","value":""},{"name":"lib8","value":""},{"name":"cod8","value":""},{"name":"lib9","value":""},{"name":"cod9","value":""},{"name":"lib10","value":""}]
        post_edit.js (15,3)

        il n'y a rien dans les values, c'est normal ... mais par exemple si je veux récupérer le value de "datepicker". 

        Comment dois-je faire ?

        -
        Edité par fiston 21 février 2017 à 23:36:36

        • Partager sur Facebook
        • Partager sur Twitter

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

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown