Page 1 sur 1

Liste déroulante trop longue :'(

Posté : 07 juil. 2012, 18:06
par WikiRage
Bonjour à tous,
$query_users = "SELECT * FROM utilisateurs ORDER BY nom ASC"; // ORDER BY renvoi les données triées (ici par nom croissant)
$users = mysql_query($query_users, $dbprotect) or die(mysql_error());
$row_users = mysql_fetch_assoc($users);

Liste déroulante trop longue :'(

Posté : 07 juil. 2012, 18:15
par WikiRage
J'ai loupé mon coup au-dessus...désolé. Je reprend ;)
$query_users = "SELECT * FROM utilisateurs ORDER BY nom ASC";
$users = mysql_query($query_users, $dbprotect) or die(mysql_error());
$row_users = mysql_fetch_assoc($users);

<label for="tech">Choix du technicien :</label><br />
  <select name="tech" id="tech" size="30" >
	<?php
	do {
	?>
	<option value="<?php echo $row_users['id_user']?>">
	<?php if($row_users['privilege']== "admin") echo ">> "; echo $row_users['nom']." ".$row_users['prenom']." (".$row_users['login'].")";      if($row_users['privilege']== "admin") echo " <<"?>
	</option>
	<?php
	} while ($row_users = mysql_fetch_assoc($users));
	$rows = mysql_num_rows($users);
	if($rows > 0) {
	mysql_data_seek($users, 0);
	$row_users = mysql_fetch_assoc($users);
	}
	?>
	</select>
Ce code fonctionne très bien sauf à un détail près : la liste déroulante déroule plus que les 3 entrées de ma base sql de test ! Je n'ai pas compté mais au moins 30 lignes blanches sont sous mes 3 entrées. Pourquoi ??? :priere:
@+WikiRage

Re: Liste déroulante trop longue :'(

Posté : 07 juil. 2012, 18:56
par AB
A quoi servent les lignes :
        $rows = mysql_num_rows($users);
        if($rows > 0) {
        mysql_data_seek($users, 0);
        $row_users = mysql_fetch_assoc($users);
        }
Pourquoi tu fais pas plus simplement :
<?php
$query_users = "SELECT * FROM utilisateurs ORDER BY nom ASC";
$users = mysql_query($query_users, $dbprotect) or die(mysql_error());
?>
<label for="tech">Choix du technicien :</label><br />
<select name="tech" id="tech" size="30" >
        <?php
        while ($row_users = mysql_fetch_assoc($users)) 
		{
			$lib = $row_users['nom'].' '.$row_users['prenom'].' ('.$row_users['login'].')';
			if($row_users['privilege'] == "admin") $lib = '>> '.$lib.' <<';
			?>
        	<option value="<?php echo $row_users['id_user']?>"><?php echo $lib ?></option>
        <?php
        } ?>
</select>

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 11:29
par WikiRage
Effectivement c'est plus lisible. Mais ca donne le même résultat :
Image

La question : comment réduire la balise "select" pour n'afficher que les 3 users ?... j'ai beau triturer bidouiller cafouiller imaginer, je sèche :mrgreen:
Normalement, on pourrait penser ne voir que 2 lignes et un ascenseur pour voir les suivantes, non ?
Un indice ?

@+ WikiRage

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 12:09
par xTG
Problème CSS ? :D
T'aurais pas une valeur height en fixe quelque part ? ;)

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 12:46
par juliette
le soucis est le size 30 dans le Select, enlève le complètement !

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 12:57
par Adanorm
Ou alors remplace le "30" par une valeur variable.

Par exemple améliore ta requete SQL ainsi :

Code : Tout sélectionner

"SELECT *,count(*) as nbr_result FROM utilisateurs ORDER BY nom ASC";
et donc remplace 30 par :

Code : Tout sélectionner

<?php echo $row_users['nbr_result'] ?>
Et sinon, petit conseil "maintenabilité", c'est SELECT * c'est dangereux ;), préfère une liste des colonnes dont tu as vraiment besoin. Au cas ou un jour tu changes la structure de ta table.

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 13:11
par WikiRage
C'est tellement bête des fois #-o ; c'est effectivement ce pourri de "size" !

A ma décharge, le nombre de lignes de la page php et la fatigue m'ont flouté les neurones.
MERCI beaucoup =D>

@+WikiRage

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 18:44
par AB
Ah oui je suis passé à côté, y'avait d'autres choses assez confuses qui m'ont piqué les yeux en premier.

C'est vrai que sauf exception l'attribut size est plus utile dans les select multiple, dans les select simple on ne l'utilise pratiquement jamais.

Re: Liste déroulante trop longue :'(

Posté : 08 juil. 2012, 19:59
par WikiRage
hihi, l'oeuvre d'un débutant ^^

J'ai débuté hier....par le site "www.siteduzero.com". J'avoue effectuer beaucoup de copier/coller et d'essais en tout genre.
Mais je trouve que j'avance plutôt bien, même si je fais des erreurs de jeunesse :lol:

Cet aprem j'ai cherché à faire un truc et au bout de 5h de recherches...mais je vais ouvrir un new topic ;)

Merci vraiment à vous !