{MySQL} résultat requête SQL dans lste déroulante

Résolu/Fermé
nath - 31 déc. 2009 à 12:45
 nath - 31 déc. 2009 à 13:46
Bonjour,
J'essaye de créer une page PHP qui permettrait de sélectionner une ligne d'une table (stockée dans PhpMyAdmin) via d'une requête SQL.
Pour l'instant je n'ai que la première ligne qui s'affiche, je n'arrive pas à avoir la liste complète.
Voici mon code:

<html >
<head>
<title>Selection d'un CMD</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>

<body>
<center>
<?php
$connexion=mysql_connect('localhost','root','root') or die ("Connexion impossible.");
$db=mysql_select_db('mysql',$connexion) or die ("Base de données non accessible.");
$resultat=mysql_query("select Libelle from CMD order by CMD") or die ("Requête non executée.");
$module=mysql_fetch_array($resultat)
?>

<form name="choixCMD" action="pageCMD_action.php" method="POST">
<h3>Choisissez le CMD </h3>
<select name="module">
<?php
foreach ($module as $val) {
echo "<option value=$val>" . $val . "</option>";
}
?>
</select>
<input type="submit" value="Envoyer"><br/>
</form>
</center> </body></html>

Si qqun a une idée pour m'aider

Merci,

Nath

2 réponses

dam75
Messages postés
1042
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
7 avril 2022
65
31 déc. 2009 à 13:26
Bonjour,

En fait, la fonction mysql_fetch_array ne récupère que l'enregistrement courant (par défaut le premier), sous forme comme son nom l'indique d'un tableau :)

Pour récupérer la totalité des enregistrements, tu dois parcourir l'ensemble des résultats, voici un exemple :
while ($row = mysql_fetch_array($resultat, MYSQL_NUM)) {
   echo "<option value={$row[0]}>{$row[0]}</option>"; 
}


Le 2ème paramètre te permet de choisir de récupérer l'enregistrement avec des clés numériques (1er champ=0, 2ème=1, ... ou par nom de champ ...

Et la doc officielle qui explique tout cela :
https://www.php.net/manual/fr/function.mysql-fetch-array.php

Bon courage
0
Merci pour cette réponse.
J'ai bien le résultat de la requête qui s'affiche, mais pas dans une liste déroulante. Elle apparaît en haut de la page php.
Une idée pour m'aider à l'afficher dans une liste déroulante?

Merci,

Nath
0
dam75
Messages postés
1042
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
7 avril 2022
65
31 déc. 2009 à 13:41
parce que tu n'as pas dû mettre le code entre le <SELECT> et </SELECT> peut-être ?

<form name="choixCMD" action="pageCMD_action.php" method="POST">
<h3>Choisissez le CMD </h3>
<select name="module">
<?php
while ($row = mysql_fetch_array($resultat, MYSQL_NUM)) {
   echo "<option value={$row[0]}>{$row[0]}</option>"; 
}
?>
</select>
<input type="submit" value="Envoyer"><br/>
</form> 
0
Super!
Merci ça marche bien maintenant!
Effectivement, je l'avais pas mis au bon endroit, c'est plus logique comme ça :)

Merci encore!

Bonne journée,

Nath
0