RÉCUPÉRER TOUTES LES VALEURS D'UN SELECT MULTIPLE DANS UNE VARIABLE PHP
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 2011
-
24 mars 2003 à 08:48
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
7 août 2011 à 12:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 7 août 2011 à 12:35
Ah oui, je n'avais pas vu la nuance (Toutes les valeurs plutôt que toutes les valeurs sélectionnées).
En fait, dans la plupart des cas, on connaît toutes les valeurs possibles côté serveur (Au moment de la construction du select). Ce que l'on ne sait pas, c'est ce que l'utilisateur va sélectionner parmi celle-ci. Mais bien sûr, il existe des cas où on veut toutes les valeurs.
La solution de KREVETTE m'a paru plus simple (Plus courte, uniquement PHP et HTML...) donc plus intéressante et moins risqué. Cependant elle ne résout pas le même problème. Mais par exemple, tu aurais pu t'inspirer du commentaire de PGPP pour te débarrasser de la ligne de renommage ->
document.forms[liste].elements.Col1.name = "Col1[]";
Donc j'ai commenté un peu vite et je m'en excuse.
McPeter
Messages postés134Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention18 avril 2013 4 août 2011 à 21:40
Heu déjà Pollux84 si tu trouves le php si "crade" je comprends pas pourquoi tu commentes ici .. (surtout quand tu n'as aucunes contributions de sources :\)
Ensuite RT15 le code marche parfaitement ... je pige pas où est le soucis là ?!
Le cade fait précisément ce que le titre annonce ... rien de plus ni de moins
Le script de KREVETTE ne récupère _que_ les valeurs "sélectionnées" ... et non "toute la liste"
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 18 juil. 2007 à 09:45
Heu bah je plussois Pollux84.
C'est un coup à s'enm***** avec la solution du source alors que celle de KREVETTE avec améliration de PGPP marche très bien.
Ce serait très sympa de faire la mise à jour McPeter, d'autant qu'on tombe dessus facilement via Google.
Pollux84
Messages postés15Date d'inscriptionlundi 1 septembre 2003StatutMembreDernière intervention15 février 2009 21 juin 2007 à 16:55
c'est crado tous sa (comme le php dailleur ...) pourquoi ne pas update la source initiale afin que les utilisateurs puisse avoir un code qui marche sans lire les tas de commentaires tous craceux blindés de < > et autre caractère bizard qui ne passe pas ?
McPeter
Messages postés134Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention18 avril 2013 30 mars 2007 à 22:17
vincentforce
Messages postés4Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention15 février 2006 10 juil. 2006 à 14:50
Perso,
J'ai modifié cette fonction pour passer autant de select multiple que l'on souhaite.
Voila le javascript :
function PostSelect(){
//Arguments passés à la fonction, en l'occurence, l'id des select multiple
var args=PostSelect.arguments;
for (i=0; i<(args.length); i++)
{
alert(args[i]);
// On compte le nombre d'item de la liste select
NbCol1 = eval("document.getElementById('"+args[i]+"').length;");
// On lance une boucle pour selectionner tous les items
for(a=0; a<NbCol1; a++){
eval("document.getElementById('"+args[i]+"').options["+a+"].selected = true;");
}
}
// On soumet le formulaire
document.forms.submit();
}
gasmo
Messages postés1Date d'inscriptionmercredi 22 février 2006StatutMembreDernière intervention12 mai 2006 12 mai 2006 à 17:41
Bonjour à tous,
j'ai besoin d'aide, je n'en peux plus de tourner en rond sur mon code. J'ai essayé pas mal de choses proposées ici, mais je ne m'en sors pas... Mon problème est les suivant :
_j'ai une page avec deux listes, et je transfert des données d'une liste à l'autre grâce à cette fonction JS :
function transfert(l1,l2)
{
if (l1.options.selectedIndex>=0)
{
texte = l1.options[l1.options.selectedIndex].text;
valeur = l1.options[l1.options.selectedIndex].value;
o=new Option(texte,valeur);
l2.options[l2.options.length]=o;
l1.options[l1.options.selectedIndex]=null;
}
else
{
alert("Aucun element sélectionné");
}
}
_une fois que l'utilisateur a fini des transférer les données qu'il veut, je voudrai pouvoir les récupérer pour les insérer dans ma base de données. Ma page ressemble à ca :
<form name="ajout" id="ajout" method="post" onsubmit="return validateForm(this)" action="action/Action_LierMag.php">
... // première liste
... // bouton pour faire le transfert entre les deux listes
<select multiple name="liste2[]" id="liste2" size="8">
</select>
Enfin mon action m'envois dans une page appelée Action_LierMag.php, où je souhaite donc récupérer mes données et les traiter.
Merci d'avance, toutes suggestions peut m'aider.
beur81
Messages postés28Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention19 juillet 2006 4 mai 2006 à 22:59
bonjour a tous
j'ai un probleme je ne sais pas comment faire pour mettre la valeur de ma pk_client dans une variable apres l'avoir recupere
d'une requete ci joint mon code
// la variable noms et prenoms proviennent d'un input
avec le code qui suit je recupere le numéro de la pk mais je sais pas cmt faire pour la mettre dans une variable ex $pk_client
$resultats = mysql_query("SELECT pk_client from client where cli_nom='$noms' and cli_prenom='$prenoms'");
while($pret = mysql_fetch_object($resultats))
{
echo "<center>$pret->pk_client
ca marche";
}
evlicorne
Messages postés2Date d'inscriptionjeudi 9 mars 2006StatutMembreDernière intervention 9 mars 2006 9 mars 2006 à 14:38
Ca ne marche pas.
cs_krevette
Messages postés137Date d'inscriptionlundi 14 octobre 2002StatutMembreDernière intervention21 janvier 2009 9 mars 2006 à 14:27
je pense qu'il ne faut pas chercher plus loin que ca :
mcpierrot
Messages postés2Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention10 août 2005 10 août 2005 à 18:39
autant pour moi j ai mal lu le debut ^^
désolé
mcpierrot
Messages postés2Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention10 août 2005 10 août 2005 à 18:38
Je n ai pas le eu le temps de lire tous les commentaires donc je sais pas si ca a deja été dit mais pour pouvoir récupérer les éléments dans un tableau on met []
exemple:
<select name="ss_projet[]" multiple size="4">
avec ca on le tableau $_REQUEST['ss_projet'][]
fluminis
Messages postés73Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention20 juin 2005 14 juin 2005 à 22:59
à mon avis ce que tu veux faire doit etre fait en javascript coté client et non en php cote serveur.
Insere dans ta page html une balise script et tu fais une fonction qui boucle sur tous les elements du select et tu les selectionnes un à un. Tu mets ensuite sur ta page un p'tit lien qui appel la fonction javascript et voila...
cs_cacoun
Messages postés59Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention21 mai 2013 14 juin 2005 à 17:29
Bonjour à tous...
Dans la fonction select multiple, est-il possible par exemple de créer un bouton "tout sélectionner".
Si oui, merci de me dire comment on fait, car là je suis obligé de marqué "appuyer sur ctrl pour en sélectionner plusieurs"
merci d'avance
cs_chouchou59
Messages postés7Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention13 mai 2005 25 févr. 2005 à 17:28
Bonjour à tous.
Merci vatoo pour ta reponse, effectivement ca marche mieux mais c'est pas encore ca car là ca me selectionne tous mes éléments même ceux qui ne sont pas sélectionné.
Si quelqu'un peut m'aider ca serait cool.
merci et bon week end a tous
cs_vatoo
Messages postés55Date d'inscriptionmardi 29 mai 2001StatutMembreDernière intervention 1 juillet 2005 18 févr. 2005 à 15:33
Merci, code très utile.
Effectivement, le script original peut ne pas fonctionner. En effet, il vaut mieux mettre le options[a].selected = "selected", comme l'a mis jeca plutot que options[a].selected=TRUE. Cela semble mieux fonctionner.
cs_chouchou59
Messages postés7Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention13 mai 2005 4 févr. 2005 à 15:09
Bonjour a vous.
Je suis en train de réaliser un planning en php et j'ai le problème de la récupération des données dans mon select multiples.
J'ai repris le code de Mc peter et j'ai l'erreur :
Warning: Invalid argument supplied for foreach()
Donc j'ai essayer le code de jeca et là je n'ai rien du tt qui s'affiche.
C'est pour ces raisons que je vous demande votre aide.
merci d'avance
pgpp
Messages postés58Date d'inscriptiondimanche 16 mai 2004StatutMembreDernière intervention 2 septembre 2004 4 janv. 2005 à 16:53
Pour conclure cette conversation longue de deux ans, je vous propose une bête solution :
Problème :
name='vin[]' fonctionne avec PHP mais pas avec JS
name='vin' fonctionne avec JS mais pas avec PHP
fanf2603
Messages postés1Date d'inscriptiondimanche 2 janvier 2005StatutMembreDernière intervention 2 janvier 2005 2 janv. 2005 à 00:53
cool ça marche
par contre j'aimerais afficher toutes les valeurs de la liste avec juste un truc du type
echo "$valeur";
mais je n'ai que la dernière valeur qui s'affiche !
ou plus simplement le but final est : ou de m'envoyer un mail avec toutes les valeurs du résultat ou bien les insérer dans une table de base de données
Ces deux choses je sais faire quand il s'agit d'une seule variable que ce soit des boutons radio ou un champ de texte, bref, y'a-t-il moyen de rassembler tous ces résultats en une seule variable? ou existe-t-il un autre moyen? MERCI ET BONNE ANNEE !
runan
Messages postés5Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention14 février 2006 28 déc. 2004 à 21:19
merci krevette
juste ce qu'il me fallait
cs_krevette
Messages postés137Date d'inscriptionlundi 14 octobre 2002StatutMembreDernière intervention21 janvier 2009 27 déc. 2004 à 10:49
un truc tout simple pour récupérer les valeurs d'un select multiple
fluminis
Messages postés73Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention20 juin 2005 11 sept. 2004 à 20:28
Salut,
Merci pour ta source, vraiment tres utile.
J'etais confronte a un probleme: je devais recuperer le contenu de deux select et en plus je devais faire des traitements en javascript pour y ajouter des donnees...
Donc j'ai un peu modifier ton script pour qu'une unique fonction javascript puisse etre appelee plusieurs fois sur la page pour traiter plusieurs select dans plusieurs formulaires...
Voila ce que ca donne :
<script>
function PostSelect(myForm,mySelName){
// On compte le nombre d'item de la liste select
NbCol1 = myForm.elements[mySelName].length;
// On lance une boucle pour selectionner tous les items
for (a = 0; a < NbCol1; a++) {
myForm.elements[mySelName].options[a].selected = true;
}
// On modifie l'ID du champ select pour que PHP traite cette
// dernière comme un array
myForm.elements[mySelName].name += "[]";
// On soumet le formulaire
// myForm.submit();
}
</script>
Voila, j'ai commente la derniere ligne pour ne pas envoyer le formulaire. (si plusieurs appels a cette fonction on ne doit pas faire le submit la premiere fois)
Je l'utilise comme suit:
<form name="..." action="..." method="post" onSubmit="PostSelect(this,'select1');PostSelect(this,'select2');return verifForm(this);" >
avec la fonction verifForm qui se charge de faire des traitement et d'envoyer le formulaire...
Voila en esperant que ca puisse servir a quelqu'un.
pgpp
Messages postés58Date d'inscriptiondimanche 16 mai 2004StatutMembreDernière intervention 2 septembre 2004 27 juin 2004 à 10:53
Pour ceux qui voudraient se passer du JavaScript :
Lorsqu'on poste un select multiple du style :
<select name='sel' multiple>
<option>A<option>B<option>C<option>D
</select>
Mettons qu'on sélectionne les options A, C et D, on aura dans la QUERY_STRING :
"sel=A&sel=C&sel=D"
Donc il suffit d'extraire chacune des valeurs pour les mettre dans un tableau :
On récupère ainsi un tableau $sel du type :
Array( [0] => 'A' , [1] => 'C' , [2] => 'D' )
Nerdz
Messages postés56Date d'inscriptionjeudi 27 juin 2002StatutMembreDernière intervention27 janvier 2005 5 juin 2004 à 23:04
Ah jai trouver ...
Jvois pas pk il y avait une boucle pour selectionner tout les éléments ...
Tk pour ceux qui avait un probleme il suffit d'enlever
// On lance une boucle pour selectionner tous les items
for (var a = 0; a < NbCol; a++)
{
cible.options[a].selected = "selected";
}
et sa marche parfaitement :)
Nerdz
Messages postés56Date d'inscriptionjeudi 27 juin 2002StatutMembreDernière intervention27 janvier 2005 5 juin 2004 à 22:55
Chez moi sa marche pas !
Le script rectifier par jeca me retourne toute les valeurs de la liste et celui original ne marche pas du tout ( erreur dans la page )
sdrdis
Messages postés22Date d'inscriptiondimanche 30 septembre 2001StatutMembreDernière intervention30 août 2006 21 déc. 2003 à 12:11
Par ce que dans <option value="Valeur 1">Valeur 1</option> il faut modifier la valeur entre guillemets.
ermorel
Messages postés3Date d'inscriptionmardi 21 octobre 2003StatutMembreDernière intervention20 juillet 2005 21 oct. 2003 à 21:44
Chez moi,
Dans le 1er script de mcpeter, rien ne s'affiche
Dans le script corrigé de jeca, tout s'affiche :
Valeur 1, Valeur 2, ... Valeur 5 et non pas les valeurs sélectionnées
Pouvez-vous m'éclairer.
Par avance, merci.
ermorel
McPeter
Messages postés134Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention18 avril 2013 24 mars 2003 à 14:09
:)
thx
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 24 mars 2003 à 13:14
parce que c'est un "pléonasme" : onclick est évènement javascript.
Le seul cas où c'est utilisé est le javascript sur un lien : [javascript:fonction() ]. Donc, cela n'empêche pas le fonctionnement, mais c'est du code superflu.
En ce qui concerne le tableau d'options, je n'ai ajouté qu'une ligne dans ta fonction, mais j'effectue une opération de moins. Personnellement, j'ai pris l'habitude d'utiliser cette méthode. Pour le reste, il faut demander à des pros du javascript ce qu'ils en pensent, ce que j'aimerais savoir aussi.
A+
McPeter
Messages postés134Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention18 avril 2013 24 mars 2003 à 12:46
oki .
merci pour les corrections sympa de ta part (encore un commentaire constructif ;o) )
petit détails ta syntaxe est plus rapide effectivement, mais je touve qu'une partit de la mienne simplifie l'usage ??
pour l'ID => en le renommant juste avant le traitement de submit(), on peut garder des noms d'élements utilisable directement.. plus simple que de stypuler à chaque fois "...elements['idAvec[]'].."
tu crois pas ?
mais un grand merci quand même car ça eclaircit pas mal :p
petite question ? pourquoi tu dis que onClick="javascript:commande()" c'est pas correct ??
ça fonctionne parfaitement pourtant ..
@++
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 24 mars 2003 à 08:48
Bonjour,
Quelques rectifications sur la copie:
<<l'astuce du "mon_id[]" plante en JavaScript >> => FAUX, cela fonctionne
<<onClick="javascript:PostSelect('Liste1')">> => syntaxe incorrecte :
<<onClick="PostSelect('Liste1')">> => syntaxe correcte.
Ci-dessous, lescript revu en fonction de ce qui précède :
<?php
// Traitement après post et affichage des valeurs du champ select
if (isset($HTTP_POST_VARS["Col"]))
{
foreach ($HTTP_POST_VARS["Col"] as $cle => $valeur)
{
echo $valeur . "
";
}
}
?>
<html>
<head>
<title>Recuperer valeur select dans variable php</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function PostSelect(formulaire)
{
var cible = formulaire.elements["Col[]"];
// On compte le nombre d'item de la liste select
NbCol = cible.length;
// On lance une boucle pour selectionner tous les items
for (var a = 0; a < NbCol; a++)
{
cible.options[a].selected = "selected";
}
// On soumet le formulaire
formulaire.submit();
}
</script>
</head>
7 août 2011 à 12:35
En fait, dans la plupart des cas, on connaît toutes les valeurs possibles côté serveur (Au moment de la construction du select). Ce que l'on ne sait pas, c'est ce que l'utilisateur va sélectionner parmi celle-ci. Mais bien sûr, il existe des cas où on veut toutes les valeurs.
La solution de KREVETTE m'a paru plus simple (Plus courte, uniquement PHP et HTML...) donc plus intéressante et moins risqué. Cependant elle ne résout pas le même problème. Mais par exemple, tu aurais pu t'inspirer du commentaire de PGPP pour te débarrasser de la ligne de renommage ->
document.forms[liste].elements.Col1.name = "Col1[]";
Donc j'ai commenté un peu vite et je m'en excuse.
4 août 2011 à 21:40
Ensuite RT15 le code marche parfaitement ... je pige pas où est le soucis là ?!
Le cade fait précisément ce que le titre annonce ... rien de plus ni de moins
Le script de KREVETTE ne récupère _que_ les valeurs "sélectionnées" ... et non "toute la liste"
18 juil. 2007 à 09:45
C'est un coup à s'enm***** avec la solution du source alors que celle de KREVETTE avec améliration de PGPP marche très bien.
Ce serait très sympa de faire la mise à jour McPeter, d'autant qu'on tombe dessus facilement via Google.
21 juin 2007 à 16:55
30 mars 2007 à 22:17
en Gros
<?php
$list = array( 'option_1', 'option_2', 'option_3', 'option_4', 'option_' );
$mySelect = '';
foreach( $list as $option )
{
if( $_POST[ 'mySelect' ] == $out ) $select = ' selected="selected"' else '';
$mySelect .= '<option' . $select . '>' . $option . '</option>';
}
?>
<select id="mySelect" name="mySelect">
<?php echo $mySelect; ?>
</select>
@++
10 juil. 2006 à 14:50
J'ai modifié cette fonction pour passer autant de select multiple que l'on souhaite.
Voila le javascript :
function PostSelect(){
//Arguments passés à la fonction, en l'occurence, l'id des select multiple
var args=PostSelect.arguments;
for (i=0; i<(args.length); i++)
{
alert(args[i]);
// On compte le nombre d'item de la liste select
NbCol1 = eval("document.getElementById('"+args[i]+"').length;");
// On lance une boucle pour selectionner tous les items
for(a=0; a<NbCol1; a++){
eval("document.getElementById('"+args[i]+"').options["+a+"].selected = true;");
}
}
// On soumet le formulaire
document.forms.submit();
}
Voila le code HTML :
<form name="Liste1" method="post" action="votrepage.php" onSubmit="PostSelect('multiple1','multiple2')">
<select name="multiple1" id="multiple1" 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>
<select name="multiple2" id="multiple1" 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>
</form>
Et en PHP (sur votrepage.php), il suffit de faire :
<?php
print_r($_POST["multiple1"]);
print_r($_POST["multiple2"]);
?>
12 mai 2006 à 17:41
j'ai besoin d'aide, je n'en peux plus de tourner en rond sur mon code. J'ai essayé pas mal de choses proposées ici, mais je ne m'en sors pas... Mon problème est les suivant :
_j'ai une page avec deux listes, et je transfert des données d'une liste à l'autre grâce à cette fonction JS :
function transfert(l1,l2)
{
if (l1.options.selectedIndex>=0)
{
texte = l1.options[l1.options.selectedIndex].text;
valeur = l1.options[l1.options.selectedIndex].value;
o=new Option(texte,valeur);
l2.options[l2.options.length]=o;
l1.options[l1.options.selectedIndex]=null;
}
else
{
alert("Aucun element sélectionné");
}
}
_une fois que l'utilisateur a fini des transférer les données qu'il veut, je voudrai pouvoir les récupérer pour les insérer dans ma base de données. Ma page ressemble à ca :
<form name="ajout" id="ajout" method="post" onsubmit="return validateForm(this)" action="action/Action_LierMag.php">
... // première liste
... // bouton pour faire le transfert entre les deux listes
<select multiple name="liste2[]" id="liste2" size="8">
</select>
Enfin mon action m'envois dans une page appelée Action_LierMag.php, où je souhaite donc récupérer mes données et les traiter.
Merci d'avance, toutes suggestions peut m'aider.
4 mai 2006 à 22:59
j'ai un probleme je ne sais pas comment faire pour mettre la valeur de ma pk_client dans une variable apres l'avoir recupere
d'une requete ci joint mon code
// la variable noms et prenoms proviennent d'un input
avec le code qui suit je recupere le numéro de la pk mais je sais pas cmt faire pour la mettre dans une variable ex $pk_client
$resultats = mysql_query("SELECT pk_client from client where cli_nom='$noms' and cli_prenom='$prenoms'");
while($pret = mysql_fetch_object($resultats))
{
echo "<center>$pret->pk_client
ca marche";
}
9 mars 2006 à 14:38
9 mars 2006 à 14:27
$ret.=' <select name="Col1[0][]" id="Col1[0]" size="4" multiple style="width: 150px">';
$ret.=' <option value="Valeur 1" selected>Valeur 1</option>';
$ret.=' <option value="Valeur 2" selected>Valeur 2</option>';
...
$ret.=' </select>
';
$ret.=' <select name="Col1[1][]" id="Col1[1]" size="4" multiple style="width: 150px">';
$ret.=' <option value="Valeur 6" selected>Valeur 6</option>';
$ret.=' <option value="Valeur 7" selected>Valeur 7</option>';
...
$ret.=' </select>
';
J'ai n'ais pas pris le temps de tester et je ne suis pas sur que le JS fonctionne avec cet id.
Elvicorne,
Je te laisse Tester
9 mars 2006 à 14:08
Qq mois ont passé depuis la dernière remarque.
En voici une nouvelle.
Comment faire pour traiter une collection de select du type :
$ret.=' <select name="Col1[0]" size="4" multiple style="width: 150px">';
$ret.=' <option value="Valeur 1" selected>Valeur 1</option>';
$ret.=' <option value="Valeur 2" selected>Valeur 2</option>';
$ret.=' <option value="Valeur 3" selected>Valeur 3</option>';
$ret.=' <option value="Valeur 4" selected>Valeur 4</option>';
$ret.=' <option value="Valeur 5" selected>Valeur 5</option>';
$ret.=' </select>
';
$ret.=' <select name="Col1[1]" size="4" multiple style="width: 150px">';
$ret.=' <option value="Valeur 6" selected>Valeur 6</option>';
$ret.=' <option value="Valeur 7" selected>Valeur 7</option>';
$ret.=' <option value="Valeur 8" selected>Valeur 8</option>';
$ret.=' <option value="Valeur 9" selected>Valeur 9</option>';
$ret.=' <option value="Valeur 10" selected>Valeur 10</option>';
$ret.=' </select>
';
Je n'arrive pas a trouver la solution.
10 août 2005 à 18:39
désolé
10 août 2005 à 18:38
exemple:
<select name="ss_projet[]" multiple size="4">
avec ca on le tableau $_REQUEST['ss_projet'][]
si tout ca est encore flou allez voir là :
http://www.phpindex.com/trucsetastuces/trucsetastuces_lire.php3?element=19
14 juin 2005 à 22:59
Insere dans ta page html une balise script et tu fais une fonction qui boucle sur tous les elements du select et tu les selectionnes un à un. Tu mets ensuite sur ta page un p'tit lien qui appel la fonction javascript et voila...
14 juin 2005 à 17:29
Dans la fonction select multiple, est-il possible par exemple de créer un bouton "tout sélectionner".
Si oui, merci de me dire comment on fait, car là je suis obligé de marqué "appuyer sur ctrl pour en sélectionner plusieurs"
merci d'avance
25 févr. 2005 à 17:28
Merci vatoo pour ta reponse, effectivement ca marche mieux mais c'est pas encore ca car là ca me selectionne tous mes éléments même ceux qui ne sont pas sélectionné.
Si quelqu'un peut m'aider ca serait cool.
merci et bon week end a tous
18 févr. 2005 à 15:33
Effectivement, le script original peut ne pas fonctionner. En effet, il vaut mieux mettre le options[a].selected = "selected", comme l'a mis jeca plutot que options[a].selected=TRUE. Cela semble mieux fonctionner.
4 févr. 2005 à 15:09
Je suis en train de réaliser un planning en php et j'ai le problème de la récupération des données dans mon select multiples.
J'ai repris le code de Mc peter et j'ai l'erreur :
Warning: Invalid argument supplied for foreach()
Donc j'ai essayer le code de jeca et là je n'ai rien du tt qui s'affiche.
C'est pour ces raisons que je vous demande votre aide.
merci d'avance
4 janv. 2005 à 16:53
Problème :
name='vin[]' fonctionne avec PHP mais pas avec JS
name='vin' fonctionne avec JS mais pas avec PHP
Solution :
<select multiple name="vin[]" id="vin">
Ainsi autant JS que PHP peut être utilisé !
Bonne continuation à tout le monde !
2 janv. 2005 à 02:16
for($i=0; $i<count($vin); $i++){
echo $vin[$i].'
';
}
si tu utilise cette technique...
<select multiple name="vin[]">
<option value="bordeaux">bordeaux</option>
<option value="beaujolais">beaujolais</option>
<option value="loire">loire</option>
</select>
krevette
Bonne Année 2005
2 janv. 2005 à 00:53
par contre j'aimerais afficher toutes les valeurs de la liste avec juste un truc du type
echo "$valeur";
mais je n'ai que la dernière valeur qui s'affiche !
ou plus simplement le but final est : ou de m'envoyer un mail avec toutes les valeurs du résultat ou bien les insérer dans une table de base de données
Ces deux choses je sais faire quand il s'agit d'une seule variable que ce soit des boutons radio ou un champ de texte, bref, y'a-t-il moyen de rassembler tous ces résultats en une seule variable? ou existe-t-il un autre moyen? MERCI ET BONNE ANNEE !
28 déc. 2004 à 21:19
juste ce qu'il me fallait
27 déc. 2004 à 10:49
<select multiple name="vin[]">
<option value="bordeaux">bordeaux</option>
<option value="beaujolais">beaujolais</option>
<option value="loire">loire</option>
</select>
trouver sur nexen.net
http://www.nexen.net/docs/php/annotee/language.variables.external.form.php
ciao @++
11 sept. 2004 à 20:28
Merci pour ta source, vraiment tres utile.
J'etais confronte a un probleme: je devais recuperer le contenu de deux select et en plus je devais faire des traitements en javascript pour y ajouter des donnees...
Donc j'ai un peu modifier ton script pour qu'une unique fonction javascript puisse etre appelee plusieurs fois sur la page pour traiter plusieurs select dans plusieurs formulaires...
Voila ce que ca donne :
<script>
function PostSelect(myForm,mySelName){
// On compte le nombre d'item de la liste select
NbCol1 = myForm.elements[mySelName].length;
// On lance une boucle pour selectionner tous les items
for (a = 0; a < NbCol1; a++) {
myForm.elements[mySelName].options[a].selected = true;
}
// On modifie l'ID du champ select pour que PHP traite cette
// dernière comme un array
myForm.elements[mySelName].name += "[]";
// On soumet le formulaire
// myForm.submit();
}
</script>
Voila, j'ai commente la derniere ligne pour ne pas envoyer le formulaire. (si plusieurs appels a cette fonction on ne doit pas faire le submit la premiere fois)
Je l'utilise comme suit:
<form name="..." action="..." method="post" onSubmit="PostSelect(this,'select1');PostSelect(this,'select2');return verifForm(this);" >
avec la fonction verifForm qui se charge de faire des traitement et d'envoyer le formulaire...
Voila en esperant que ca puisse servir a quelqu'un.
27 juin 2004 à 10:53
Lorsqu'on poste un select multiple du style :
<select name='sel' multiple>
<option>A<option>B<option>C<option>D
</select>
Mettons qu'on sélectionne les options A, C et D, on aura dans la QUERY_STRING :
"sel=A&sel=C&sel=D"
Donc il suffit d'extraire chacune des valeurs pour les mettre dans un tableau :
$qs=explode('&',$_SERVER['QUERY_STRING']);
$i=0;
while(list(,$sel)=each($qs))
if(substr($ing,0,5)=='sel=')
$sel[$i++]=substr($sel,5);
On récupère ainsi un tableau $sel du type :
Array( [0] => 'A' , [1] => 'C' , [2] => 'D' )
5 juin 2004 à 23:04
Jvois pas pk il y avait une boucle pour selectionner tout les éléments ...
Tk pour ceux qui avait un probleme il suffit d'enlever
// On lance une boucle pour selectionner tous les items
for (var a = 0; a < NbCol; a++)
{
cible.options[a].selected = "selected";
}
et sa marche parfaitement :)
5 juin 2004 à 22:55
Le script rectifier par jeca me retourne toute les valeurs de la liste et celui original ne marche pas du tout ( erreur dans la page )
21 déc. 2003 à 12:11
21 oct. 2003 à 21:44
Dans le 1er script de mcpeter, rien ne s'affiche
Dans le script corrigé de jeca, tout s'affiche :
Valeur 1, Valeur 2, ... Valeur 5 et non pas les valeurs sélectionnées
Pouvez-vous m'éclairer.
Par avance, merci.
ermorel
24 mars 2003 à 14:09
thx
24 mars 2003 à 13:14
Le seul cas où c'est utilisé est le javascript sur un lien : [javascript:fonction() ]. Donc, cela n'empêche pas le fonctionnement, mais c'est du code superflu.
En ce qui concerne le tableau d'options, je n'ai ajouté qu'une ligne dans ta fonction, mais j'effectue une opération de moins. Personnellement, j'ai pris l'habitude d'utiliser cette méthode. Pour le reste, il faut demander à des pros du javascript ce qu'ils en pensent, ce que j'aimerais savoir aussi.
A+
24 mars 2003 à 12:46
merci pour les corrections sympa de ta part (encore un commentaire constructif ;o) )
petit détails ta syntaxe est plus rapide effectivement, mais je touve qu'une partit de la mienne simplifie l'usage ??
pour l'ID => en le renommant juste avant le traitement de submit(), on peut garder des noms d'élements utilisable directement.. plus simple que de stypuler à chaque fois "...elements['idAvec[]'].."
tu crois pas ?
mais un grand merci quand même car ça eclaircit pas mal :p
petite question ? pourquoi tu dis que onClick="javascript:commande()" c'est pas correct ??
ça fonctionne parfaitement pourtant ..
@++
24 mars 2003 à 08:48
Quelques rectifications sur la copie:
<<l'astuce du "mon_id[]" plante en JavaScript >> => FAUX, cela fonctionne
<<onClick="javascript:PostSelect('Liste1')">> => syntaxe incorrecte :
<<onClick="PostSelect('Liste1')">> => syntaxe correcte.
Ci-dessous, lescript revu en fonction de ce qui précède :
<?php
// Traitement après post et affichage des valeurs du champ select
if (isset($HTTP_POST_VARS["Col"]))
{
foreach ($HTTP_POST_VARS["Col"] as $cle => $valeur)
{
echo $valeur . "
";
}
}
?>
<html>
<head>
<title>Recuperer valeur select dans variable php</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function PostSelect(formulaire)
{
var cible = formulaire.elements["Col[]"];
// On compte le nombre d'item de la liste select
NbCol = cible.length;
// On lance une boucle pour selectionner tous les items
for (var a = 0; a < NbCol; a++)
{
cible.options[a].selected = "selected";
}
// On soumet le formulaire
formulaire.submit();
}
</script>
</head>
<form name="Liste1" method="post" action="">
<select name="Col[]" size="4" multiple style="width: 150px">
<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>
</form>
</html>