Bonjour, à tous le monde
Voila je rencontre un petit problème avec mon code.
J'ai récuperé un script pour menu à trois niveaux en html qui fonctionne parfaitement en l'état avec les entrées en dur
Mais quand je veux intégrer mes requetes en php rien ne se fait comme prévu
Au lieu d'avoir un menu principal avec les categories qui s'affiche les une en dessous des autres
Elles s'affiche horizontalement avec des sous_menu qui s"entrecroisent !
ex nouveautés -> bouchons -> sous menu de bouchons -> sous menu de bouchon -> flacons puis sous menu de flacons etc
voici mon code
// menu_link() est une fonction pour la réécriture url
<!-- Navbar fixed top -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">C*******l</a>
</div>
<div class="navbar-collapse collapse">
<!-- Left nav -->
<ul class="nav navbar-nav">
<li><a href="index.php">home</a></li>
<li> <a href="#" class="dropdown-toggle" data-toggle="dropdown">catalogue <b class="caret"></b></a>
<?php
$host = 'localhost';
$login = '****';
$pass = '*****';
$bdd = '*******';
try
{
$pdo = new PDO('mysql:host=' . $host . ';dbname=' . $bdd, $login, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "<p>Erreur : " . $e->getMessage() . "</p>";
exit();
}
?>
<ul class="dropdown-menu">
<?php
// ici je recupére ma catégorie princpale ex pharmacie
$reponse = $pdo->query("SELECT id, parent_id, nom_" . $_SESSION['langue'] . " FROM categories WHERE parent_id = 0
AND etat = '1' ORDER BY position");
while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
{
echo '<li>
<a href="' . menu_link($donnees['id'], $donnees["nom_" . $_SESSION['langue'] . ""]) . '">' .
$donnees["nom_" . $_SESSION['langue'] . ""] . '<span class="caret"</span></a>';
?>
<ul class="dropdown-menu">
<?php
// ici je recupére la categorie enfant de la categorie principale
// ex pharmacie -> accessoires
$req = $pdo->prepare("SELECT id, parent_id , nom_" . $_SESSION['langue'] . " FROM categories WHERE parent_id = ?
AND etat = '1' ORDER BY position ASC");
$req->execute(array($donnees['id']));
while ($donnees2 = $req->fetch(PDO::FETCH_ASSOC))
{
echo '<li>
<a href="' . menu_link($donnees2['id'], $donnees2["nom_" . $_SESSION['langue'] . ""]) . '">'
. $donnees2["nom_" . $_SESSION['langue'] . ""] . '<span class="caret"></span></a>';
?>
<ul class="dropdown-menu">
<?php
//Ici je recupére la sous_ sous_categorie ex pharmacie->accessoires->piluliers
$rep = $pdo->prepare("SELECT id, parent_id , nom_" . $_SESSION['langue'] . " FROM categories WHERE parent_id = ?
AND etat = '1' ORDER BY position ASC");
$rep->execute(array($donnees2['id']));
while ($donnees3 = $rep->fetch(PDO::FETCH_ASSOC))
{
echo '
<li class="disabled"><a class="disabled" href="' . menu_link($donnees3['id'], $donnees3["nom_" . $_SESSION['langue'] . ""]) . '">
' . $donnees3["nom_" . $_SESSION['langue'] . ""] . '</a></li>';
}
}
}
?>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
j'aimerai que lorsque l'on positionne le curseur sur catalogue nous ayons les catégories principales qui s'affichent les une en dessous des autres pareils pour les sousmenus et sous sous menus
Voilà ce que j'obtiens
<!-- Left nav -->
<ul class="nav navbar-nav">
<li><a href="index.php">home</a></li>
<li><a href="#">Catalogues <span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a href="cat-Nouveautés-92.html">* Nouveautés !!<span class="caret"</span></a>
<ul class="dropdown-menu">
<li>
<a href="cat-Capots-capsules-1.html">* Capots, capsules<span class="caret"</span></a>
<ul class="dropdown-menu">
<li>
<a href="cat-C-Cosmétiques-138.html">C. Cosmétiques<span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a href="cat-C-Pharmacie-137.html">C. Pharmacie<span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a href="cat-C-Phytosanitaires-145.html">C. Phytosanitaires<span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a href="cat-Flacons-23.html">* Flacons<span class="caret"</span></a>
Au visuel
J'ai la 1er categorie qui s'affiche Nouveautés
ensuite j'ai la seconde categorie principale Capots, capsules qui s'affiche horizontalement
au lieu de ce positionner en dessous de la 1er catégorie Nouveautés
Ensuite je me retrouve avec la categorie enfant de la categorie principale Capots -Capsules
puis on revient à une categorie principal Flacons
et ainsi de suite!
Merci pour votre aide
cordialement
william_13
Bonsoir Carouge 10
déjà merci pour avoir si vite répondu!
il y a deux tag li qui sont pas fermés pour pouvoir créer l'interactivité des menus et sous menus
le 1er lorsque tu positionnes le curseur sur catalogue le menu deroulant des catégories principales se deplie (1er niveau)
le 2eme pour derouler le menu des categories enfants ex pharmacie-> accessoires (le 2eme niveau)
le 3eme lui defini le 3eme niveau de ton menu déroulant.
en bas à ce que j'obtiens
c'est le code html vu par le navigateur! pour voir son fonctionnement!
En lisant le code plus profondément, je pense que les < /li> et certains < /ul> devrait se placer après les while et non à la fin de ton code.
De plus, il manque une > aux span class="caret" après le 1er while.
Bonjour Carouge 10
De plus, il manque une > aux span class="caret" après le 1er while. résolu effectivement à force de reecrire j'avais omis de le fermer
merci pour la remarque
En faisant ce que tu as dit au sujet des</li>
et </ul>
le probléme reste le même
En deplaçant l'accollade fermante à la fin de la 1er boucle
tu as bien les categories qui se mettent les unes en dessous des autres mais ne fonctionnent plus
c'est à dire que tu ne deplies plus le sous -menu !
si il y a un appel bien sur.
Je cherche encore le pourquoi §
Merci pour tes aides
Bon Weekend
Cordialement
william_13
Il serait préférable pour élucider le problème de réduire le nombre de niveau à 1 et de voir si vous avez toujours le soucis.
Si ce n'est pas le cas, ajoutez un niveau et ainsi de suite.