PHP - Récupération des valeurs choix multiple
adoziad
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
adoziad Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
adoziad Messages postés 7 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.
A voir également:
- Php if and or multiple
- Or - Guide
- Spybot search and destroy - Télécharger - Antivirus & Antimalwares
- Ecran multiple pc - Guide
- Easy php - Télécharger - Divers Web & Internet
- Excel cellule choix multiple - Guide
8 réponses
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.
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:
tout en sachant par exemple que _ est un diviseur des valeurs possibles
et que la premiere valeur es 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 :-)
@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 !
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.
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.