Page 1 sur 1

Pb liste déroulante

Posté : 06 juil. 2007, 14:32
par laeti17
Bonjour,

Je suis novice en programmation et j'ai un pb avec une liste déroulante.
Le contenu est le résultat d'une requête dans une base de données Postgres. Mes données s'affichent les unes à la suite des autres alors que j'aimerai obtenir une liste.
Pouvez-vous m'aider, svp?

Voici mon bout de code:

<TR>
<TD><font face="Verdana" size="2">Code Postal :</font></TD>
<TD><select size="1"><option name="Code_Postal">
				 <?php
						// requête sql
						$sql = "SELECT DISTINCT com_cp FROM commune ORDER BY com_cp asc";
	
						// on sélectionne toutes les entrées de la table
						$req=pg_query($sql) or die('Erreur SQL !'.$sql.'<br>'.pg_resul_error());
						
						//On affiche ces entrées
						while ($line=pg_fetch_array($req))
						{
							echo $line['com_cp'];
							echo "<br/>";
						}
				?></select> </TD>
[/code]

Posté : 06 juil. 2007, 15:06
par thehawk
Ton probleme correspond plus au forum "Debutant PHP" ....

Mais bon ton erreur proveiny de ta boucle qui renvoi des données inapropriées

Donc tu as fait ceci :
while ($line=pg_fetch_array($req))
                        {
                            echo $line['com_cp'];
                            echo "<br/>";
                        } 
Qui affiche tes resultats a la suite
le resultats de cette boucles donne par exemple :

Code : Tout sélectionner

<TR> <TD><font face="Verdana" size="2">Code Postal :</font></TD> <TD><select size="1"><option name="Code_Postal"> 1<br>2<br>3<br>4
Voit tu ce qui cloche ?

Or si j'ai bien compris tu souhaiterai quelque chose comme :

Code : Tout sélectionner

<TR> <TD><font face="Verdana" size="2">Code Postal :</font></TD> <TD><select size="1" name="Code_Postal"> <option>1</option><option>2</option> <option>3</option><option>4</option></select>
Un petit indice regarde plus preciemsent cette ligne : echo $line['com_cp'];

Posté : 06 juil. 2007, 15:16
par laeti
Merci pour ces précisions.

J'ai corrigé la ligne indiquée, ce qui donne maintenant:

Code : Tout sélectionner

[php] while ($line=pg_fetch_array($req)) { echo "<option name='Code_Postal'>".$line['com_cp']."</option>"; }[/php]

Posté : 06 juil. 2007, 15:23
par sadeq
Non, il faut reprendre, comme l'a bien expliqué thehawk, une liste <SELECT> en HTML s'écrit:

Code : Tout sélectionner

<SELECT name="nom de la liste"> <OPTION value="valeur à sélectionner">Texte affiché</OPTION> <OPTION value="valeur à sélectionner">Texte affiché</OPTION> <OPTION value="valeur à sélectionner">Texte affiché</OPTION> ... </SELECT>
Où les lignes <OPTION> sont les élèments affichés dans la liste, quand on la déroule, on voit le texte affiché entre <OPTION>et</OPTION> et quand on sélectionne une valeur, la liste en tantque champ du formulaire prend la valeur sélectionnée mentionnée dans <OPTION value=...
La valeur dans le mot value= peut être la même que le texte affiché ça ne gène en rien.
Si le mot value= est absent, la valeur est alors le n° de la ligne sélectionnée. Les lignes d'une liste étant numérotée automatiquemnt de 0 à N selon sa taille.

En PHP, on peut générer la partie variable des options dans le cadre d'une boucle avec de simples echos.

Maintenant, à toi:
Sachant que le nom de ta liste est : "Code_Postal"
et les textes et valeurs de ses options sont ceux que tu lit par ta requête ($line['com_cp'])
Peux-tu corriger ton programme en conséquence?