Page 1 sur 1
Sélection dans une liste a choix multiple
Posté : 31 janv. 2006, 22:07
par hillou
Bonjour,
Comment puis-je sélectionner plusieurs valeurs dans une liste a choix multiple, sachant que les valeurs sélectionnée sont contenu dans une autre liste ?
Petite précision les listes sont été réalisées avec un SELECT..
Merci de votre réponse
Posté : 31 janv. 2006, 22:31
par Truc
Salut,
pas claire cette question
tu veux séléctionner plusieurs choix ? => "Ctrl + choix"

Forum HTML
tu veux récupérer la séléction apres la validation du formulaire ?
=> ajoute [] à l'attribut name du select: name="nom[]"
si ce n'est pas ça essaie d'être plus précis

Posté : 01 févr. 2006, 22:50
par hillou
désolé je n'est pas été tres clar.
En fait je veux, des que la page web est ouverte, que certaine choses soient deja sélectionnée, et cette sélection se trouve dans une autre liste.
J'espère que ca vous eclaire...
Merci
Posté : 02 févr. 2006, 23:18
par Truc
c'est un peu mieux comme explication, alors je te renvois dans la
FAQ ou tu trouveras ce que tucherches dans un premier temps => préséléctionner une liste.
Par contre je ne sais pas si tu arrives à récupérer les valeurs de autre liste

Posté : 03 févr. 2006, 22:08
par hillou
D'abord merci de ton aide Truc
En fait ce que je voudrais c'est lorsque l'on ouvre la page, les valeurs d'une autre liste ou présélection soit déja séléctionnées.
Est-ce que cette situation en possible ?
Posté : 03 févr. 2006, 23:28
par zehle
c'est possible, c'est le meme principe qu'avec une liste a selection simple.
Posté : 04 févr. 2006, 02:30
par Truc
c'est effectivement possible...
Si tu as du mal pour ce faire il y aura du monde pour te donner un coup de main sur le forum

Posté : 05 févr. 2006, 20:19
par hillou
D'abord merci de vos réponses,
Finalement j'ai fini par trouver,
Je passe ma première liste en revue avec WHILE et MYSQL_FETCH_ARRAY, et je fais un second WHILE et MYSQL_FETCH_ARRAY dans la premiere boule et lorsque l'une des valeurs des deux listes sont identiques je fait un BREAK.
Le traitement de la page est un peu long mais il se termine comme prévu c'est l'essentiel.
Si vous avez une meilleure idée vous pouvez toujours me la soumettre.
Voila le code:
<p align="center"> <font face="Trebuchet MS" color="#000080">
<select name="morceaux[]" size="15" multiple>
<?php
if(!$bd = mysql_connect("localhost","root","root")):
?>
<p align="center"><font face="Trebuchet MS" size="4" color="#FF0000">Connexion à la base de donnée impossible !</font></p>
<?php
else:
mysql_select_db('collection musicale', $bd);
$morceaux = mysql_query("SELECT * FROM `morceaux` ORDER BY `morceau`",$bd);
while($tableau_morceaux = mysql_fetch_array($morceaux)) {
$morceaux_album = mysql_query("SELECT * FROM `morceaux` WHERE `album` LIKE $recherche",$bd);
if(!$morceaux_album):
print "<option value='".$tableau_morceaux[0]."'>".$tableau_morceaux[2]."</option>\n";
else:
while($tableau_morceaux_album = mysql_fetch_array($morceaux_album)) {
if($tableau_morceaux[0] == $tableau_morceaux_album[0]):
print "<option value='".$tableau_morceaux[0]."' selected>".$tableau_morceaux[2]."</option>\n";
break;
else:
endif;
}
if($tableau_morceaux[0] == $tableau_morceaux_album[0]):
else:
print "<option value='".$tableau_morceaux[0]."'>".$tableau_morceaux[2]."</option>\n";
endif;
endif;
}
endif;
?>
</select>
</font></p>
Posté : 05 févr. 2006, 21:19
par Truc
il peut effectivement être très long ce script avec les requetes dans des boucles et encore requetes
si j'ai bien suivis (malgré la mauvaise coloration, la prochaine utilise donc les balises
pour du code :wink: ) $recherche contien un type d'album:
proposition:
[code]<p align="center"> <font face="Trebuchet MS" color="#000080">
<?
if(!$bd = mysql_connect("localhost","root","root"))
{
?>
<p align="center"><font face="Trebuchet MS" size="4" color="#FF0000">Connexion à la base de donnée impossible !</font></p>
<?
}
else
{
?>
<select name="morceaux[]" size="15" multiple>
<?
mysql_select_db('collection musicale', $bd);
$morceaux = mysql_query("SELECT * FROM `morceaux` ORDER BY `morceau`",$bd);
while($tableau_morceaux = mysql_fetch_array($morceaux))
{
$selected = ($recherche == $tableau_morceaux['album']) ? "selected=\"selected\"" : "";
echo "<option value='".$tableau_morceaux[0]."' ".$selected.">".$tableau_morceaux[2]."</option>\n";
}
}
?>
</select>
</font></p>[/code]
la préséléction se fait grâce à:
/*php $selected = ($recherche == $tableau_morceaux['album']) ? "selected=\"selected\"" : ""; /php*/
comme dans le tuto proposé précédemment.
________________________________
Hmm pas moyen de mettre la coloration :-s