Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2011, 13h09   #1
Invité régulier
 
Inscription : septembre 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 21
Points : 5
Points : 5
Par défaut Menu dynamique recursif dropdown php/mysql

Bonjour,

je n'ai pas l'habitude de demander de l'aide sur les forums, car la plupart du temps je trouve les réponses à mes questions.
Mais la, il s'agit d'un problème complexe et n'étant pas un AS dans ce domaine je fais appelle à vôtres indulgence et à vos connaissances.
J'espere que je post dans la bonne rubrique.

Rentrons dans le vif du sujet :

Je développe actuellement un site web, php/mysql, pour le menu, je pensais récupérer le menu dropdown que j'avais fait il y a des années en ajoutant la connexion à la base de données, une récursivité qui m'affichait un genre de Template pour chaque entrée trouvé :

javascript :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function sw(div, img) {
      var d = document.getElementById(div);
      var i = document.getElementById(img);
 
      if (d.style.display == 'none') {
         d.style.display = 'block';
         i.src = '../images/arrow-down.png';
      } else {
         d.style.display = 'none';
         i.src = '../images/arrow-right.png';
      }
   }
php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
$cnx = mysql_connect( "localhost", "user", "password" );
$db= mysql_select_db( "site" );
$sql = "SELECT * FROM menu";
$requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
 
while( $result = mysql_fetch_array( $requete ) )
 
{
?>
<div onclick="sw('<?php echo $result["titlem"]; ?>', '<?php echo $result["id"]; ?>')"><img src="../images/arrow-right.png" border="0" id="<?php echo $result["id"]; ?>"<a href="#"><?php echo $result["titlem"]; ?></a></div>
<div style="display:none;" id="<?php echo $result["titlem"];?>"
<p class="sub-menu"><a href="#"><?php echo $result["title-submenu"];?></a></p>
</div>
<img src="../images/portal-break.png">
<?php
}
Et effectivement cela fonctionne, sauf que ça ne fonctionne que pour les menus pas pour les sous-menus.
Après pas mal de recherches sur le net, j'ai trouvé une solution qui fonctionne parfaitement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
<?php
$cnx = mysql_connect( "localhost", "user", "password" );
$db= mysql_select_db( "site" );
$query = "SELECT id, parent, nom FROM menu ORDER BY nom ASC";
$result = mysql_query($query);
 
$categories = array();
 
while($row = mysql_fetch_array($result)) {
        $categories[] = array(
        'parent_id' => $row['parent'],
        'categorie_id' => $row['id'],
        'nom_categorie' => $row['nom']
        );
}
 
function afficher_menu($parent, $niveau, $array) {
 
$html = "";
$niveau_precedent = 0;
 
if (!$niveau && !$niveau_precedent) $html .= "\n<ul>\n";
 
foreach ($array AS $noeud) {
 
        if ($parent == $noeud['parent_id']) {
 
        if ($niveau_precedent < $niveau) $html .= "\n<ul>\n";
 
        $html .= "<li><a href=\"?categorie=" . $noeud['categorie_id'] . "\">" . $noeud['nom_categorie'] . "</a>";
//$html .= "<li>" . $noeud['nom_categorie'];//
 
        $niveau_precedent = $niveau;
 
        $html .= afficher_menu($noeud['categorie_id'], ($niveau + 1), $array);
 
        }
}
 
if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "</ul>\n</li>\n";
else if ($niveau_precedent == $niveau) $html .= "</ul>\n";
else $html .= "</li>\n";
 
return $html;
 
}
 
?>
<?php echo afficher_menu(0, 0, $categories);?>
Cela fonctionne et c'est génial, sauf que voila, j'aimerais pouvoir modifier le code pour l'intégrer dans mon premier script ou alors pouvoir le modifier avec des types spéciaux css, et une fonction dropdown en java comme mon premier script.

Je vous remercie par avance pour vos réponses, en espérant trouver et surtout comprendre la solution.

Amicalement,
Fabien493
fabien493 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h24.


 
 
 
 
Partenaires

Hébergement Web