Sélection dans une liste a choix multiple

Petit nouveau ! | 7 Messages

31 janv. 2006, 22:07

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 janv. 2006, 22:31

Salut,

pas claire cette question :-k

tu veux séléctionner plusieurs choix ? => "Ctrl + choix"
:arrow: 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 :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

01 févr. 2006, 22:50

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 févr. 2006, 23:18

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 :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

03 févr. 2006, 22:08

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 ?

Eléphanteau du PHP | 32 Messages

03 févr. 2006, 23:28

c'est possible, c'est le meme principe qu'avec une liste a selection simple.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 févr. 2006, 02:30

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 :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

05 févr. 2006, 20:19

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>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 févr. 2006, 21:19

il peut effectivement être très long ce script avec les requetes dans des boucles et encore requetes :boire4:

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute