7902 sujets

Développement web côté serveur, CMS

Je cherche à faire un menu déroulant en prenant des données dans 1 table de 1 champ de ma base, et je comprend pas pourquoi mon code ne fonctionne pas, il n'affiche rien dans mon petit menu déroulant, quelqu'un peut m'aider ? :

$reponse2 = mysql_query("SELECT * FROM villes ORDER BY Ville");
<label for="ville">Ville : </label>
<?php
			echo "<SELECT Name=\"Ville\">";
			while($ligne_liste=mysql_fetch_array($reponse2))
                        {
				echo "<OPTION Value=\"".$ligne_liste['Ville']."\">".$ligne_liste['Ville']."</OPTION>";
			}
			echo "</SELECT>";
			
	   ?>

Modifié par Biouzor (08 Apr 2009 - 09:24)
Modérateur
Salut,

peut-être quelque chose comme ça :
<label for="ville">Ville : </label>
<?php
echo '<select name="ville" id="ville">';
require_once('connexion.inc.php');
$reponse2 = mysql_query("SELECT Ville FROM villes ORDER BY Ville") or die(mysql_error);
while($ligne_liste=mysql_fetch_array($reponse2)) {
	echo '<option value="'.$ligne_liste['Ville'].'">'.$ligne_liste['Ville']."</option>\n";
}
echo '</select>';
?>


Edit: en passant, merci de t'occuper de ton précédent sujet. A savoir prendre le temps de dire si ça marche (ou pas) et le cas échéant passer ton sujet en [Résolu]
Modifié par Heyoan (07 Apr 2009 - 20:15)
A quoi sert le require_once ? Et c'est quoi le fichier connexion.inc.php ? Je vais tester si cela marche et revient vous dire quoi. Merci pour les conseils.
Avec ou sans le require_once() ça ne fonctionne pas, toujours rien d'afficher dans mon menu déroulant. J'ai essayé plusieurs façons possibles, le code me semble correct je ne comprend pas pourquoi ça fonctionne pas.
J'ai trouvé d'où venait le problème, je refermais la connexion à la base avant ma boucle while ce qui est bizzare c'est que ça marche quand on affiche dans un tableau mais pas en liste déroulante. Le code complet qui fonctionne est donc le suivant :


                        <label for="ville">Ville : </label>

			<?php
			
			mysql_connect("localhost", "root", "") or die("Impossible de se connecter : " . mysql_error());
			mysql_select_db("db_chargesprojet") or die("Impossible de se connecter à la base de données : " . mysql_error());
			$req = mysql_query("SELECT Ville FROM villes ORDER BY Ville") or die(" Erreur lors de la requête : " . mysql_error());
				echo "<SELECT NAME='Ville' onChange='FocusObjet()'>"; 
				while ($result = mysql_fetch_array($req)) {
					echo "<OPTION VALUE='$result[0]'>$result[0]</OPTION>\n";
				}
				echo "</SELECT>"; 
			mysql_close();
			
			?>
Modérateur
Salut,

le require_once('connexion.inc.php'); permet d'inclure le fichier de connexion à la base. Chez moi il contient (en simplifié) :
<?php
$host = "localhost"; 
$user = "root"; 
$passwd = ""; 
$database = "test"; 

$link = @mysql_connect($host, $user,$passwd);
if(!$link) {
	die('Erreur de connexion au serveur');
}

$select_db = @mysql_select_db($database);
if(!$select_db) {
	die('Erreur de connexion à la base');
}
?>
Ceci dit, je serais toi je ferais toutes les requêtes au début, et j'utiliserais un template pour séparer totalement le HTML du PHP. Smiley cligne
Bonjour,
je viens d'utiliser le menu déroulant d' heyoan (qui marche nickel !):

cependant
pour mon cas, j'aimerai éviter les doublons. Pour l'exemple cité, si plusieurs personnes viennent de la même ville qu'elle n'apparaisse qu'une seule fois dans le menu déroulant.

Merci pour votre aide