La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  menu en php/sql
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: menu en php/sql  (Lu 698 fois)
menu en php/sql
« sur: le 23-10-2010 a 00:49:12 »
quaresma
Membre récent
*

Hors-Ligne

Messages: 11



Je suis un lama!

Voir le Profil    E-Mail
Répondre avec citation

Bonsoir,
je suis en train de faire un menu en php/sql, mais j'ai quelques problèmes.

Voici le code de la page "presentation.php" :

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="keywords" content=" "/>
<meta name="description" content=" "/>
<title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" href="css/style_menu.css" type="text/css" />
    <script type="text/javascript" src="js/functions.js"></script>
<style type="text/css">
<!--
body {
   margin-top: 0px;
}
-->
</style></head>
<body bgcolor="#333333">
<table width="1050" border="0" align="center" cellpadding="0" cellspacing="0" style="background: #000; height: 421px; min-height: 421px;">
<tr>
<td colspan="3" style="height: 50px; min-height: 50px; max-height: 50px;">&nbsp;</td>
</tr>
<tr>
<td width="183" valign="top" style="width: 145px;"><?php include"menu/menu.php" ?></td>
<td width="850" style="width: 682px; background: #fff;">contenu</td>
<td width="17" style="background: #000;">&nbsp;</td>
</tr>
</table>

</body>
</html>


Voici le code du CSS :

Code:
#menu {
width: 150px;
background: #000;
margin: 0;
}
.menu_niv2 { display: none; }
.menu_niv1 a {
display: block;
background: #333;
color: #fff;
text-decoration: none;
text-align: center;
}
.menu_niv1 a:hover {
display: block;
background: #666;
color: #fff;
text-decoration: underline;
text-align: center;
}
.menu_niv2 a {
color: #333;
background: #ccc;
text-decoration: none;
text-align: center;
display: block;
}
.menu_niv2 a:hover {
color: #333;
background: #aaa;
text-decoration: underline;
text-align: center;
display: block;
}


Voici le code du js :

Code:
function afficheMenu(menu) {
// generation du nom du sous menu que l'on veut gerer (afficher / cacher)
var sousMenu='sous' + menu;
// on recupere son etat
var etatSousMenu=document.getElementById(sousMenu).style.display;
// on cree un array de tous les menus de niveau 1, donc ceux qui ont la classe 'menu_niv1'
var listeNiv1=document.getElementsByClassName('menu_niv1');
// on boucle sur ces elements
for (var i=0; i<listeNiv1.length; i++) {
// on recupere l'id du menu courant
var idCourant=listeNiv1[i].id;
// si l'id courant est le meme que le menu que l'on a clique alors on traite le sous menu
// sinon on le cache et on passe au suivant
if (idCourant==menu) {
if (etatSousMenu=='block') {
document.getElementById(sousMenu).style.display='none';
} else {
document.getElementById(sousMenu).style.display='block';
}
} else {
// attention, si on cache, on doit cacher le sous menu du menu courant, il faut donc creer une nouvelle variable pour cacher celui-ci
var sousMenuTemp='sous' + idCourant;
document.getElementById(sousMenuTemp).style.display='none';
}
}
}


Et, enfin le code du menu :

Code:
<div id="menu">
<?php
require("identification/connexion_sql.php");
// on attaque le php ici
// dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
$req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");
$rep1 = mysql_query($req1);
while($row1 = mysql_fetch_array($rep1)) {
// on affiche le menu de niveau 1
echo "<div class=\"menu_niv1\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this.id)\"><a href=\"#\">".$row1['lib_menu']."</a></div>\n";
// ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien
$req2="SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu']."' ORDER BY ordre_menu"  or die ("impossible d'effectuer la requête");
$rep2=mysql_query($req2);
$nb2=mysql_num_rows($rep2);
if (isset($nb2) && $nb2>0) {
echo "<div id=\"sousmenu".$row1['id_menu']."\" class=\"menu_niv2\">\n";
while ($row2=mysql_fetch_array($rep2)) {
echo "<a href=\"#\">".htmlentities($row2['lib_menu'])."</a>\n";
}
echo "</div>\n";
}
}
?>
</div>

le premier problème est le décalage du menu par rapport à la zone blanche.
Normalement, le menu doit être à la même hauteur que la zone blanche, mais ce n'est pas le cas
Je ne comprends pas pourquoi il y a ce problème.

Autre problème, le menu ne fonctionne pas du tout sous IE.

Le résultat est visible ici : http://www.la-grange-sardieres.fr/site%20Fab/presentation.php

Pensez-vous pouvoir m'aider ?

Merci beaucoup et bonne soirée

Rapporter au modérateur  

Re:menu en php/sql
« Répondre #1 sur: le 23-10-2010 a 09:49:51 »
darkelda
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 46





Voir le Profil    WWW    E-Mail
Répondre avec citation

C'est totalement dégueulasse sémantiquement parlant comme code, pas étonnant que ça ne marche pas !

Code:
$req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");

La blague ! Il sert à quoi ton die() dans une chaine de caractère Pas étonnant que t'ais des caractères qui se greffe dans ta page et te décale tout... En plus ton order by sera forcément ASC, çà ne mange pas de pain de le préciser.

Ensuite évite d'utiliser des doubles quotes :

Code:
echo "<div class=\"menu_niv1\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this.id)\"><a href=\"#\">".$row1['lib_menu']."</a></div>\n";


pourrais devenir

Code:
echo '<div class="menu_niv1" id="menu"'.$row1['id_menu'].'" onclick="afficheMenu(this.id)"><a href="#">"'.$row1['lib_menu'].'"</a></div>'.'\n";

Rapporter au modérateur  

Webmaster/Développeur indépendant
SIRET : 533 914 107 00024


www.darkelda.com
Re:menu en php/sql
« Répondre #2 sur: le 23-10-2010 a 13:13:32 »
quaresma
Membre récent
*

Hors-Ligne

Messages: 11



Je suis un lama!

Voir le Profil    E-Mail
Répondre avec citation

le problème ne vient pas de là malheureusement.

Rapporter au modérateur  
Re:menu en php/sql
« Répondre #3 sur: le 23-10-2010 a 13:41:36 »
darkelda
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 46





Voir le Profil    WWW    E-Mail
Répondre avec citation

Effectivement, le lien que tu fournis n'a rien à voir avec le code que tu as transmis. 

Car en faisant un copié collé du code que tu as posté, voilà le résultat : http://preprod.darkelda.net/fw-22951

Rapporter au modérateur  

Webmaster/Développeur indépendant
SIRET : 533 914 107 00024


www.darkelda.com
Re:menu en php/sql
« Répondre #4 sur: le 23-10-2010 a 13:56:34 »
quaresma
Membre récent
*

Hors-Ligne

Messages: 11



Je suis un lama!

Voir le Profil    E-Mail
Répondre avec citation

Le code que j'ai transmis est le bon.

Tu es bien allé sur cette page ?

http://www.la-grange-sardieres.fr/site Fab/presentation.php

Rapporter au modérateur  
Re:menu en php/sql
« Répondre #5 sur: le 23-10-2010 a 14:01:54 »
darkelda
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 46





Voir le Profil    WWW    E-Mail
Répondre avec citation

Jai copié collé ton code et j'ai çà comme résultat.

http://preprod.darkelda.net/fw-22951/

Donc c'est qu'il y a un problème.

Rapporter au modérateur  

Webmaster/Développeur indépendant
SIRET : 533 914 107 00024


www.darkelda.com
Re:menu en php/sql
« Répondre #6 sur: le 23-10-2010 a 14:09:18 »
quaresma
Membre récent
*

Hors-Ligne

Messages: 11



Je suis un lama!

Voir le Profil    E-Mail
Répondre avec citation

Attends je vérifie le code

Rapporter au modérateur  
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg