PHP - Récupération des valeurs choix multiple
adoziad
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
adoziad Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
adoziad Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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 sur ma table. Au « submit », je récupère les valeurs de la table avec PHP :
<html>
...
<TD><INPUT type="text" name="nom[]"/></TD>
...
</html>
<?php
$txtbox = $_POST['nom'];
foreach($txtbox as $a => $b)
echo "Nom: $txtbox[$a] <br />";
?>
Jusqu'à présent ça fonctionne sans problème.
J'ai ajouté une colonne sur ma table « Col1 » avec choix multiple:
<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
$Col1 = $_POST['Col1'];
Comment puis-je récupérer la ou les valeurs de Col1 de la façon suivante :
Nom : Didier, Valeur 1, Valeur 2
Nom : Jean-Claude, Valeur 2, Valeur 4
D'avance merci pour votre aide.
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 sur ma table. Au « submit », je récupère les valeurs de la table avec PHP :
<html>
...
<TD><INPUT type="text" name="nom[]"/></TD>
...
</html>
<?php
$txtbox = $_POST['nom'];
foreach($txtbox as $a => $b)
echo "Nom: $txtbox[$a] <br />";
?>
Jusqu'à présent ça fonctionne sans problème.
J'ai ajouté une colonne sur ma table « Col1 » avec choix multiple:
<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
$Col1 = $_POST['Col1'];
Comment puis-je récupérer la ou les valeurs de Col1 de la façon suivante :
Nom : Didier, Valeur 1, Valeur 2
Nom : Jean-Claude, Valeur 2, Valeur 4
D'avance merci pour votre aide.
8 réponses
-
qu'est ce que tu appelles une table ?!?? ... un tableau ?
-
Salut, enlève le [] la balise select n'est pas un tableau puisqu'il n'y a qu'un choix possible pas comme les cases à cocher et c'est là qu'on utilise []
-
Bonsoir,
Voici mon code un plus au complet afin de vous permettre de comprendre mieux:
<HTML>
<HEAD>
<TITLE> Add/Remove dynamic rows in HTML table </TITLE>
<SCRIPT language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[0].cells[i].innerHTML;
//alert(newcell.childNodes);
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
}
}
}
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for(var i=0; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
if(rowCount <= 1) {
alert("Cannot delete all the rows.");
break;
}
table.deleteRow(i);
rowCount--;
i--;
}
}
}catch(e) {
alert(e);
}
}
function addtxt(input) {
var obj=document.getElementById(input)
obj.value+="blah test 123"
}
function addtext() {
var newtext = "Cornichon";
document.myform.outputtext.value += newtext;
}
function PostSelect(myform)
{
// On compte le nombre d'item de la liste select
NbCol1 = document.forms[myform].elements.Col1.length;
// On lance une boucle pour selectionner tous les items
for (a = 0; a < NbCol1; a++)
{
document.forms[myform].elements.Col1.options[a].selected = TRUE;
}
// On modifie l'ID du champ select pour que PHP traite cette
// dernière comme un array
document.forms[myform].elements.Col1.name = "Col1[]";
// On soumet le formulaire
document.forms[myform].submit();
}
</SCRIPT>
</HEAD>
<BODY>
<table id="tableheader" width="750px" border="1">
<tr>
<td width="2.9%"></td>
<td width="18%">Nom</td>
<td width="31.1%">Type commande</td>
<td width="14.7%">Pain</td>
<td width="20.3%">Boisson</td>
<td width="20%">Crudité</td>
</tr>
</table>
<form name="myform" method="post" action="bon_commande.php">
<TABLE id="dataTable" width="750px" border="1">
<TR>
<TD><INPUT type="checkbox" name="chk[]"/></TD>
<TD><INPUT type="text" name="nom[]"/></TD>
<TD>
<TD>
<SELECT name="boisson[]">
<OPTION value=""> </OPTION>
<OPTION value="Coca">Coca</OPTION>
<OPTION value="Coca light">Coca light </OPTION>
<OPTION value="Coca zero">Coca zero</OPTION>
<OPTION value="Fanta">Fanta</OPTION>
<OPTION value="Fanta light">Fanta light</OPTION>
</SELECT>
</TD>
<td width="28%">
<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>
</TR>
</TABLE>
...
Voilà comme ça vous avez un grande partie du code.
@rudak
voir code ci-dessus.
@niconovice
Il y a d'autre liste déroulante mais avec seulemet une valeur et cela marche plutot bien mais pas sur la multi selection.
Encore merci a vous les gars. -
Select n'envoit que la valeur selectionner:
il te faut modifier ton code par exemple en mettant par exemple dans les value des options:
<option value="valeur1_valeur2_valeur3">nom valeur 1</option> ... <option value="valeur3_valeur1_valeur2">nom valeur 3</option>
tout en sachant par exemple que _ est un diviseur des valeurs possibles
et que la premiere valeur es la valeur selectionner -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
@xamurai
Malheureusement, votre solution ne me convienne pas. Le but est de sélectionner une ou plusieurs valeurs et il n'y a pas d'ordre. C'est à dire, ce n'est pas par ce qu'on choisi la valeur 3 qu'on souhaite avoir le 1 et le 2 ...
Merci quand même :-) -
Salut Adoziad,
ton PHP ne se limite qu'à un foreach ? pourquoi ne pas faire un vrai script de formulaire en testant les cases ?
Et puis autre chose aussi tu comptes récupérer 2 valeurs à partir d'un select ??
Si tu cherches un bon casse tête, mets toi à l'informatique ! -
Salut niconovice,
En effet, mon PHP se limite à un foreach. La question, est-il possible d'inclure un foreach dans un autre ?
Je m'explique, pour la 1er partie, j'ajoute autant de lignes que je veux et je récupère les valeur avec "foreach".
Peut-on limiter le 2ieme "foreach" dans une seul ligne et faire "reset value" pour refaire la boucle à nouveau sur la ligne suivante ?
Théoriquement, c'est le moyen le plus "facile" non ? Voici le lien sur mon site de test :
http://lebreak.3e-consultancy-solutions.be/commande/index.html
Tu peux faire "Envoyer" dans la "Commande 2" sans problème, il envoit sur une autre page c'est tout.
Encore merci pour ton aide. -
@ niconovice
Je n'ai rien reçu...
@ xamurai
Je ne m'y connais pas en ajax et JQUERY. Je pense être prêt du but, en tout cas je pense, dans mon code ci-dessus.