Requête MySql/PHP liste

Résolu
MaryBox -  
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   11
 
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
MaryBox
 
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   Statut Membre Dernière intervention   135 > MaryBox
 
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   Statut Membre Dernière intervention   135 > MaryBox
 
Pour info, ORDER BY se rajoute après la clause WHERE.
0
MaryBox > pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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