Requête MySql/PHP liste

Résolu/Fermé
MaryBox - 10 juin 2009 à 12:46
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 10 juin 2009 à 20:46
Bonjour,

Je m'initie à la réalisation d'un site en PHP/MySQL et je rencontre un problème avec la requête suivante :

J'ai un BDD avec notamment ces 3 tables :

exposants (contient : NUM_EXPO et NOM_EXPO)
distributeurs (contient : NUM_EXPO et NUM_MARQUE)
marques (contient NUM_MARQUE et NOM_MARQUE)

Pour la création d'une fiche produit, je souhaite que mon exposant (n° 2913) puissent sélectionner dans une liste déroulante l'une des marques qu'il distribue :

<select name="marque" id="marque">
<option value="">...</option>
<?php
$req="SELECT * FROM distributeurs D, marques M";
$req.=" WHERE D.NUM_EXPO='2913'";
$req.=" AND D.NUM_MARQUE=M.NUM_MARQUE";
$link=connectBase("");
$result=mysql_query($req,$link);
mysql_close($link);
while ($row=mysql_fetch_row($result))
{
echo "<option value=".$row[1].">".$row[1]."</option>";
}
?>
</select>

J'obtiens la liste des numéros de marques de mon exposant alors que je voudrais faire apparaître le nom des marques...

Merci pour votre aide !
A voir également:

1 réponse

babou054 Messages postés 162 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 1 septembre 2009 11
10 juin 2009 à 13:39
echo "<option value=".$row[1].">".$row[1]."</option>";
Ca doit être probablement un pb d'indice du tableau row...
As tu bien pris en compte le fait que le 1er indice du tableau est 0 et pas 1 ?
0
Bonjour et merci pour ta réponse rapide.

Je ne pense pas que ça soit un pb d'indice du tableau row, je pense plutôt qu'il me faut rajouter dans ma requête " M.NOM_MARQUE " et " ORDER BY NOM_MARQUE " mais où ?
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > MaryBox
10 juin 2009 à 15:23
Le problème vient bien de l'indice. Remplace ta requête par ça :
$req="SELECT M.NOM_MARQUE FROM distributeurs D JOIN marques M ON (D.NUM_MARQUE=M.NUM_MARQUE)";
$req.=" WHERE D.NUM_EXPO='2913'";
et prend l'habitude de ne pas sélectionner tous les champs d'une table si tu n'en utilises qu'un.

Ensuite, tu utilises $row[0] pour récupérer la valeur.
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > MaryBox
10 juin 2009 à 15:25
Pour info, ORDER BY se rajoute après la clause WHERE.
0
MaryBox > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
10 juin 2009 à 17:47
Merci, c'est ok pour la liste "nom des marques" mais lorsque je sélectionne une marque (je suis dans un formulaire de saisie pour la publication d'un article), mon choix n'est pas enregistré sur la BDD (le NUM_MARQUE).
Je sais, j'ai beaucoup à apprendre... indulgence STP ! et merci encore
0
MaryBox > pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
10 juin 2009 à 18:00
J'ai résolu mon pb :

$req="SELECT M.NUM_MARQUE, M.NOM_MARQUE FROM distributeurs D, marques M";

et

echo "<option value=".$row[0].">".$row[1]."</option>";

merci encore !
0