Page 1 sur 1

Question sur les listes déroulante

Posté : 09 juil. 2007, 09:28
par angebleu17
Bonjour,

J'aimerais savoir s'il est possible d'avoir plusieurs colonnes à une liste déroulante ? car j'ai une liste déroulante qui affiche tous les départements, donc je peux modifié la hauteur avec size mais peut-on mettre plusieurs colonne ? car cela m'affiche une longue liste et j'aimerais afficher le + possible au lieu de descendre avec le curseur.

merci d'avance pour vos réponses.

Posté : 09 juil. 2007, 14:46
par charabia
Je ne suis pas sûr que c'est faisable. En tout cas je n'ai jamais rien vu de tel sur une liste déroulante. Le code d'une liste correspond à une ligne unique pour chaque <option>, il n'existe rien pour spécifier plusieurs colonnes.

Posté : 09 juil. 2007, 15:28
par béka
effectivement, je ne suis pas sur qu'il est possible d'afficher un menu déroulant sur plusieurs colones. Ce que tu peux faire, peut être, c'est faire choisir une région dans un menu déroulant (il y en a moins) et en fonction de la région choisie, tu affiche les départements qui correspondent

Posté : 09 juil. 2007, 16:00
par angebleu17
oui ça serait une solution.. mais dommage qu'on ne puisse pas mettre plusieurs colonnes.

Posté : 09 juil. 2007, 16:09
par béka
sinon, pour permettre le choix de plusieurs départements, tu peux utiliser les checkbox.

Posté : 09 juil. 2007, 16:46
par angebleu17
oui c'est ce que je pensais, c'est plus simple pour les utilisateurs de cocher plusieurs choses.
mais je n'arrive pas a les afficher dasn un tableau, la 1er colonne afficher les 25er departement, la 2eme colonne, les 25 suivant..etc

voici mon code pour le moment :
$resultat=mysql_query("select * from departements LIMIT 0,25");
		echo'<center><TABLE width="100%" border="0"><div align="center">';
		while ($data=mysql_fetch_array($resultat))
		{
		echo'<TR><TD><INPUT type="checkbox" name="dpt" value="'.$data["num_dpt"].'">'.$data["num_dpt"].' - '.$data["nom_dpt"].'</td>';		
		}		
		$resultat2=mysql_query("select * from departements LIMIT 25,50");
		while ($data2=mysql_fetch_array($resultat2))
		{
		echo'<TD><INPUT type="checkbox" name="dpt" value="'.$data2["num_dpt"].'">'.$data2["num_dpt"].' - '.$data2["nom_dpt"].'</td>';	
		}	
		echo'</TR></center></table></div>';	
Mais ça affiche tout d'affiler..

Posté : 09 juil. 2007, 17:03
par béka
je suis pas sur, mais essais comme ca :
$resultat=mysql_query("select * from departements LIMIT 0,25");
        echo'<center><TABLE width="100%" border="0"><div align="center"><TR>';
        while ($data=mysql_fetch_array($resultat))
        {
        echo'<TD><INPUT type="checkbox" name="dpt" value="'.$data["num_dpt"].'">'.$data["num_dpt"].' - '.$data["nom_dpt"].'</td>';        
        }        
        $resultat2=mysql_query("select * from departements LIMIT 25,50");
        while ($data2=mysql_fetch_array($resultat2))
        {
        echo'<TD><INPUT type="checkbox" name="dpt" value="'.$data2["num_dpt"].'">'.$data2["num_dpt"].' - '.$data2["nom_dpt"].'</td>';    
        }    
        echo'</TR></center></table></div>'; 

Posté : 09 juil. 2007, 22:05
par Aureusms
Essaye avec les balises <optgroup>. Ca te créé pas des colonnes mais sous options. Si ca peux t'aider...

Posté : 10 juil. 2007, 09:43
par angebleu17
ça ne marche pas non plus béka, ça affiche tout en ligne...

je cherche depuis un moment.. mais je n'arrive toujours pas a faire plusieurs colonnes.. :(

Posté : 11 juil. 2007, 13:56
par Ryle
Tu ne peux pas faire plusieurs colonnes dans un select.. c'est pas prévu pour... le tableau de cases à cocher ou de radio semble effectivement être la meilleure solution d'y parvenir.

Le plus simple pour cela, c'est d'utiliser un compteur d'élément et l'opérateur modulo (noté %) qui te donne le reste d'une division. Ainsi tu peux calculer le résultat de ton compteur modulo le nombre de colonne et savoir où tu en es dans tes colonnes pour ajouter les balises <tr> ou </tr> :)

Tu as des exemples pour construire ton tableau sur le forum dans les topics sur les galeries d'images, que ce soit des vignettes ou des cases à cocher, ca ne change pas grand chose ;)