Mettres des liens dans une liste déroulante php

Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009 - 15 juin 2009 à 14:38
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009 - 15 juin 2009 à 17:18
Mesdames Messieurs bonjour :)
Un petit soucis à ce jours, j'essaie (en vain) d'instaurer des liens dans des listes déroulantes (<option>) mais cela ne fonctionne pas.
Je vais tout d'abord vous montrer le code:
page: requete.php
            <select name="division" size="1">
                    <option value="*"><?php
                                    mysql_select_db($database, $Commerce);
                                          // Affiche les différentes divisions à l'écran
                                     while ($tableau = mysql_fetch_row($resdivision))
                                         {
                                             echo "<OPTION value=".$tableau[0].">".$tableau[0]." - ".$tableau[1]."";
                                         }
                                        ?>
                </select>

J'affiche donc une liste déroulante avec différente valeur (les différentes divisions d'une gamme de produit) qui sont tableau[0] et le nom des divisions tableau[1]. Je voudrais que dès que l'utilisateur choisit une divisions ça amène sur cette page avec une variable dans l'URL
Exemple, il choisit ENDO - ENDOSCOPIE
ça fait une redirection sur requete.php?div=ENDO
donc je pensais faire <option ...>"> <?php echo $tableau[0]." - ".$tableau[1]; ?> </option>

mais ça veut pas ='(
Quelqu'un pour m'aider :D?
Cordialement,
shikapowa

13 réponses

wolfcyber95 Messages postés 48 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 16 août 2010
15 juin 2009 à 15:03
Salut,

Voici un exemple avec un formulaire qui redirige automatique à la selection d'une option, ce ne sont pas des liens il faut en faite mettre dans l'evenement onChange de ta liste de deroulant un window.location.href(lien), c'est donc du javascript :

echo "
<form action="" method="post">
<select name="division" onChange="if (this.value != '') window.location.href('requete.php?div=' + this.value);">";
       
$req = $bd_nu->sql_query("SELECT * FROM table");
       
while ($row = $bd_nu->sql_fetcharray($req))
{            
  $val = $row['champ1'];
  $aff = $row['champ2'];
  echo "<option value="$val">$aff</option>";
}
           
echo "</select></form>";

Voila j'espere que ceci pourra t'aider

@+
0
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 15:29
Oui j'étais actuellement en train d'essayer ce système qui fonctionne très bien je te l'accorde mais aurais tu une idée pour que la liste déroulante affiche ce que l'utilisateur à choisit après le rafraichissement de la page?
Car là par exemple je choisit ENDO, ça affiche bien l'URL ?div=ENDO
Mais au niveau de la liste déroulante après le rafraichissement, ça n'affiche plus ce que l'utilisateur à choisit.

As tu une idée?
0
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 15:33
Ah et une autre remarque, ce système fonctionne bien sous IE mais pas sur Mozilla oO
0
wolfcyber95 Messages postés 48 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 16 août 2010
15 juin 2009 à 15:40
Ah oui, essai de faire ceci :

echo "
<form  action="" method="post">
<select id="list1" name="division" onChange="if (document.getElementById('list1').value != '') window.location.href('requete.php?div=' + document.getElementById('list1').value);">";
       
$req = $bd_nu->sql_query("SELECT * FROM table");
       
while ($row = $bd_nu->sql_fetcharray($req))
{            
  $val = $row['champ1'];
  $aff = $row['champ2'];
  echo "<option value="$val">$aff</option>";
}
           
echo "</select></form>";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 16:00
Nan monsieur IE (comme d'hab) ne veut pas, il retourne la première valeur à l'affichage tandis que monsieur Firefox lui n'accepte même pas le onchange x)
0
wolfcyber95 Messages postés 48 Date d'inscription jeudi 8 septembre 2005 Statut Membre Dernière intervention 16 août 2010
15 juin 2009 à 16:05
retire le if (document.getElementById('list1').value)

essai comme ceci pour voir :

echo "
<form action="" method="post">
<select name="division" onChange="window.location.href('requete.php?div=' + this.value);">";
       
$req = $bd_nu->sql_query("SELECT * FROM table");
       
while ($row = $bd_nu->sql_fetcharray($req))
{            
  $val = $row['champ1'];
  $aff = $row['champ2'];
  echo "<option value="$val">$aff</option>";
}
           
echo "</select></form>";
0
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 16:12
J'ai retiré le if dès le départ car ça fonctionné pas avec, donc ce que je fais là, c'est que j'affiche $division = $_GET['division'] pour que l'utilisateur est la trace de ce qu'il a choisit mais ça affiche deux fois le choix dans la liste déroulante (le choix de l'utilisateur + les différents choix)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 juin 2009 à 16:18
Salut,

Ajoute un test dans la boucle while, du style :

while(...) {
  [...]
  echo '<option value="'.$val.'"';
  if ($val === $_GET['division']) echo ' selected="selected"';
  echo  ">$aff</option>";
}

Cordialement,

Kohntark -
0
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 16:53
Nikel, j'ai modifié le code avec la condition de Kohntark et ça sélectionne, Merci beaucoup vous deux pour votre aide précieuse, juste une dernière question, sur la 2e liste déroulante je mets ceci
                            <select name="famille1" size="1" onChange="window.location.href('requete.php?div=<?php echo $division?>&fam1='+ this.value)">

Sauriez vous pourquoi je reçois %20 avant le résultat de this.value
Exemple :
requete.php?div=ENDO&fam1=%20022
Au lieu de
requete.php?div=ENDO&fam1=022 ?

Cordialement,
Antoine
0
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 16:59
Erreur bête de ma part, c'est dans la valeur de <option> j'avais mis un espace :D
Merci à vous
0
menel_20 Messages postés 2 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 15 juin 2009
15 juin 2009 à 17:03
oui le %20 n'est que le petit espace entre le |&fam1='+| et le |this.value)|
si tu tape |echo $division?>&fam1='+this.value)">| tu ne l'auras plus
voila
0
menel_20 Messages postés 2 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 15 juin 2009
15 juin 2009 à 17:06
et oui tu l'as pigé tout seul
(j'étais un peu en retard) :(
0
Shikapowa Messages postés 51 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 juin 2009
15 juin 2009 à 17:18
Merci quand même ^^
0
Rejoignez-nous