Liste deroulante et base de données

mimikely -  
avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
salut a tous,j'ai un petit soucis avec mon exercice.au fait,je voulais recuperer quelques valeurs dans une table de ma base de données et les mettrent dans une liste deroulante:
je vais essayer de donner un peu de precision:
Dans la table"fournisseur" ,je voudrais mettre dans ma liste deroulante les noms des fournisseurs.Voici le code que j'ai fais mais marche pô:
<?php
echo("<table border=0>");
echo("<form name='formulaire' method='post'>");
echo("<tr><td>nom fournisseur:</td><td>");
echo("<select name='listefournisseur'>");
echo("<option>choisissez</option>");
$con=mysql_connect("localhost","root","");

if(!$con)
{
echo"erreur de connexion";
}
else
{
mysql_select_db("ex1",$con);
$ql="SELECT nomfournisseur FROM fournisseur";
$resultat=mysql_query($sql);


while($tab= mysql_fetch_array($resultat))
{

echo"<option value=\"".$tab["numfournisseur"]."\">".$tab["nomfournisseur"]."</option>"."</td></tr>";
}
}
echo("</select>");
echo("<tr><td><input type='submit' name='envoyer' value='afficher'></td></tr>");
echo("</form>");



echo("</table>");
?>
Merci beaucoup pour votre aide!!



A voir également:

3 réponses

avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

echo n'est pas vraiment une fonction mais une structure du langage, tu n'es pas obligé de mettre des parenthèses autour.

Je te déconseille de faire des echo de texte statique quand il n'y a aucune condition pour son affichage, comme le code HTML du formulaire qui est fixe (excepté le contenu de la liste) et qui s'affiche toujours.

Pour l'alignement dans les formulaires, il ne faut pas utiliser les tableaux. D'ailleur, ils ne doivent jamais servir à la mise en page (colonnes) : ils servent à afficher des données structurées.

Pour un code plus propre, je stockerais la liste des fournisseurs dans une variables afin de ne pas mélanger le HTML ave le PHP. Je réutiliserais cette variable (contenant un tableau) pour faire une boucle foreach.

Pour être plus clair :
<?php
// Paramètres MySQL
define('DB_HOST','localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'cours');

// Connexion à MySQL
mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_NAME);

// Exécution de la requête SQL
$sql = 'SELECT nomfournisseur FROM fournisseur';
$result = mysql_query($sql);

// Stockage du résultat dans un array
$fournisseurs = array();
while($fournisseur = mysql_fetch_assoc($req)) {
    $fournisseurs[] = $fournisseur['nomfournisseur'];
}

// Fermeture de la connexion à MySQL
mysql_close();
?>

<form name="formulaire" method="post" action="cible.php">
    <div>
        <label for="fournisseur_id">Fournisseur :</label>
        <select name="fournisseur" id="fournisseur_id">
        <?php foreach($fournisseurs as $fournisseur) : ?>
            <option value="<?php echo $fournisseur; ?>"><?php echo $fournisseur; ?></option>
        <?php endforeach; ?>
        </select>
    </div>

    <div>
        <input type="submit" value="Envoyer" />
    </div>
</form>


J'ai codé directement dans la zone de texte, il pourrait y avoir des erreurs de frappe.
0
mimikely
 
ça marche nickel!merci beaucoup Avion -f16 surtout pour tes conseils,c'est sympa!
je ne veux pas t'embêter mais y a t il une autre manière de realiser la même chose sans utiliser la boucle foreach,juste pour savoir.Merci encore!
0
avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Oui, tu peux mettre le code du HTML au milieu du code PHP, et faire les echo directement dans la boucle while, j'ai fais ça juste pour séparer le HTML du PHP, c'est plus propre.

Voilà ce que ça donnerait :
<form name="formulaire" method="post" action="cible.php">
    <div>
        <label for="fournisseur_id">Fournisseur :</label>
        <select name="fournisseur" id="fournisseur_id">

<?php
// Paramètres MySQL
define('DB_HOST','localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'cours');

// Connexion à MySQL
mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_NAME);

// Exécution de la requête SQL
$sql = 'SELECT nomfournisseur FROM fournisseur';
$result = mysql_query($sql);

// Affichage de la liste des fournisseurs
$fournisseurs = array();
while($fournisseur = mysql_fetch_assoc($req)) {
    $nomfournisseur = $fournisseur['nomfournisseur'];
    echo '<option value="'.$nomfournisseur.'">'.$nomfournisseur.'</option>';
}

// Fermeture de la connexion à MySQL
mysql_close();
?>
        </select>
    </div>

    <div>
        <input type="submit" value="Envoyer" />
    </div>
</form>
0