8792 sujets

Développement web côté serveur, CMS

Bonjour,
j'ai réalisé, pour l'ajout d'un produit dans un back office, une liste déroulante qui fait appel à des noms (qui sont dans une autre table)

Voici le code pour la liste déroulante pour l'ajout : (il fonctionne)
<label>
<select name="region_cat" id="region_cat">
<?
$connect=mysql_connect("localhost","root","");
mysql_select_db("crus",$connect);

$SQL = "SELECT region_cat FROM categorie";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["region_cat"]."</option>\n";
}

mysql_close();
?>
</select>
</label>



simplement lorsque j'édite le produit, il se peut qu'on puisse sélectionner un autre champs dans la liste déroulante, or je n'arrive pas à récupérer les valeurs pour modifier.
Quelqu'un pourrait-il m'aider?
Modifié par Sonia10 (10 Apr 2007 - 12:01)
Administrateur
Hello,

Merci d'avoir la courtoisie de marquer les éléments de code tel que cela est demandé dans les règles du forum Smiley smile

Bonne chance.
Salut,

Il semblerait que dans la balise option tu ais oublié l'attribut value. Le problème vient surement de là car lorsque tu sélectionnes un élément de la liste, celui-ci n'a pas de valeur.
Il faut simplement que tu rajoutes :

echo "<option value='".$val["region_cat"]."'>".$val["region_cat"]."</option>\n";


J'éspère que cela t'aidera Smiley cligne
en mettant ce bout de code dans <option> cela signifierai que la région qui apparaitrait dans la liste serait celle du produit?


je viens d'essayer, ca ne marche pas je dois avoir une erreur dans mon code :

<label>
 <select name="region_cat" id="region_cat">
<option value=<? echo "'.$val['$data->region_cat'].'"; ?> ><? echo ".$val['$data->region_cat']. ";?></option>

<?

$SQL = "SELECT region_cat FROM categorie";

$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option value='".$val["region_cat"]."'>".$val["region_cat"]."</option>\n";
}
?>
  </select>  
</label>

Modifié par Sonia10 (11 Apr 2007 - 16:06)
Sonia10 a écrit :
en mettant ce bout de code dans <option> cela signifierai que la région qui apparaitrait dans la liste serait celle du produit?


Non, pour cela, il faudrait utiliser l'attribut selected="selected". Pour cela, tu peux faire de la facon suivante :

while ($val = mysql_fetch_array($res)) {
  if ($val['region_cat'] == [b]la_region_du_produit[/b]) {
   echo '<option value="'.$val["region_cat"].'" selected="selected">'.$val["region_cat"].'</option>';
  }
  else {
   echo '<option value="'.$val["region_cat"].'">'.$val["region_cat"].'</option>';
  }



Sonia10 a écrit :

je viens d'essayer, ca ne marche pas je dois avoir une erreur dans mon code

Effectivement, il y a une petite erreur à la troisième ligne. Dans le tableau $val, tu utilises $data->region_cat comme clé. Pour que la variable php soit interprétée, il faut l'entourer de guillemets et non de quotes. Je pense que ton erreur vient d'ici. Le reste parait jute.

Bonne continuation Smiley cligne