[php]selected dans un menu deroulant

selected dans un menu deroulant [php] - PHP - Programmation

Marsh Posté le 19-10-2004 à 03:19:21    

bonjour!
G un menu deroulant qui permet,entre autre, d'actualiser ma page, mais en meme temps je voudrais que lorsque la nouvelle page est affiché il fasse le SELECTED sur le lien sur lequel je viens de cliquer.
je ne sais pas trop comment m'y prendre... merci de votre aide

Code :
  1. <?
  2. echo'<FORM method="post">
  3. <SELECT NAME="ListeUrl" SIZE=1 onChange="ChangeUrl(this.form)">';
  4. for($n=0;$n<mysql_num_rows($req_monnaie);$n++)
  5. {
  6. $resultatmonnaie =mysql_fetch_array($req_monnaie);
  7. //$selection="selected";
  8. echo"<option value='index.php?page=articles_detail&ref=".$article['ref']."&modele_id=".$article['modele_id']."'".$selection.">" . $resultatmonnaie['symbole'] ."</option>";
  9. }
  10.   echo"</SELECT></FORM>";
  11. ?>


Message édité par attentio le 24-03-2005 à 21:04:02

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 19-10-2004 à 03:19:21   

Reply

Marsh Posté le 19-10-2004 à 04:52:40    

Hum comme ça ?
 

Code :
  1. <?php 
  2.     echo'<FORM method="post" name="bidon">
  3.    <SELECT NAME="ListeUrl" SIZE="1" onChange="ChangeUrl(this.form)">'; 
  4.     for($n=0;$article =mysql_fetch_array;$n++)
  5.     {
  6.     $selection='';
  7.     if($_GET['modele_id']==$article['modele_id'])
  8.      $selection=' selected="selected"';
  9.     echo'<option value="index.php?page=articles_detail&amp;ref='.$article['ref'].'&amp;modele_id='.$article['modele_id'].'"'.$selection.'>'.$resultatmonnaie['symbole'].'</option>';
  10.    } 
  11.      echo'</SELECT></FORM>';
  12.    ?>


Message édité par KdZ' le 19-10-2004 à 05:07:10
Reply

Marsh Posté le 19-10-2004 à 05:09:28    

En fait c'est juste pour te donner l'idée parceque sinon ce code est pas bon ($resultatmonnaie['symbole'] pas definie)
 
Ce qu'il faut retenir c'est ça :  
# $selection='';
#     if($_GET['modele_id']==$article['modele_id'])  
#         $selection=' selected="selected"';  

Reply

Marsh Posté le 19-10-2004 à 09:23:26    

j'ai fais ca:

Code :
  1. echo'<FORM method="post">
  2. <SELECT NAME="ListeUrl" SIZE=1 onChange="ChangeUrl(this.form)">';
  3. for($n=0;$n<mysql_num_rows($req_monnaie);$n++)
  4. {
  5. $resultatmonnaie =mysql_fetch_array($req_monnaie);
  6. $selection='';
  7.     if($_GET['modele_id']==$article['modele_id']) 
  8.         $selection=' selected="selected"'; 
  9. echo"<option value='index.php?page=detail&ref=".$article['ref']."&modele_id=".$article['modele_id']."'".$selection.">" . $resultatmonnaie['symbole'] ."</option>";
  10. }
  11. echo'<input type="text" name="session_monnaie" value="'.$resultatmonnaie['valeur'].'">';
  12.   echo"</SELECT></FORM>";


mais le pb C qu'il reste bloqué sur le dernier enregistrement.
 
pour info, deja, avant, dans mon input text il n'affichait que mon dernier enregistrement .
d'ou peut venir mon erreur :??:  
 
merci de ton aide


Message édité par attentio le 19-10-2004 à 11:49:32
Reply

Marsh Posté le 19-10-2004 à 12:36:33    

tu veux dire que tu n'avais qu'un seul <option></option> ?
Montre ta requete req_monnaie ;)

Reply

Marsh Posté le 19-10-2004 à 12:51:42    

tiens !  :)  
$req_monnaie = mysql_query("SELECT * FROM monnaies" );


Message édité par attentio le 19-10-2004 à 12:52:01
Reply

Marsh Posté le 19-10-2004 à 12:54:08    

auusi  ...pour info
si je fais un print_r($resultatmonnaie);  
il me renvoi:  
Array ( [0] => 3 [monnaie_id] => 3 [1] => yen [nom_monnaie] => yen [2] => 136.35 [valeur] => 136.35 [3] => ¥ [symbole] => ¥ ) fermer  
 
dans ma table monnaies j'ai les champs :  
monnaie_id | nom_monnaie | valeur | symbole  
 
et dedans G comme enregistrements  
 
1 | dollar |1.25 | $  
2 | livre |0.86 | £  
3 | yen | 136.35 | ¥
 
merci de ton aide


Message édité par attentio le 19-10-2004 à 13:01:29
Reply

Marsh Posté le 19-10-2004 à 13:00:40    

... mon <option> est dans une boucle

Reply

Marsh Posté le 19-10-2004 à 13:27:58    

deja ca c'est pas bien :o

Code :
  1. for($n=0;$n<mysql_num_rows($req_monnaie);$n++)


 
ca sert a rien de recalculer le nombre de lignes retournées a chaque fois, il est fixe...
 
un while sur mysql_fetch_array serait mieux...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 19-10-2004 à 15:16:43    

en fait ce qu'il se passe, toutes les <option> sont selected="selected" ... a l'aide ....


Message édité par attentio le 19-10-2004 à 15:18:22
Reply

Marsh Posté le 19-10-2004 à 15:16:43   

Reply

Marsh Posté le 19-10-2004 à 16:08:04    

plus simplement ma page devrait ressembler a ceci :

Code :
  1. <?
  2. $connexion=mysql_connect('localhost', 'root','');
  3. mysql_select_db('ma_base',$connexion);
  4. $req_monnaie = mysql_query("SELECT * FROM monnaies" );
  5. ?>
  6. <html><head></head><body>
  7. <script language="JavaScript">
  8. function ChangeUrl(formulaire_monnaies)
  9. {
  10.  location.href = formulaire_monnaies.ListeUrl.options[formulaire_monnaies.ListeUrl.selectedIndex].value;
  11. }
  12. </script>
  13. <?
  14. echo'<FORM method="post">';
  15. echo'<SELECT NAME="ListeUrl" SIZE=1 onChange="ChangeUrl(this.form)">';
  16. for($n=0;$n<mysql_num_rows($req_monnaie);$n++)
  17. {
  18. $resultatmonnaie =mysql_fetch_array($req_monnaie);
  19.         $selection=' selected'; 
  20. echo"<option value='index.php'".$selection.">" . $resultatmonnaie['symbole'] ."</option>";
  21. }
  22.   echo"</SELECT></FORM>";
  23. echo'1 euro = '. $resultatmonnaie['valeur'] .$resultatmonnaie['symbole'].'';
  24. ?>
  25. </body></html>


...sauf que le select ne fonctionne pas
 
et ma table :

Code :
  1. #
  2. # Structure de la table `monnaies`
  3. #
  4. CREATE TABLE `monnaies` (
  5.   `monnaie_id` tinyint(4) NOT NULL auto_increment,
  6.   `nom_monnaie` varchar(30) NOT NULL default '',
  7.   `valeur` float(4,2) NOT NULL default '0.00',
  8.   `symbole` varchar(10) NOT NULL default '',
  9.   PRIMARY KEY  (`monnaie_id`)
  10. ) TYPE=MyISAM AUTO_INCREMENT=5 ;
  11. #
  12. # Contenu de la table `monnaies`
  13. #
  14. INSERT INTO `monnaies` VALUES (1, 'dollar', '1.25', 'UDS');
  15. INSERT INTO `monnaies` VALUES (2, 'livre', '0.69', 'GBL');
  16. INSERT INTO `monnaies` VALUES (3, 'yen', '136.35', '¥')

Reply

Marsh Posté le 19-10-2004 à 17:02:25    

echo("<SELECT NAME='mode_paiment'><OPTION selected>mode paiement</OPTION>" );
for($x=0;$x<$y;$x++)
{
 
 if([i]condition pour select
)
 {
    $select = "selected";
 }
("<OPTION $select >$var</OPTION>" );
$select="";
}    [/i]
 
un truc com ca

Reply

Marsh Posté le 20-10-2004 à 13:04:08    

comme dit plus haut un while est plus que le bienvenue dans ce cas la (sur tout pas de for :p)
 
while($ligne = mysql_fetch_array($req_monnaie) {
//test de selected :
if(je ne sais pas ca depend de ton code :)) {
$select = "selected" ;
}
//et la tu affiches :
echo "<option value="veleur" $select>ton truc index.php?...etc.</option>
}
 
normalement ca devrait marcher avec ca et puis c'est beaucoup plus simple :)

Reply

Marsh Posté le 23-10-2004 à 20:43:57    

a coup sur ce qui te fais planter c'est que tu fais  
if (condition) $selected = "selected";
avec juste cette ligne tous les <option></option> seront affectés, il faut que tu rajoutes :
else $selected = '';

Reply

Sujets relatifs:

Leave a Replay

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