Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 18/01/2011, 16h04   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut PHP - Récupération des valeurs choix multiple

Bonjour,

Tout d'abord, merci pour l'attention que vous portez à mon post.

J'ai un petit problème de récupération des valeurs d'une liste à choix multiple dans une table.

Tout d'abord, j'ai une table avec une seule ligne. A l'aide d'un bouton, cela me permet d'ajouter une autre ligne (dynamique) sur ma table. Au « submit », je récupère les valeurs de la table avec PHP :
Code :
1
2
3
4
5
6
7
8
 
<?php 
$txtbox = $_POST['nom']; 
 
foreach($txtbox as $a => $b) 
 
echo "Nom: $txtbox[$a] <br />"; 
?>
Jusque la pas de problème.

J'ai ajouté une colonne "Col1" dans ma table "<TABLE> ... >/TABLE>" avec choix multiple:
Code :
1
2
3
4
5
6
7
8
9
10
<td> 
<select name="Col1[]" size="4" multiple> 
<option value="Valeur 1">Valeur 1</option> 
<option value="Valeur 2">Valeur 2</option> 
<option value="Valeur 3">Valeur 3</option> 
<option value="Valeur 4">Valeur 4</option> 
<option value="Valeur 5">Valeur 5</option> 
</select> 
</td>
j'ai ajouté dans le code PHP
Code :
1
2
3
4
5
6
7
8
9
<?php 
$txtbox = $_POST['nom']; 
$Col1 = $_POST['Col1'];

foreach($txtbox as $a => $b) 

echo "Nom: $txtbox[$a] , $Col1[$a] <br />"; 
?>
Mon problème c'est que je n'obtiens que la 1er valeur de ma selection multiple. Ma question:
Comment puis-je faire une boucle par ligne afin de récuperer toutes mes valeurs de $Col1 ? puis faire un reset value pour récuperer à nouveau les valeurs pour la ligne suivante ? (foreach($txtbox))

Ex:
Nom : Didier, Valeur 1, Valeur 2
Nom : Jean-Claude, Valeur 2, Valeur 4

Il peut avoir autant de ligne qu'en souhaite, donc txtbox & Col1 peuvent être 2 comme 100 ...

D'avance merci pour votre aide.
adoziad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 17h46   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Ton premier code, meme s'il fonctionne, n'est déjà pas bon
Code :
1
2
3
4
5
6
 
<?php 
foreach ($_POST['nom'] as $value) {
   echo "Nom: $value <br />";
}
?>
Ensuite il faut que tu aies un index commun entre chaque champ input et chaque liste déroulante associée.

Code :
1
2
echo '<input type="text" name="nom[' . $i . ']" />';
echo '<select name="col[' $i . '][]" size="4" multiple >';
Ce qui nous donne :
Code :
1
2
3
4
5
6
7
8
9
 
<?php 
foreach ($_POST['nom'] as $i=>$nom) {
echo "Nom: $nom<br />";
foreach ($_POST['col'][$i] as $col) {
   echo "Col: $col<br />";
}
}
?>
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2011, 11h15   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Bonjour,

Merci pour ton message.

J'ai réctifié le 1er code, ça marche toujours, si tu dis que c'est la façon correcte de faire le code, je te crois

En se qui concerne la 2ieme partie, et pour ajouter l'index, il faut faire cela dans mon <table> ... </table>, est-ce correcte? l'autre question, la page de ma table est en html, le code ci-dessus est en php... La question va de sois

Voici le lien sur la page test, tu peux cliquer sur envoyer et tu verras les résultats: http://lebreak.3e-consultancy-soluti...nde/index.html

Encore merci pour ton aide.

Bàt
adoziad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 14h47   #4
Futur Membre du Club
 
Homme Sébastien Jover
Ingénieur d'étude
Inscription : mars 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Jover
Âge : 31
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 22
Points : 17
Points : 17
Si j'ai bien compris ton problème voilà ce qu'il faut que tu fasses:

A chaque nouvelle ligne que tu crées il faut que ta colonne de select multiple porte un autre nom. exemple :
*1° ligne: nom[] et col0[]
*2° ligne: nom[] et col1[]
*3° ligne: nom[] et col2[]

Après tu les exploite de la façon suivante en php:
(j'utilise $_REQUEST pour récupérer ma variable car normalement l'option register_globals doit être fixée à "off" par soucis de sécurisation de ton code)

Code :
1
2
3
4
5
6
7
foreach($_REQUEST['nom'] as $key=>$nom){
echo 'Nom: '.$nom.' => Commande: ';
foreach($_REQUEST['col'.$key] as $choice){
echo $choice.',';
}
echo '<br/>';
}
Je n'ai pas testé le code mais je ne pense pas m'être trompé. ^^
cr0wseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 13h24   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
En effet, je penses que c'est la meilleure solution à faire, mais, je ne sais pas comment faire "incrémenter" le nom dans mon code HTML. quelqu'un à une idée ?

Vu que c'est ajout et suppression des lignes automatiqueent par l'utilisateur, cela doit se faire d'une manière automatique "le nom" aussi.

D'avance merci pour l'aide.
adoziad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 14h35   #6
Futur Membre du Club
 
Homme Sébastien Jover
Ingénieur d'étude
Inscription : mars 2010
Messages : 22
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Jover
Âge : 31
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 22
Points : 17
Points : 17
Citation:
Envoyé par adoziad Voir le message
En effet, je penses que c'est la meilleure solution à faire, mais, je ne sais pas comment faire "incrémenter" le nom dans mon code HTML. quelqu'un à une idée ?

Vu que c'est ajout et suppression des lignes automatiqueent par l'utilisateur, cela doit se faire d'une manière automatique "le nom" aussi.

D'avance merci pour l'aide.
Vu que tu utilises javascript pour générer une nouvelle ligne il te faut rajouter une variable "globale" à ton script qui mémorise le nombre de lignes et tu concatène ce chiffre au nom de ton champ.

Exemple de code:
Code :
1
2
nouvelElement.setAttribute('name','col'+counter+'[]');
counter++;
cr0wseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h45.


 
 
 
 
Partenaires

Hébergement Web