[HTML&PHP] Probleme de SELECTED dans une liste déroulante

Probleme de SELECTED dans une liste déroulante [HTML&PHP] - PHP - Programmation

Marsh Posté le 26-01-2003 à 14:34:09    

Voila, enfait, j'ai un formulaire d'ajout dans une base de donné, constitué deliste déroulante... Pour l'ajout, j'ai fait :
 

Code :
  1. <select name="type">
  2.     <option value="vide" selected> --- Choisissez ---</option>
  3. <option value="fem"> Femme</option>
  4. <option value="hom"> Homme</option>
  5. <option value="2"> Les 2</option>
  6. </select>


(à noté que c'est un exemple ;))
 
Donc, dans l'ajout, je vérifie la valeur de "type" et si $type=='vide' benje retourne une erreur d'entrée...  
 
Juske la, pas de problemes
 
cependant, c'est lros de la modification de cette valeur que ca me chifonne...
car dans ma page modif.php, j'aimerai que l'option sélectionner, soit celle qu'il y ai a l'initiale
 
Mais je ne voit pas comment faire :/
 
merci pour votre aide  :hello:

Reply

Marsh Posté le 26-01-2003 à 14:34:09   

Reply

Marsh Posté le 26-01-2003 à 15:01:19    

Dans ton modif.php tu dois faire une requête pour savoir quelle est la valeur qu'il y a dans la BDD. Une fois que tu as cette valeur, il te suffit de la comparer aux 3 valeurs possible et d'ajouter le "selected" la où il y a égalité.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 26-01-2003 à 17:20:20    

Un truc du genre ?
 

Code :
  1. <SELECT name=\"nom\">
  2. <option "
  3. if($truc == "Machin" ) { print("selected " ); }
  4. value=\"Machin\" >Machin</option>" );
  5. </select>


Message édité par L0k le 26-01-2003 à 17:21:02
Reply

Marsh Posté le 26-01-2003 à 17:32:11    

Voilà. Ou alors si on veut automatiser un peu plus la création du <select>, on peut utiliser un tableau de ce genre :
 
$valeur est la valeur récupérée dans la BDD, qui vaut "fem", "hom" ou "2"
 
Soit le tableau associatif :
 

Code :
  1. $select["fem"]["descriptif"] = "Femme";
  2. $select["hom"]["descriptif"] = "Homme";
  3. $select["2"]["descriptif"] = "Les 2";
  4. $select["fem"]["selection"] = "";
  5. $select["hom"]["selection"] = "";
  6. $select["2"]["selection"] = "";


 
Puis :
 

Code :
  1. $select[$valeur]["selection"] = " selected";
  2. echo "<select name=\"type\">\n";
  3. foreach ($select as $key => $v) {
  4.   echo "<option value=\"$key\" {$v["selection"]}>{$v["descriptif"]}</option>\n";
  5. }
  6. echo "</select>\n";


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 28-01-2003 à 16:12:35    

Tu peux aussi faire ça (encore ;)) plus simplement.
$nom est la variable récupérer dans la base de donnée, tu sait qu'elle peut être soit "vide", "fem", "hom" ou "deux".
A partir de là, tu fais :

Code :
  1. $sel = $nom;
  2. $$sel = " selected";
  3. echo "
  4. <select name='type'>
  5.    <option value='vide'$vide> --- Choisissez ---</option>
  6.    <option value='fem'$fem> Femme</option>
  7.    <option value='hom'$hom> Homme</option>
  8.   <option value='2'$deux> Les 2</option>
  9. </select>";


Le principe est de stoquer " selected" dans une variable du nom de ta case.


Message édité par kalex le 28-01-2003 à 16:13:43
Reply

Marsh Posté le 29-01-2003 à 13:19:55    

Kalex a écrit :

Tu peux aussi faire ça (encore ;)) plus simplement.
$nom est la variable récupérer dans la base de donnée, tu sait qu'elle peut être soit "vide", "fem", "hom" ou "deux".
A partir de là, tu fais :

Code :
  1. $sel = $nom;
  2. $$sel = " selected";
  3. echo "
  4. <select name='type'>
  5.    <option value='vide'$vide> --- Choisissez ---</option>
  6.    <option value='fem'$fem> Femme</option>
  7.    <option value='hom'$hom> Homme</option>
  8.   <option value='2'$deux> Les 2</option>
  9. </select>";


Le principe est de stoquer " selected" dans une variable du nom de ta case.

tu peux m'expliquer le principe j'ai pas bien compris et je comprends tjs pas :(

Reply

Marsh Posté le 29-01-2003 à 14:08:05    

Bien sur, je vais mettre des commentaires :

Code :
  1. $sel = $nom;
  2. // Ici, $sel contient une chaîne de caractère que tu sais être soit "vide", "fem", "hom" ou "deux".
  3. $$sel = " selected";
  4. /* Maintenant on stoque " selected" dans une variable du nom du contenu de $sel.
  5. Par exemple si $sel contiens "vide", tu auras une variable $vide contenant " selected".*/
  6. echo "
  7. <select name='type'>
  8.   <option value='vide'$vide> --- Choisissez ---</option>
  9.   <option value='fem'$fem> Femme</option>
  10.   <option value='hom'$hom> Homme</option>
  11. <option value='2'$deux> Les 2</option>
  12. </select>";
  13. /* Tu comprends que si $vide contiens " selected", et que $fem, $hom et $deux n'existe pas, l'affichage sera :
  14. "<select name='type'>
  15.   <option value='vide'  selected> --- Choisissez ---</option>
  16.   <option value='fem'> Femme</option>
  17.   <option value='hom'> Homme</option>
  18. <option value='2'> Les 2</option>
  19. </select>"
  20. */

Message cité 1 fois
Message édité par kalex le 29-01-2003 à 14:55:16
Reply

Marsh Posté le 29-01-2003 à 17:47:36    

ah genial j'ai pu l'appliquer dans mon cas, mais en modifiant le nom, car j'ai des id avec numéros seulements, mais ca marche :jap:
 
 
ca m'evite de faire
 
if ($value = $id) {
 
  echo ' selected';
 
}  
 
a chaque ligne de mon select (qui fait 30 lignes)
 
respect :)


Message édité par electrastar le 29-01-2003 à 17:47:52
Reply

Marsh Posté le 02-05-2006 à 21:58:44    

kalex a écrit :

Bien sur, je vais mettre des commentaires :
[..]


 
Comment je peux faire ça avec une liste construite dynamiquement ?
 

Code :
  1. echo <select name=\"jour\" size=\"1\">\n";
  2. for ($i = 1; $i <= 31; $i++) {
  3.   $j=str_pad($i, 2, '0', STR_PAD_LEFT); //pour tjrs avoir un nombre à deux chiffres
  4.   echo "<option value=$j>$j\n";
  5. }


Message édité par vingtcent le 02-05-2006 à 22:12:07
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed