Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 15h32   #1
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Par défaut Récupérer dans un tableau les valeurs input de même nom

Dans un tableau html j'ai une colonne qui contient des input qui ont tous le même name mais des valeurs différentes selon la saisie, et il y a une autre colonne en début de tableau qui contient les références :

Bouton, tableau :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<input type="button" name="validerCde" id="validerCde" value="Valider la commande" />
<table border="1">
<tr>
<th>Référence</th>
<th>colonne 1</th>
<th>colonne 2</th>
<th>colonne 3</th>
<th>colonne 4</th>
<th>Valeur</th>
</tr>
<tr>
<td>ref1</td>
<td>col1</td>
<td>col2</td>
<td>col3</td>
<td>col4</td>
<td><input type="text" name="inputVal" id="inputVal" Class="input_cde" value="" /></td>
</tr>
<tr>
<td>ref2</td>
<td>col1</td>
<td>col2</td>
<td>col3</td>
<td>col4</td>
<td><input type="text" name="inputVal" id="inputVal" Class="input_cde" value="" /></td>
</tr>
<tr>
<td>ref3</td>
<td>col1</td>
<td>col2</td>
<td>col3</td>
<td>col4</td>
<td><input type="text" name="inputVal" id="inputVal" Class="input_cde" value="" /></td>
</tr>
<tr>
<td>ref4</td>
<td>col1</td>
<td>col2</td>
<td>col3</td>
<td>col4</td>
<td><input type="text" name="inputVal" id="inputVal" Class="input_cde" value="" /></td>
</tr>
</table>
Avec une requête ajax je dois envoyer un array (clé/valeur) contenant référence/valeurInput.
serialize ne convient pas, car la clé ne sera pas la référence mais toujours le name du input (A moins que vous ayez une solution pour faire entrer la ref dans la value du input avec un séparateur).

Au clique sur le bouton "valider la commande", comment fais-t-on pour ramener référence/valeurInput des input saisie, le tout dans un tableau exploitable par PHP comme le fait serialize ?

J'ai bien le début d'une fonction, mais je me perd quand il s'agit de récupérer les valeurs entre les parent, enfant etc...

Code :
1
2
3
4
5
6
7
8
9
 
$("#validerCde").click(function() {
   if(confirm("Veuillez confirmer la création de la commande :")) {
      var qte = $(".input_cde").text();
   } 
   else {
           return false;
        }
});
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 15h56   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
1) un id DOIT être UNIQUE sur le page ...

2) il te faudra passer par un each pour faire un push dans un array

commence par modifier ton code de sorte à n'avoir plus d'id en doublons ...

on fera le each après
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 17h31   #3
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
J'ai modifié le code du tableau avec un peu de php pour générer des id uniques :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<input type="button" name="validerCde" id="validerCde" value="Valider la commande" />
  <table border="1">
    <tr>
	<th>Référence</th>
	<th>colonne 1</th>
	<th>colonne 2</th>
	<th>colonne 3</th>
	<th>colonne 4</th>
	<th>Valeur</th>
    </tr>
<?php for($i=1; $i<=4; $i++) { ?>
    <tr>
	<td>ref<?php echo $i; ?></td>
	<td>col1</td>
	<td>col2</td>
	<td>col3</td>
	<td>col4</td>
<td><input type="text" name="inputVal<?php echo $i; ?>" id="inputVal<?php echo $i; ?>" Class="input_cde" value="" /></td>
    </tr>
<?php } ?>
   </table>
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 19h31   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
tu peux avoir un name unique...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<input type="button" name="validerCde" id="validerCde" value="Valider la commande" />
  <table border="1">
    <tr>
	<th>Référence</th>
	<th>colonne 1</th>
	<th>colonne 2</th>
	<th>colonne 3</th>
	<th>colonne 4</th>
	<th>Valeur</th>
    </tr>
<?php for($i=1; $i<=4; $i++) { ?>
    <tr>
	<td>ref<?php echo $i; ?></td>
	<td>col1</td>
	<td>col2</td>
	<td>col3</td>
	<td>col4</td>
<td><input type="text" name="inputVal" id="inputVal<?php echo $i; ?>" Class="input_cde" value="" /></td>
    </tr>
<?php } ?>
   </table>
ton jquery devient:
Code :
1
2
3
var tabVals=new Array();
$('input[name="inputval"]').each(function(){
 tabVlas.push($(this).val();});
mais je me demande même si un serialize sur un même name avec [] ne fonctionne pas ???
Code :
<td><input type="text" name="inputVal[]" id="inputVal<?php echo $i; ?>" Class="input_cde" value="" /></td>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 23h32   #5
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Je confirme, serialize fonctionne et ramène une chaine : ref1=&ref2=4&ref3=2&ref4=

Code :
var str = $(".input_cde").serialize();
Code :
<input type="text" name="ref<?php echo $i; ?>" value="" Class="input_cde" />
Comment fait-on pour exploiter cette chaine et récupérer les valeurs ? Unserialize ?
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 08h22   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
coté serveur ?

fais toi un joli var_dump ou print_r tu comprendras ce que tu as dans le post
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 13h11   #7
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
Citation:
fais toi un joli var_dump ou print_r tu comprendras ce que tu as dans le post
Merci pour ton aide, mais je n'ai réussi à voir le résultat de mon print_r dans le retour de la requête ajax avec un alert. Je manque de pratique. Malheureusement je n'ai plus le temps de mettre en place l'ajax avec jquery pour le moment, j'ai opté pour rechargement de page moins propre.
Je met en résolu.
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 10h04   #8
Membre confirmé
 
Avatar de arthuro45
 
Arthur Salomon
Développeur du dimanche
Inscription : juillet 2009
Messages : 592
Détails du profil
Informations personnelles :
Nom : Arthur Salomon
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur du dimanche

Informations forums :
Inscription : juillet 2009
Messages : 592
Points : 213
Points : 213
J'ai finalement trouvé comment récupérer en PHP les valeurs de mon tableau "sérializé" par Jquery.
Quelques explications pour les débutants comme moi qui passeraient par là :
test.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$tab = array();
$str = $_GET['refqte']; // Le tableau serializé reçu d'Ajax.
parse_str($str,$tab); // Analyse une requête HTTP.
 
foreach($tab as $cle => $val) { // On boucle sur les résultats.
	if($val!="") {
		$a = explode("-", $cle); // J'explode car $cle contient 2 variables, reference et libellé.
	        $maj = mysql_query("INSERT INTO commande (reference,libelle,quantite) VALUES ('".$a[0]."','".$a[1]."','".$val."')");
	}
}
if($maj) {
	echo "1"; // On renvoie 1 à la fonction "data" de la requête Ajax.
}
Jquery :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
$("#validerCde").click(function() {
      if(confirm("Veuillez confirmer la création de la commande :")) {
             var str = $(".input_cde").serialize();
                $.get("test.php",
                { refqte:str },
                function(data){
                   if(data==1) {
                        alert("Commande enregistrée");
                   }
               });
        } 
         else {
                   return false;
         }
});
arthuro45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 10h50   #9
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
d'avoir partagé cette solution
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 13h48   #10
Invité de passage
 
Inscription : mai 2010
Messages : 1
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 1
Points : 1
Points : 1
Merci!

Je galèrais depuis pas mal de temps sur le sujet!

"parse_str" m'as sauvé! (désolé si ça déterre un topic)
Sebinto est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h04.


 
 
 
 
Partenaires

Hébergement Web