Bonjour a tous, debutant en php, c'est un cours que je recois a l'ecole...

j'ai un projet a faire pour fin decembre. j'ai decidé de "refaire" un ebay. toute facon c'est a titre privé.

Venons-en au fait, je voudrais faire un joli menu vertical dynamique qui contiendra les categories et lorsqu'on clique, les sous categories.

ma base de donnée est en postgreSql, j'utilise des styles css.

mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php session_start();?>
<head>
<title>Menu vertical</title>
<link rel="stylesheet" href="./style.css" />
 
<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) 
{
	var d = document.getElementById(id);
		for (var i = 1; i<=10; i++) 
		{
			if (document.getElementById('smenu'+i)) 
			{
				document.getElementById('smenu'+i).style.display='none';
			}
		}
	if (d) 
	{
		d.style.display='block';
	}
}
//-->
</script>
</head>
 
<body>
 
<dl id="menu">
<?php 		
	include ('connect.php');
	$queryparent = "select * from projet.categorie where id_categorie = id_categorie_parent";
	$resultparent = pg_exec($cnx,$queryparent);
	if(!$resultparent)
	{
		echo("Echec de la requete: $queryparent");
		exit();
	}
	else
	{
		$i=0;
		while($listeparent = @pg_fetch_array($resultparent,$i++))
		{
			echo("<dt onClick=\"javascript:montre('smenu$listeparent[id_categorie]');\">$listeparent[nom]</dt>");
			$queryenfant = "select * from projet.categorie where id_categorie_parent = $listeparent[id_categorie] AND id_categorie <> id_categorie_parent";
			$resultenfant = pg_exec($cnx,$queryenfant);
			if(!$resultenfant)
			{
				echo("Echec de la requete: $queryenfant");
				exit();
			}
			else
			{
				echo("");
				echo("<dd id=\"smenu+$i\">
				<ul>
				");
				$j=0;
				while($listeenfant = @pg_fetch_array($resultenfant,$j++))
				{
					echo("<li><a href=\"tagada.html\">$listeenfant[nom]</a></li>
					");
				}
				echo("</ul>
				</dd>
				");
			}
		}
	}
	?>
</dl>
 
</body>
</html>
ma feuille de style :
<style type="text/css">
<!--
body {
margin: 0;
padding: 0;
background: white;
font: 80% verdana, arial, sans-serif;
}
dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
#menu {
position: absolute;
top: 0;
left: 0;
}
dl#menu {
width: 15em;
}
dl#menu dt {
cursor: pointer;
margin: 2px 0;;
height: 20px;
line-height: 20px;
text-align: center;
font-weight: bold;
border: 1px solid gray;
background: #ccc;
}
dl#menu dd {
border: 1px solid gray;
}
dl#menu li {
text-align: center;
background: #fff;
}
dl#menu li a, dl#menu dt a {
color: #000;
text-decoration: none;
display: block;
border: 0 none;
height: 100%;
}

dl#menu li a:hover, dl#menu dt a:hover {
background: #eee;
}

#mentions {
font-family: verdana, arial, sans-serif;
position: absolute;
bottom : 205px;
left : 421px;
color: #000;
background-color: #ddd;
}
#mentions a {text-decoration: none;
color: #222;
}
#mentions a:hover{text-decoration: underline;
}

-->
</style>
mon probleme :

mon menu est "ouvert" des l'ouverture de la page alors qu'il faudrait cliquer sur la categorie principale pour que ca s'ouvre... je comprends pas pourquoi ca fait ca!
Je pense que le code est assez simple, et ca fonctionne lorsqu'il n'y a pas de php dedans! donc c'est bien moi qui ai mis le souc mais je ne trouve pas comment
Je peux poster un screenshot du resultat si c'est nécessaire.

Un grand merci d'avance