Page 1 sur 1

menu deroulant php

Posté : 01 mai 2008, 21:05
par patrick777
Bonjour,


J'ai le code php suivant dont je me sert pour generer un certain nombre de liens, et
je voudrais au lieu que ceux ci s'affichent sous forme de liens normaux, qu'ils s'affichent
sous forme d'un menu déroulant, mais je n'ai aucune idée de la démarche à effectuer, si quelqu'un
pouvait me donner un tit coup de main, ça serait super sympa :)
<?php 
$sql = ("SELECT DISTINCT ville FROM rotisserie ORDER BY ville"); 
$result = mysql_query($sql); 

echo '<ul>'; 

while ($row = mysql_fetch_assoc($result)) { 
echo '<li><a href="rotisserie-'.preg_replace("/ /","-",$row['ville']).'.html">'.$row['ville'].'</li>';  
 
} 

echo '</ul>'; 
?>


Patrick

Posté : 01 mai 2008, 22:11
par Invité
POur créer un menu déroulant utilise la balise <SELECT> et </SELECT> et où à l'intérieur tu mettra les options de type <OPTION></OPTION>, ce qui te donnera:

Code : Tout sélectionner

<SELECT name="essai"> <OPTION value="lien1">Ville1</OPTION> <OPTION value="lien2">Ville2</OPTION> <OPTION value="lien3">Ville3</OPTION> </SELECT>

Posté : 01 mai 2008, 23:29
par lux
Normalement avec les indications données tu devrais t'en sortir. Un petit conseil quant à l'écriture :
$sql = ("SELECT DISTINCT ville FROM rotisserie ORDER BY ville"); 
serait mieux comme ça :
$sql = "SELECT DISTINCT ville FROM rotisserie ORDER BY ville"; 
Les parenthèses ne servent à rien. :wink:

Posté : 02 mai 2008, 21:34
par patrick777
merci pour vos indications,

j'ai maintenant le code suivant:

Le menu déroulant est ok, les villes apparaissent, mais je ne peux pas cliquer dessus...

<?php 

  // redirection 
 if (!empty($_POST_['load'])) 
 { 
 header("location:".$_POST_['ville'].""); 
 exit(); 
  } 

 ?> 


<form name="form" action="ville.php" method="post"> 
<input type="hidden" name="load" value="1"> 

<select name="ville" onchange="form.submit();"> 
<?php 
$sql = "SELECT DISTINCT ville FROM rotisserie ORDER BY ville"; 
$result = mysql_query($sql); 

while ($row = mysql_fetch_assoc($result)) { 
echo '<option value="rotisserie-'.preg_replace("/ /","-",$row['ville']).'.html"> '.$row['ville'].' </option>'; 
} 

?> 
</select> 

Si vous avez encore une tite idée,

Le code de ma page ville.php est le suivant:

 
<?php 
$ville = $_GET['ville'];  

$sql = ("SELECT nom,adresse,code_postal,ville FROM rotisserie WHERE ville='$ville' ORDER BY nom"); 
$result = mysql_query($sql); 

while ($row = mysql_fetch_assoc($result)) { 
echo '<ul>'; 
echo '<li>'.$row['nom'].'</li>'; 
echo '<li>'.$row['adresse'].'</li>'; 
echo '<li>'.$row['code_postal'].'</li>'; 
echo '<li>'.$row['ville'].'</li>'; 
echo '<li>'.$row['mail'].'</li>'; 
echo '</ul>'; 
} 
?> 
 

Posté : 03 mai 2008, 09:15
par katagoto
Pour ville.php je ne vois pas les balises <a></a>...
Si non si tu veux faire comme sur ogame (dans ton premier script) il faut voir du côté JS...

Posté : 03 mai 2008, 10:55
par Aureusms
Pour ville.php je ne vois pas les balises <a></a>...
Si non si tu veux faire comme sur ogame (dans ton premier script) il faut voir du côté JS...
Oui et non car s'il pointe son formulaire vers une page qui traite son POST avec un header derrière cela peut marcher... Je m'explique : Tu as :

Code : Tout sélectionner

<form Method="POST" name="form" action="page_traitement.php"> <select name="ville" onchange="form.submit();"> <option value="rotisserie-paris>Paris </option> <option value="rotisserie-Rouen> Rouen </option> </select> </form>
et la page page_traitement.php
if (!empty(_POST["ville"])
   {
   //idéalement on vérifie ici que la ville existe bien dans la base de donnée pour éviter les Hacks
   $url = "http://".$_POST["ville"];
   header ("Location:$url");
   }
Je pense que cela devrait marcher.
PS. Ajoute un bouton de type submit si ton visiteur n'a pas Javascript d'activé

Posté : 03 mai 2008, 18:15
par patrick777
en fait, pour la page ville.php, je pense qu'il n'y a pas de soucis, car avec les liens issus du php mais qui ne font pas parti du menu déroulant, il n'y a pas de soucis, le soucis doit venir du code pour le menu déroulant, mais je ne vois pas ou! je l'avoue, je suis tres tres tres nul en php en je tente d'apprendre sur le tas, mais c tres difficile pour moi...

Posté : 03 mai 2008, 22:24
par Aureusms
Ok en écrivant cela
<form name="form" action="ville.php" method="post"> 
<input type="hidden" name="load" value="1"> 

<select name="ville" onchange="form.submit();"> 
<?php 
$sql = "SELECT DISTINCT ville FROM rotisserie ORDER BY ville"; 
$result = mysql_query($sql); 

while ($row = mysql_fetch_assoc($result)) { 
echo '<option value="rotisserie-'.preg_replace("/ /","-",$row['ville']).'.html"> '.$row['ville'].' </option>'; 
} 

?> 
</select>
tu indiques à ton navigateur : dès que quelqu'un sélectionne un choix dans le menu déroullant et qui ne soit pas le premier -> envoi le résultat du POST vers Ville.php pour le traitement.
Si tu n'a pas de traitement dans ville.php -> pas de lien...

Cette ligne là :
<option value="rotisserie-'.preg_replace("/ /","-",$row['ville']).'.html"> '.$row['ville'].' </option>
sera la valeur qui sera envoyée à ville.php (attention valeur et non lien). En clait ton fichier ville.php recevra par exemple une valeur "rotisserie-bourg-en-bresse.html". Dans ce cas ton navigateur ne peu tpas comprendre que tu lui indiques un lien...

Mon exemple du précédent t'indiques comment traiter ces valeurs pour qu'elles deviennent des liens.

Sinon si tu veux continuer dans le sens où si l'utilisateur choisi -> lien, modifie ton onchange en onchange = window.location(valeur_de_l_option); qui donnera un truc du genre :

Code : Tout sélectionner

onchange="window.location=(this.options[this.selectedIndex].value)"

Posté : 04 mai 2008, 17:54
par patrick777
j'avoue que je ne comprend pas, j'essaie de faire ce que tu me dis, mais ça ne marche pas, ou plutot, je ne sais pas vraiment comment faire.

J'ai un traitement qui se fait dans ville.php par le deuxieme code, alors je saisis pas pour les liens, avec select et option, logiquement ça devrait me faire des liens, donc, en fait j'en pige pas une, je crois que je vais laisser tomber.

Je suis trop Nul pour me lancer dans des trucs comme ça.*!:;à)²ç

Posté : 05 mai 2008, 09:05
par Aureusms
Ok montre moi ton code dans ville.php qui traite les liens.
Ajoute aussi la source HTML où il y a le select.

Posté : 07 mai 2008, 19:29
par patrick777
Salut,

Merci de votre aide, j'ai en fait oublié l'idée de faire ce menu en php, pas une tres bonne idee pour le referencement apparement avec option et select, mais j'ai trouvé une autre solution, j'ai mis mes liens à la main :), je cherche a faire un menu déroulant en css, j'en ai trouvé des pas mal, mais je galere avec mes styles css, donc je mets ça de coté.

Aureusms, tu dois reconnaitre le code ;) merci encore...

Neamoins, j'ai encore un petit soucis de code que je vais vous soumettre bientot :(-

Patrick