Menu déroulant en php

Fermé
ptichaton - 18 avril 2007 à 09:44
 Mélanie - 19 avril 2007 à 09:06
Bonjour,

Je souhaiterais transformer le code ci dessous en php pour que l'admin puisse ajouter ou supprimer un menu ou un sous-menu.
Mais après plusieurs essais, je n'y arrive pas.

Pouvez vous m'aider, me dire quel direction suivre (faire une boucle, ou je ne sais quoi) ?

Voici le code en html :

<html>
<head>
<title>Site </title>
<link rel="stylesheet" type="text/css" href="css/style.css">

<script type="text/javascript">

window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}

</script>
</head>

<body>
<dl>
<dt onclick="javascript:montre('smenu1');"><a href="chiffres.php" class="menu" target="contenu">Menu1</a></dt>
<dd id="smenu1">
<ul>
<li><a href="exemple.php" target="contenu">Sous-Menu exemple</a></li>
<li><a href="exemple.php" target="contenu">Sous-Menu</a></li>
<li><a href="exemple.php" target="contenu">Sous-Menu</a></li>
</ul>
</dd>

<dt onclick="javascript:montre('smenu2');"><a href="chiffres.php" class="menu" target="contenu">Menu 2</a></dt>
<dd id="smenu2">
<ul>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>
</ul>
</dd>

<dt onclick="javascript:montre('smenu3');"><a href="chiffres.php" class="menu" target="contenu">Menu 3</a></dt>
<dd id="smenu3">
<ul>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>
</ul>
</dd>

<dt onclick="javascript:montre('smenu4');"><a href="chiffres.php" class="menu" target="contenu">Menu 4</a></dt>
<dd id="smenu4">
<ul>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>
<li><a href="generalite.php" target="contenu">Sous-Menu</a></li>

</ul>
</dd>
</dl>
</body>

</html>
A voir également:

1 réponse

Tu veux/peux le faire avec une base de données?

Je l'ai jamais fait mais rapidement (qui dit rapidement dit à vérifier ^^ ) l'algo pourrait être (impro totale...):

Table menu :

Menu (1 = menu / 0 = sous menu)
Nom
Place

Formulaire d'entrée (histoire de bien faciliter la vie à ton ami):
Menu
Nom
Place (Xième ligne en partant du haut)

avec une fonction qui recalcule la place de chaques éléments de la base après car tu peux insérer un menu entre 2.

ouverture base de donnée table menu


une requête qui parcoure ta table avec un ORDER BY sur la place

une boucle qui parcoure le résultat de ta requête et qui affiche tout (grâce à des echos) selon une présentation menu/menu (grâce à une feuille de style) selon si:
menu=0 ou 1.

fermeture base de donnée


L'idée est réalisable, mais j'espère avoir été le plus clair possible.
0
OUPS désolé; j'avais pas vu que c'était un menu déroulant...

Ce qui donne donc plus simplement :

Un formulaire d'entrée d'un nom de menu

(dans une table menu avec: ID et nom )

ensuite, tu ouvres ta base, et tu fais ta boucle qui va chercher tous les noms et qui les places dans ton code grâce à des échos.
0
J'ai voulu faire avec une base de données je l'ai crée mais le problème c'est la boucle qui marche pas.
Il affiche toujours le meme menu. (J'ai pas encore fait pour le sous-menu mais c'est le meme principe)
Voici le code :
<html>
<head>
<title>Site</title>
<link rel="stylesheet" type="text/css" href="css/style.css">

<script type="text/javascript">

window.onload=montre;
function montre(id)
{
var d = document.getElementById(id);
for (var i = 1; i<=10; i++)
{
if (document.getElementById(''+<?php $Enr["id_sous_menu_p"] ?>))
{
document.getElementById(''+<?php $Enr["id_sous_menu_p"] ?>).style.display='none';
}
}
if (d)
{
d.style.display='block';
}
}

</script>
</head>

<body>
<?php
$IdC = mysql_connect ("localhost" , "root" , "");
if ($IdC == false)
{
echo ("Erreur de connexion");
}
else
{
$OkS = mysql_select_db ("base" , $IdC);
if ($OkS == false)
{
echo ("BDD inexistante");
}
else
{
$ReqSQL ="SELECT * FROM `sous_menu_presentation`";

$Res = mysql_query ($ReqSQL , $IdC);
$Nb = mysql_num_rows ($Res);
$Enr = mysql_fetch_array ($Res);

echo ("<dl>");

for ($i=1 ; $i<=$Nb ; $i++)
{
echo ("<dt onclick=\"javascript:montre(' ".$Enr["id_sous_menu_p"]."');\"><a href=\"". $Enr["lien_sous_menu_p"].".php\" class=\"menu\" target=\"contenu\">". $Enr["nom_sous_menu_p"] ."</a></dt>");
echo("<dd id=\"".$Enr["id_sous_menu_p"]."\">");
echo("<ul>");
for ($j=1 ; $j<=$Nb ; $j++)
{
echo ("<li><a href=\"exemple.php\" target=\"contenu\">Quelques chiffres</a></li>");
}
echo ("</ul>");
echo("</dd>");
}

echo("</dl>");
$OkL = mysql_free_result ($Res);
}
$OkF = mysql_close ($IdC);
}
?>
</body>
0
Pouvez vous m'aider s'il vous plait, je n'y arrive vraiment pas !
Merci
0