Requête MySql/PHP liste
Résolu
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 !
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 !
Configuration: Mac OS X Firefox 2.0.0.20
1 réponse
-
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 ?-
-
@MaryBoxLe 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. -
@MaryBoxPour info, ORDER BY se rajoute après la clause WHERE.
-
@pyschopatheMerci, 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 -
@pyschopatheJ'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 !
-