betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 09 mars 2008 - 22 h 05 m 19 s |
|
|
Hello,
Depuis mes dernières péripéties (sic!) j'ai bien avancé ;o)
Nouveau sujet avec insert, delete etc ...
Aucun soucis au bout de 6h gestion de droit, grid paginé, formulaire avec javascript de controle etc ... bref tranquille sauf ... à un détail !
et là c'est le drame ;o)
La question simple :
j'ai une liste déroulante :
<select name="pays" id="pays" >
<option value="1">France</option>
<option value="2">Etat Unis</option>
<option value="3">Maroc</option>
</select>
comment faire à partir de la valeur de l'option que j'ai dans mon mon $row= mysql_fetch_assoc($result); sélectionner la valeur de la liste.
Ah voui je sais
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 10 mars 2008 - 10 h 03 m 12 s |
|
|
ben c'est simple 
en fait tu recup la valeur dans ta requete, cette valeur est par exemple "2" pour "etats unis".
quand tu ecris ton select, tu dois gerer l'insertion dans la ligne "option" d'un attribut "selected", par exemple :
1. echo "<select name="pays" id="pays" >";
2. if ($row['pays']=='1') { $tmp=" SELECTED"; } else { $tmp=''; }
3. echo " <option value="1"".$tmp.">France</option>
4. if ($row['pays']=='2') { $tmp=" SELECTED"; } else { $tmp=''; }
5. echo " <option value="2"".$tmp.">Etats Unis</option>
6. echo "</select>";
etc etc...
bon la c'est l'exemple bidon ou les options de ton select ne viennent pas d'une table mais sont affiches en dur.
si comme cela doit être le cas, tu as une table "pays" avec id_pays, lib_pays comme colonnes, alors tu vas faire un for pour afficher toutes tes lignes option, donc dans ce cas, tu ecris une seule fois le if et tu compares la valeur avec le resultat de ta requete, donc en 4 lignes c'est plie 
tu comprends ?
si tu veux jte file le code complet pour les pays, jdois avoir ca quelques part pas loin
|
|
| |
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 013 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 10 mars 2008 - 10 h 05 m 51 s |
|
|
C'est un peu mal expliqué là en fait ^^.
Tu récupère la valeur de ton select (par exemple si tu choisi France, tu aura $_POST['pays']=1). Il faut donc que tu fasse la corrélation entre le pays et la valeur.
Si dans ta base de donnée tu as une liste de pays, associé avec des valeurs (par exemple une table pays :
pays
|
|---|
| id | nom | | 1 | France | | 2 | Etats Unis | | 3 | Maros |
Dans ce cas, lorsque tu construit ton select, tu fais une requête sur la table pays et derrière, tu construit ton select :
1. <?php
2.
3. [...]
4.
5. $sql_select_pays = "SELECT `id`,`nom` FROM `pays`";
6. $res_select_pays = mysql_query($sql_select_pays) or die ("Erreur sur la requête <i>$sql_select_pays</i> : <br/>" . mysql_error());
7. if (mysql_num_rows())
8. {
9. echo "<select name=\"pays\" id=\"pays\">n";
10. while ($pays = mysql_fetch_assoc($res_select_pays))
11. {
12. echo "<option value=\"" . $pays['id'] . "\">" . $pays['nom'] . "</option>n";
13. }
14. echo "<select>n";
15. }
16.
17. [...]
18.
19. ?>
Une fois ton select construit à partir de la base de donnée, lorsque tu récupère l'id du pays (dans $_POST['pays']), tu n'as plus qu'a faire une requête SQL sur la table pays pour récupérer son nom. C'est utile si tu dois faire d'autres requêtes SQL, dans ce cas tu fais une jointure sur la table pays.
Si tu n'a pas les pays en base de donnée, alors 2 solutions s'offrent à toi :
soit tu fais un tableau associatif avec les pays dans le code ($pays = array('France','Etats Unis','Maroc'); ... attention, les valeurs commencent à 0 dans un tableau. Donc $pays[1] = Etats Unis, et non France. Il faudra modifier les valeurs de tes options du select pour mettre 0 a france, 1 à Etats unis, 2 à maroc), soit tu met en valeur des options directement le nom du pays :
<option value="France">France</option>
Et dans ce cas, $_POST['pays']="France" !
J'espère que j'ai été clair.
Si tu veux plus de détails sur la première solution avec la base de donnée, dit moi ce que tu souhaite faire derrière.
|
|
| |
Totalement inutile, donc completement indispensable 
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 013 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 10 mars 2008 - 10 h 07 m 08 s |
|
|
Oups, je viens de lire la réponse de Grabber, j'suis à côté de la plaque en fait xD
Bon alors en supposant que $row['id'] soit la valeur de l'option sélectionnée :
1. <?php
2.
3. [...]
4.
5. $sql_select_pays = "SELECT `id`,`nom` FROM `pays`";
6. $res_select_pays = mysql_query($sql_select_pays) or die ("Erreur sur la requête <i>$sql_select_pays</i> : <br/>" . mysql_error());
7. if (mysql_num_rows())
8. {
9. echo "<select name=\"pays\" id=\"pays\">n";
10. while ($pays = mysql_fetch_assoc($res_select_pays))
11. {
12. if ($row['id']=$pays['id']) $selected = " selected=\"selected\"";
13. echo "<option value=\"" . $pays['id'] . "\"$selected>" . $pays['nom'] . "</option>n";
14. }
15. echo "<select>n";
16. }
17.
18. [...]
19.
20. ?>
Ca devrait mieux correspondre
|
|
| |
Message édité 2 fois, la dernière par Woofy le 10 mars 2008 - 10 h 32. |
| |
Totalement inutile, donc completement indispensable 
|
moinal
Messages : 122 Inscrit le 12/03/05
Ville : Aix en provence
Non connecté
|
|
Posté le 10 mars 2008 - 10 h 29 m 33 s |
|
|
Juste une précision, le format html final doit être : selected="selected" en xhtml.
Le selected seul ne passe qu'en html , en xhtml il faut qu'il y ait l'attribut+ sa valeur
Ca fonctionnera même sans et avec un doctype xhtml, mais ce n'est pas valide.
|
|
| |
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 013 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 10 mars 2008 - 10 h 32 m 01 s |
|
|
Ah pardon !
Je corrige (en espérant que l'édition ne me vire pas les \)
|
|
| |
Totalement inutile, donc completement indispensable 
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 24 mars 2008 - 12 h 18 m 17 s |
|
|
alala !! j'ai pas de table (je peux pas en avoir).
Comment je pourrai gerer ça à partir d'un fichier xml ?
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
moinal
Messages : 122 Inscrit le 12/03/05
Ville : Aix en provence
Non connecté
|
|
Posté le 24 mars 2008 - 13 h 32 m 10 s |
|
|
|
|
|
| |
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 24 mars 2008 - 20 h 06 m 11 s |
|
|
hello,
Merci à grab' pour son code, un leger correctif
1.
2. <?php
3. echo '<select name="pays" id="pays">';
4. if ($row['pays']=='1') { $tmp=" SELECTED"; } else { $tmp=''; }
5. echo '<option value="1"'.$tmp.'>France</option>';
6.
7. if ($row['pays']=='2') { $tmp=" SELECTED"; } else { $tmp=''; }
8. echo '<option value="2"'.$tmp.'>Etats Unis</option>';
9.
10. if ($row['pays']=='3') { $tmp=" SELECTED"; } else { $tmp=''; }
11. echo '<option value="3"'.$tmp.'>Maroc</option>';
12.
13. echo '</select>';
14. ?>
15.
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 24 mars 2008 - 20 h 06 m 30 s |
|
|
merci grab'
1.
2.
3. <?php
4. echo '<select name="pays" id="pays">';
5. if ($row['pays']=='1') { $tmp=" SELECTED"; } else { $tmp=''; }
6. echo '<option value="1"'.$tmp.'>France</option>';
7.
8. if ($row['pays']=='2') { $tmp=" SELECTED"; } else { $tmp=''; }
9. echo '<option value="2"'.$tmp.'>Etats Unis</option>';
10.
11. if ($row['pays']=='3') { $tmp=" SELECTED"; } else { $tmp=''; }
12. echo '<option value="3"'.$tmp.'>Maroc</option>';
13.
14. echo '</select>';
15. ?>
16.
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 24 mars 2008 - 20 h 07 m 55 s |
|
|
woof' j'ai un "leger" petit soucis
Ca marche bien mais ça me genere une deuxieme liste vide
1.
2. <?php
3.
4. $sql_select_client = "SELECT numero,nom FROM clients ORDER BY nom ASC";
5. $res_select_client = mysql_query($sql_select_client) or die ("Erreur sur la requête <i>$sql_select_client</i> : <br/>" . mysql_error());
6.
7. if (mysql_num_rows($res_select_client))
8.
9. {
10. echo "<select name=\"client\" id=\"client\">n";
11. while ($client = mysql_fetch_assoc($res_select_client))
12. {
13. if ($row['id_client']==$client['numero']) $selected = " selected=\"selected\"";
14. echo "<option value=\"" . $client['numero'] . "\"$selected>" . $client['nom'] . "</option>n";
15. }
16. echo "<select>n";
17. }
18.
19. ?>
20.
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
coin_coin_38
Messages : 127 Inscrit le 08/12/03
Ville : grenoble(ville)
Non connecté
|
|
Posté le 24 mars 2008 - 20 h 30 m 02 s |
|
|
remplace : echo "<select>n";
par : echo "</select>n";
Tu ouvre u ndeuxieme select
|
|
| |
coinnnnnnnnnnnnnnnnnn
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 24 mars 2008 - 21 h 49 m 20 s |
|
|
raaa !!! je suis un boulet !! merci !!
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 013 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 25 mars 2008 - 08 h 31 m 17 s |
|
|
Je crois que c'est l'édition qui m'a viré les backslash.
C'est \n a la fin de chaque ligne, pas juste n
|
|
| |
Totalement inutile, donc completement indispensable 
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 27 mars 2008 - 12 h 10 m 00 s |
|
|
Sur la base de woof j'ai fait une version longue ;o)
1.
2. echo '<select name="client" id="client">';
3. while ($client = mysql_fetch_assoc($res_select_client))
4. {
5.
6. if ($row['id_client']==$client['numero'])
7. {
8. echo '<option value="' . $client['numero'] .'"selected = selected>'. $client['nom'] .'</option>';
9. }
10. else
11. {
12. echo '<option value="' . $client['numero'] .'">'. $client['nom'] .'</option>';
13. }
14. }
15.
|
|
| |
Message édité 1 fois, la dernière par betux le 29 mars 2008 - 09 h 25. |
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 28 mars 2008 - 10 h 27 m 38 s |
|
|
bon tu mle rajoutes ce selected = selected !!!
tu vas me vexer le moinal si tu continues !
|
|
| |
|
betux
Coordinateur
testis ...
Messages : 2 851 Inscrit le 08/10/03
Ville : lyon et parfois grenoble
Non connecté
|
|
Posté le 29 mars 2008 - 09 h 25 m 44 s |
|
|
comme ça ?
|
|
| |
Il faut que le hasard renverse la fourmi pour qu elle voit le ciel.
|