Vous n'êtes pas identifié.
mon objectif faire un menu déoulant horizontal dynamique.
exemple:
catégorie 1
|
|
|
v
article 1 de la catégorie 1
article 2 de la catégorie 1
article 3 de la catégorie 1
....
Mes soucis:
le liens les ateliers gourmands qui n'est pas alignés avec les autres
l'erreur qui s'affiche:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mimila/www/base_beryl/menu_deroulant.php on line 17
menu_deroulant.php
<div id="navigation">
<li><a id="menu" title="Accueil" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/base_beryl/index.php">
Accueil</a></li>
<li><a id="menu" title="Livre d'or" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/base_beryl/livredor.php">
Livre d'or</a></li>
<ul>
<li onmouseover="montre('smenu5',true);" onmouseout="montre('smenu5',false);">
<?php
//On est théoriquement déjà connecté à la BD
//On selectionne les données
// on se connecte à la base de données
include('connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$cat = mysql_query("SELECT id,nom_categorie FROM CATEGORIES ORDER BY id ASC");
while($cat = mysql_fetch_array($cat))// objectif afficher la liste des catégories
{
echo '<a id="menu" title="'.$cat['nom_categorie'].'">'.$cat['nom_categorie'].'</a>';
}
?>
<ul id="smenu5">
<li onmouseover="montre('smenu51',true);" onmouseout="montre('smenu51',false);"><a href="#">
<?php
//On est théoriquement déjà connecté à la BD
//On selectionne les données
// on se connecte à la base de données
include('connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$result = mysql_query("SELECT * FROM CONTENU WHERE id_categorie=1");
while($affiche = mysql_fetch_array($result)) // afficher les articles qui correspondent à la catégorie 1
{
echo '<li><a id="sousmenu" title="'.$affiche['titre'].'" href="page.php?id='.$affiche['id'].'">'.$affiche['titre'].'</a></li>';
}
?>
</li>
</ul>
</div>est-ce que l'on peut m'aider pour l'erreur SQL ?
Dernière modification par fleur69 (29-12-2011 22:26:14)
Hors ligne

Salut fleur69,
A vue de nez, tu n'as pas qu'une erreur sql, tu as aussi des erreurs d'imbrications de tes listes...
Schématiquement, ça devrait te donner un truc comme ça :
<div id="menu">
<ul>
<!--Première catégorie-->
<li><a href="#">Catégorie 1</a>
<!--Article première catégorie-->
<ul>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
</ul>
<!--Fin article première catégorie-->
<!--Fin première catégorie-->
</li>
<li><a href="#">Catégorie 2</a>
<ul>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
</ul>
</li>
<li><a href="#">Catégorie 3</a>
<ul>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
</ul>
</li>
</ul>
</div>Côté SQL :
SELECTION DES CATEGORIES
//boucle while donc récupération des id de chaque catégorie
{
//Affichage des catégories sans fermer la boucle while
SELECTION DES ARTICLES
//re boucle while pour sélectionner les articles en fonction de la catégorie
//select article from ma table where categorie = id de la categorie
{
//Affichage des articles
}
//On ferme la première boucle while
}Pour ton erreur SQL, tu t'est planté dans l'appel des variables :
$categorie = mysql_query("SELECT id,nom_categorie FROM CATEGORIES ORDER BY id ASC");
while($cat = mysql_fetch_array($categorie))// objectif afficher la liste des catégories
{
echo '<a id="menu" title="'.$cat['nom_categorie'].'">'.$cat['nom_categorie'].'</a>';
}
Si tu as besoin de plus d'aide, il faudra m'indiquer qu'elle est le code + style CSS que tu utilises pour créer ton menu déroulant.
Hors ligne
désolé cette fin de semaine je n'ai pas trop eu le temps de m'occuper de ce menu, je vais essayer de m'en occuper dans la journée mais en effet j'aurais certainement besoin d'aide.
Dernière modification par fleur69 (02-01-2012 11:09:20)
Hors ligne
Pas de soucis, d'autant plus que je me le suis déjà fabriqué en full CSS
... et bonne année en passant.
Hors ligne
re-coucou,
j'aimerais savoir ce que tu penses de mon code. est-ce que je suis encore à coté de la plaque?
<div id="navigation">
<ul>
<li><a id="navigation" title="Accueil" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/base_beryl/index.php">
Accueil</a></li>
<li><a id="navigation" title="Livre d'or" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/base_beryl/livredor.php">
Livre d'or</a></li>
<?php
//On selectionne les données
// on se connecte à la base de données
include('connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$categorie = mysql_query("SELECT id,nom_categorie FROM CATEGORIES ORDER BY id ASC");
while($cat = mysql_fetch_array($categorie))// objectif afficher la liste des catégories
{
echo '<a id="navigation" title="'.$cat['nom_categorie'].'">'.$cat['nom_categorie'].'</a>';
echo '<ul>';
$result = mysql_query("SELECT * FROM CONTENU WHERE id_categorie");
while($affiche = mysql_fetch_array($result)) // afficher les articles qui correspondent à la catégorie
{
echo '<li><a id="navigation" title="'.$affiche['titre'].'" href="page.php?id='.$affiche['id'].'">'.$affiche['titre'].'</a></li>';
}
}
?>
</ul>PS: je n'ai pas encore fais le CSS
PS²: ah voui Bonne année!!!
Dernière modification par fleur69 (02-01-2012 15:50:29)
Hors ligne
C'est presque ça
...tu as une erreur dans la seconde requête sql
$result = mysql_query("SELECT * FROM CONTENU WHERE id_categorie");Dans celle-ci, tu demandes à tous sortir de la bd par le biais de l’astérisque (*) alors que tu as besoin de l'id et du titre seulement
SELECT id, titre FROM CONTENU
La, tu gagne quelques milliseconde sur ta requête que tu gagnes en rapidité d'affichage.
Ensuite dans ta requête tu as :
WHERE id_categorie
...qui veut dire en gros : "dont le champ id_categorie"...ce qui signifie qu'il te manque un bout de requête puisque tu cherches à sortir les données de la table CONTENU en rapport avec les données de la table CATEGORIES. Ta requête doit dire en gros :"dont le champ id_categorie est égal au champ id de la table CATEGORIES". Je te laisse chercher un peut ^^.
Ensuite il y a soucis au niveau de tes listes car si ton code fonctionnait, il te sortirait un truc du genre :
<ul>
<li>**</li>
Catégorie 1
<ul>
<li>article</li>
<ul>
<li>article</li>
Catégorie 2
<ul>
<li>article</li>
</ul>
Alors qu'il faut :
<ul>
<li>Catégorie 1
<ul>
<li>Page 1</li>
<li>Page 2</li>
</ul>
</li>
</ul>
Sert toi du tutoriel qui est sur ce site Menu horizontal déroulant en CSS pour réaliser la structure de ton menu (c'est ce que j'ai fais:)).
Hors ligne
T'est vraiment pas loin du résultat que tu cherches à avoir, c'est pour ça que je te laisse chercher un peut. Si vraiment tu galères trop, je te donnerais le code au complet avec comme base le CSS du lien que j'ai posté dans mon précédent poste.
Hors ligne
Dans celle-ci, tu demandes à tous sortir de la bd par le biais de l’astérisque (*) alors que tu as besoin de l'id et du titre seulement
Code:
SELECT id, titre FROM CONTENULa, tu gagne quelques milliseconde sur ta requête que tu gagnes en rapidité d'affichage.
Ensuite dans ta requête tu as :Code:
WHERE id_categorie...qui veut dire en gros : "dont le champ id_categorie"...ce qui signifie qu'il te manque un bout de requête puisque tu cherches à sortir les données de la table CONTENU en rapport avec les données de la table CATEGORIES. Ta requête doit dire en gros :"dont le champ id_categorie est égal au champ id de la table CATEGORIES". Je te laisse chercher un peut ^^.
est-ce que je peux faire ça à la place ?
$result = mysql_query("SELECT id, titre FROM CONTENU WHERE id_categorie = '$categorie'");Hors ligne
Non car "$categorie" est un tableau qui contient tout ce que tu demandes...toi ce qu'il te faut c'est un seul élément de ce tableau et en l’occurrence l'identifiant de la catégorie puisque c'est par l'intermédiaire de celle-ci que tu peut trouver les données associés au 2 tables :
SELECT id, titre FROM CONTENU WHERE id_categorie='".$cat['id']."'
J' ai l'impression que tu n'as pas très bien pigé le truc...
Première boucle while sert à récupérer l'id + titre de chaque catégorie.
$cat['id'] correspond à un id à chaque tour de la boucle.
La seconde boucle while sert à récupérer id + titre de chaque article en rapport avec l'id de la table CONTENU sortie à chaque tour de la boucle.
Premier tour de boucle dans la table CATEGORIES :
champ id = variable $cat['id'] = 1
nom_categorie = variable $cat['nom_categorie'] = Titre de la catégorie
Premier tour de boucle dans la table CONTENU:
Dans la table CONTENU il y a un champ id_categorie qui correspond au champ id de la table CATEGORIES. Pour récupérer les bonnes entrées, il faut comparer celle-ci.
champ id_categorie = variable $affiche_page['id'] =1 au premier tour de boucle
Ps: si mes explications te saoule, tu me le dit
!
Hors ligne
Alors...toujours pas de résultats??
Hors ligne
pas encore eu le temps de m'y pencher (mon fils squatte mes genoux et don pas évident
) mais je continu a me creuser la tête pour que <li> soit répété plusieurs fois et jusqu'à ce qu'il n'y est plus de donné dans id de la table CONTENU
Hors ligne
Bon, je donne la solution. A toi de voir si tu continues à te creuser les méninges pour trouver seule ou pas...
Dans une page teste.php, copie/colle le code ci-dessous :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<title>Menu horizontal déroulant</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/CSS">
#menu {
height:50px;
}
#menu ul {
margin:0;
padding:0;
list-style-type:none;
text-align:center;
}
#menu li {
float:left;
margin:auto;
padding:0;
background-color:black;
}
#menu li a {
display:block;
width:150px;
color:white;
text-decoration:none;
padding:5px;
border-left:1px solid red;
}
#menu li a:hover {
color:#FFD700;
background-color:green;
}
#menu ul li ul {
display:none;
}
#menu ul li:hover ul {
display:block;
}
#menu li:hover ul li {
float:none;
}
</style>
<!--[if !IE]> <-->
<style type="text/CSS">
#menu li ul {
position:absolute;
}
</style>
<!--> <![endif]-->
<!--[if IE 8]>
<style type="text/CSS">
#menu li ul {
position:absolute;
}
</style>
<![endif]-->
<meta name="description" content="Exemple de menu horizontal déroulant accessible créé grâce aux CSS" />
</head>
<body>
<div id="menu">
<ul>
<?php
// on se connecte à la base de données
include('connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
//On va chercher le nom et l'id de la catégorie
$nom_categorie = mysql_query("SELECT id, nom_categorie FROM CATEGORIES ORDER BY id ASC");
while($cat = mysql_fetch_array($nom_categorie))
{
echo '<li><a title="'.$cat['nom_categorie'].'" href="categorie.php?id='.$cat['id'].'">'.$cat['nom_categorie'].'</a><ul>';
//On va chercher le titre et l'id des articles qui correspondent à la catégorie
$page = mysql_query("SELECT id, titre FROM CONTENU WHERE id_categorie='".$cat['id']."' ORDER BY id ASC");
while($affiche_page = mysql_fetch_array($page))
{
echo '<li><a title="'.$affiche_page['titre'].'" href="page.php?id='.$affiche_page['id'].'">'.$affiche_page['titre'].'</a></li>';
}
echo '</ul></li>';
//On ferme la première boucle while
}
?>
</ul>
</div>
</body>
</html>Un exemple en ligne ici : menu déroulant CSS + PHP
Hors ligne
merci mais je voulais le faire seule :( mais c'est très gentil.
fini les vacances pour moi et donc j'ai moins de temps a consacrer.
mais je vais essayer de me garder un moment dans le week end pour voir si je comprend tout.!!
un grand merci!!
Hors ligne
Je m'auto cite :
A toi de voir si tu continues à te creuser les méninges pour trouver seule ou pas...
Je t'est mis la solution mais tu n'étais pas obligé de la regarder 
Hors ligne
Propulsé par PunBB
© Copyright 2007
Forum créer un site