Liste déroulante trop longue :'(

WikiRage
Invité n'ayant pas de compte PHPfrance

07 juil. 2012, 18:06

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);

WikiRage
Invité n'ayant pas de compte PHPfrance

07 juil. 2012, 18:15

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

ViPHP
AB
ViPHP | 5818 Messages

07 juil. 2012, 18:56

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>

WikiRage
Invité n'ayant pas de compte PHPfrance

08 juil. 2012, 11:29

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

ViPHP
xTG
ViPHP | 7331 Messages

08 juil. 2012, 12:09

Problème CSS ? :D
T'aurais pas une valeur height en fixe quelque part ? ;)

Mammouth du PHP | 790 Messages

08 juil. 2012, 12:46

le soucis est le size 30 dans le Select, enlève le complètement !
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Petit nouveau ! | 5 Messages

08 juil. 2012, 12:57

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.

WikiRage
Invité n'ayant pas de compte PHPfrance

08 juil. 2012, 13:11

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

ViPHP
AB
ViPHP | 5818 Messages

08 juil. 2012, 18:44

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.

WikiRage
Invité n'ayant pas de compte PHPfrance

08 juil. 2012, 19:59

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 !