fabien493 | 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.
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 :
- 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 :
- $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 :
- <?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
|