Aller au contenu

Cadeau : Script de navigation par menu déroulant sans javascript


patricia.b

Sujets conseillés

Bonjour,

N'étant pas très experte en php, j'ai perdu un temps fou à d'abord chercher "toute seule" comment parvenir à faire un menu déroulant avec liens sans utiliser de javascript, puis à parcourir différents forums... et comme je ne suis pas seule dans ce cas, je livre "mon" script à ceux à qui cela peut servir.

Il est basé sur un script proposé par le Site du Zéro (encore merci à lui...), et je l'ai 'adapté pour qu'il puisse récupérer les données d'une BDD mysql. Ce menu déroulant permet donc de renvoyer l'utilisateur vers une page interne ou externe.

Il nécessite la création d'une page de traitement que vous appelerez : redirection_navigation.php. Pour réaliser cette page :

<?php
/* on vérifie que l'information "menu_destination" existe ET qu'elle n'est pas vide : */
if ( isset($_POST['menu_destination']) && !empty($_POST['menu_destination']) )

/* si c'est bien le cas (existe ET non-vide à la fois), on redirige le visiteur vers sa valeur choisie de l'information "menu_direction" : */
{header("Location: ".$_POST['menu_destination']."");}

/* sinon, on le redirige vers une autre page utile : */
else
{header("Location: http://");} /*vous mettez entre http:// et " l'url complète de la page concernée*/

Pour la page sur laquelle figure le menu déroulant, je ne vous mets que ce qui concerne le menu déroulant. Vous ajouterez vos indications de connexion à votre BDD et de déconnexion...

<form method="post" action="redirection_navigation.php">		
<select name="menu_destination">

<?php

/*On récupère les données de la BDD*/
$query = mysql_query("SELECT nom,url FROM table ORDER BY nom ASC");

/*On fait une boucle pour lister le contenu de la BDD*/
while ($row = mysql_fetch_row($query))
{

/*$row[1] correspond, dans mon exemple au champ de l'url et $row[0] à celui du nom*/
echo "<option value=\"$row[1]\">$row[0]</option>";
}
?>
</select>
<input type="submit" value="Aller">
</form>

Une précision concernant la ligne :

$query = mysql_query("SELECT nom,url FROM table ORDER BY nom ASC");

Après SELECT, je n'ai mis volontairement que 2 données pour limiter le champ de recherche dans la BDD et comme je voulais que le résultat apparaisse en ordre alphabétique, j'ai ajouté : ORDER BY nom ASC. Bien sûr, vous remplacez : nom, url par les champs de votre BDD et table par le nom de votre table.

Ce script fonctionne parfaitement chez moi.

Modifié par patricia.b
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...