Aller au contenu

Menu déroulant dynamique horizontal


Sujets conseillés

Posté

Bonjour,

J'ai un probleme avec l'un de mes scripts. Je veux faire un menu horizontal dynamique déroulant mais je n'y arrive pas. Je sais faire un menu horizontal déroulant mais je préfèrerais en faire un dynamique.

ALors mon souci est que mon sous-menu ne s'affiche pas au bon endroid, il s'affiche au 1er menu et non pas au bon menu :

captureyr.png

Alors qu'il devrait etre comme ca :

capture2my.th.jpg

C'est normal que ce soit en liste déroulante car je n'ai pas encore intégré le CSS.

Alros mon code source :

<div id="menu">
<?php
include("info.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
$categorie="SELECT * FROM categorie WHERE id_parent ='0'";
$resultat = mysql_query($categorie);
$id = $_GET['id'];
$souscategorie="SELECT * FROM categorie WHERE id_parent =$id ORDER BY id_parent";
$resultat1 = mysql_query($souscategorie);

while ($cat = mysql_fetch_array($resultat))
{
$code = stripslashes($cat['cat_id']);
$cat2 = stripslashes($cat['cat_name']);

echo '<ul>';
echo '<li><a href="./index.php?id='.$code.'">'.$cat2.'</a></li>';

while ($cat1 = mysql_fetch_array($resultat1, MYSQL_ASSOC))
{
$code23 = stripslashes($cat1['cat_id']) ;
$cat23 = stripslashes($cat1['cat_name']);
echo '<ul>';
echo '<li><a href="./index.php?id='.$code23.'">- '.$cat23.'</a></li>';
echo '</ul>';

}
echo '</li>';
echo '</ul>';

}
?>

</div>

Quel est le probleme ?

Merci d'avance

PS : Comment faire pour mettre l'endroit où on poste le code source spécialement en php ?

Posté

Bonjour,

Tu fermes 2 fois le tag </li>, celui après le </a> est certainement de trop, retire le donc :)

De plus, tes sous catégories bouclent sur un liste intégralement et tu ne séléctionnes qu'un seul parent, ce qui n'est pas bon, essai ceci dans l'idée :

<div id="menu">
<?php
include("info.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
$categorie="SELECT * FROM categorie WHERE id_parent ='0'";
$resultat = mysql_query($categorie);
$id = $_GET['id'];


echo '<ul>';
while ($cat = mysql_fetch_array($resultat))
{
$code = stripslashes($cat['cat_id']);
$cat2 = stripslashes($cat['cat_name']);


echo '<li><a href="./index.php?id='.$code.'">'.$cat2.'</a>';

$souscategorie=sprintf("SELECT * FROM categorie WHERE id_parent=%s ORDER BY id_parent",
mysql_real_escape_string($cat['cat_id']));
$resultat1 = mysql_query($souscategorie);
$cat1 = mysql_num_rows($resultat1);



if($sub) print '<ul>';
while ($cat1 = mysql_fetch_array($resultat1, MYSQL_ASSOC))
{
$code23 = stripslashes($cat1['cat_id']) ;
$cat23 = stripslashes($cat1['cat_name']);
echo '<li><a href="./index.php?id='.$code23.'">- '.$cat23.'</a></li>';
}

if($sub) print '</ul>';
echo '</li>';


}
?>
echo '</ul>';
</div>

je n'ai pas testé hein^^

PS, n'oublies pas d'échapper tes requêtes :)

Posté

Bonjour,

Merci de ta réponse.

Ok je vais l'enlever mais il me semble que j'avais testé en l'enlevant mais ca n'avait rien changé.

Ok je vais essayer ton code mais pas pour l'instant je ne suis pas chez moi. Je reposte un message ce soir pour te confirmer si ca a marché ;)

Ne t'inquiete pas je n'oublierais pas, c'est juste que je teste le script puis s'il marche je mets en place la sécurité ;)

Posté

J'ai une question : Quelle est la valeur de la variable $sub ? Car je vois que tu met cette variable dans une condition mais nul part avant t'affectes une valeur à $sub

Posté

Alors j'ai un autre soucis :

Mes sous-catégories ont la meme image que ma sous-catégorie, c'est une erreur dans le CSS mais je ne sais pas comment la résoudre. Regardez :

captureand.png

Je voudrais que les sous-catégories soit blanches et séparées par des bordures.

Voila mon CSS :

#menu, #menu ul {
padding: 0;
margin: 0;
list-style: none;
float:left;
width:100%;
font-size:90%;
text-align : center;
background-color : yellow;
}

#menu a {
display: block;
background:url("images/norm_left.gif")
no-repeat left top;
padding:5px 20%;
text-align : center;
text-decoration : none;
}

#menu li ul {
position: absolute;
width: 10em;
left: -999em;
}

#menu li:hover ul {
left: auto;
}


#menu li {
float: left;
width: 10em;
background: url("images/norm_right.gif") no-repeat right top;
text-align : center;
}

Posté

Salut,

C'est pas une erreur css, simplement lorsque écris les sélecteurs #menu li ou #menu a, tu définis des règles qui vont s'appliquer à tous les éléments <li> et <a> contenus dans #menu. Comme les règles s'appliquent en cascade et que la dernière énoncée prime, il te suffit donc à la suite d'écrire de nouvelles règles pour tes sous-catégories en les ciblant comme ça: #menu li ul li{} et #menu li ul li a{}

Veuillez vous connecter pour commenter

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



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