menu deroulant php

Eléphanteau du PHP | 19 Messages

01 mai 2008, 21:05

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

Invité
Invité n'ayant pas de compte PHPfrance

01 mai 2008, 22:11

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>

lux
Eléphant du PHP | 372 Messages

01 mai 2008, 23:29

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:

Eléphanteau du PHP | 19 Messages

02 mai 2008, 21:34

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>'; 
} 
?> 
 

Mammouth du PHP | 1668 Messages

03 mai 2008, 09:15

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...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 1996 Messages

03 mai 2008, 10:55

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é
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 19 Messages

03 mai 2008, 18:15

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...

ViPHP
ViPHP | 1996 Messages

03 mai 2008, 22:24

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)"
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 19 Messages

04 mai 2008, 17:54

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.*!:;à)²ç

ViPHP
ViPHP | 1996 Messages

05 mai 2008, 09:05

Ok montre moi ton code dans ville.php qui traite les liens.
Ajoute aussi la source HTML où il y a le select.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 19 Messages

07 mai 2008, 19:29

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