IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Menu déroulant dynamique basé sur mysql


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut Menu déroulant dynamique basé sur mysql
    bonjour à tous

    ça fait un bout de temps que je suis la dessus.

    voilà j ai une base PRODUITS avec table catégorie: id_catégorie,nom

    et une table articles:id-article,titre,id_catégorie .

    Rien de compliqué.

    j aimerai faire un menu déroulant avec pour chaque bouton, le nom de la catégorie et quand je passe dessus, j aurai la liste des produits de la catégorie.

    tout ça basé sur mes 2 tables.

    voici ce que j ai fait, je mets le css

    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
    <?php require_once('../Connections/maBoutique.php'); ?>
    
    <!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" />
    <title>Document sans titre</title>
     <style type="text/css">
     #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:100px;
     color:white;
     text-decoration:none;
     padding:5px;
     }
    #menu li a:hover {
     color:#FFD700;
     }
    #menu ul li ul {
     display:none;
     }
    #menu ul li:hover ul {
     display:block;
     }
    #menu li:hover ul li {
     float:none;
     }
    #menu li ul {
     position:absolute;
     }
    #menu {
     height:50px;
     }
    
     </style>
    
    </head>
    
    <body>
    <div id="menu">
    
    <?php
    echo "<ul>";
    $cats = mysql_query("select * FROM categories");
    while($cat = mysql_fetch_array($cats))
    {
      echo "<li><a href='#'>".$cat['nom']."</a></li>";
      $objs = mysql_query("select * FROM articles $cat");
      echo "<ul>";
      while($obj = mysql_fetch_array($objs))
      {
        echo "<li><a href='#'>".$obj['titre']."</a></li>";
      }
      echo "</ul>";
    }
    echo "</ul>";
    ?>
    </div>
    
    </body>
    </html>
    mais j obtiens cette erreur: j ai mis la ligne 57 en rouge dans mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\TEST\index.php on line 57
    je pense qu il doit y avoir une erreur dans mes requètes.

    voila si quelqu un peut me filer un coup de main

    merci

    stephi

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    je pense qu il doit y avoir une erreur dans mes requètes.
    Il vaut mieux les tester via une interface phpmyadmin avant de les convoquer dans le php. Ta requête retourne quelque chose dans cette interface ?

    j aimerai faire un menu déroulant avec pour chaque bouton, le nom de la catégorie et quand je passe dessus, j aurai la liste des produits de la catégorie.
    Si tu voulais vraiment dire "quand je passe dessus", PHP n'est pas le bon langage dans ce cas, il ne réagit pas aux événements souris.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    bonjour dendrite.

    oui c est du Js, mais on va dire je clique.

    voila mon code complet qui me permet de récupérer mes valeurs de catégories et articles

    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
    <?php require_once('../Connections/maBoutique.php'); ?>
    
    <!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" />
    <title>Document sans titre</title>
     <style type="text/css">
     #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:100px;
     color:white;
     text-decoration:none;
     padding:5px;
     }
    #menu li a:hover {
     color:#FFD700;
     }
    #menu ul li ul {
     display:none;
     }
    #menu ul li:hover ul {
     display:block;
     }
    #menu li:hover ul li {
     float:none;
     }
    #menu li ul {
     position:absolute;
     }
    #menu {
     height:50px;
     }
    
     </style>
    
    </head>
    
    <body>
    
    <div id="menu">
    <?php
    echo "<ul>";
    $cats = mysql_query("select * FROM catégories");
    while($cat = mysql_fetch_array($cats))
    {
      echo "<li><a href='#'>".$cat['nom']."</a></li>";
      $objs = mysql_query("select * FROM articles WHERE
    id_categorie=$cat['id_categorie']");
      echo "<ul>";
      while($obj = mysql_fetch_array($objs))
      {
        echo "<li><a href='#'>".$obj['titre']."</a></li>";
      }
      echo "</ul>";
    }
    echo "</ul>";
    ?>
    </div>
    
    </body>
    </html>
    mais j ai ce message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\TEST\index.php on line 59
    la ligne 59 est en rouge dans mon code.

    si tu peux me filer un coup de main ou m orienter car là je suis bloqué.

    merci

    stephi

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $objs = mysql_query("select * FROM articles WHERE
    id_categorie=$cat['id_categorie']");

    Je ne sûre de rien et n'ai pas le temps de regarder ton code.
    Essaie de passer par une variable intermédiaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql='SELECT * FROM articles where id_categorie='.$cat['id_categorie'];
    $objs=mysql_query($sql);
    Vérifie également que tes id_categorie sont bien des numériques.
    Bref, teste tes requêtes sql sur phpMyAdmin.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    Dendrite

    j'ai modifié mon php.

    je mets mon sql très simple de ma base produits:

    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
    -- Structure de la table `articles`
    -- 
     
    CREATE TABLE `articles` (
      `id-article` int(10) NOT NULL auto_increment,
      `titre` varchar(100) NOT NULL,
      `id_categorie` int(10) NOT NULL,
      PRIMARY KEY  (`id-article`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
     
    -- 
    -- Contenu de la table `articles`
    -- 
     
    INSERT INTO `articles` (`id-article`, `titre`, `id_categorie`) VALUES 
    (1, 'chemise', 1),
    (2, 'verre', 2),
    (3, 'pantalon', 1);
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `categorie`
    -- 
     
    CREATE TABLE `categorie` (
      `id_categorie` int(10) NOT NULL auto_increment,
      `nom` varchar(100) NOT NULL,
      PRIMARY KEY  (`id_categorie`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    -- 
    -- Contenu de la table `categorie`
    -- 
     
    INSERT INTO `categorie` (`id_categorie`, `nom`) VALUES 
    (1, 'Vètement'),
    (2, 'Ustensiles');
    et mon php avec le css pour être complet:

    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
    76
    77
    <?php require_once('Connections/MaBoutiquem.php'); ?>
     
    <!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" />
    <title>Document sans titre</title>
     <style type="text/css">
     #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:100px;
     color:white;
     text-decoration:none;
     padding:5px;
     }
    #menu li a:hover {
     color:#FFD700;
     }
    #menu ul li ul {
     display:none;
     }
    #menu ul li:hover ul {
     display:block;
     }
    #menu li:hover ul li {
     float:none;
     }
    #menu li ul {
     position:absolute;
     }
    #menu {
     height:50px;
     }
     
     </style>
     
    </head>
     
    <body>
    <div id="menu">
    <?php
    echo "<ul>";
    $cats = mysql_query("SELECT * FROM categorie");
    while($cat = mysql_fetch_assoc ($cats))
    {
    	echo "<li>";
    	echo "<a href='#'>".$cat['nom']."</a>";
    	$objs = mysql_query("SELECT * FROM articles WHERE id_categorie=".$cat['id_categorie']);
    	echo "<ul>";
    	while($obj = mysql_fetch_assoc ($objs))
    	{
    		echo "<li><a href='#'>".$obj['titre']."</a></li>";
    	}
    	echo "</ul>";
    	echo "</li>";
    }
    echo "</ul>";
    ?>
     
     
    </div>
     
     
    </body>
    </html>
    j ai l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\TEST\index.php on line 56
    je sèche. si vous avez une idée.?

    merci

    stephi

Discussions similaires

  1. Menu dynamique basé sur une table
    Par Anto03 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/07/2008, 12h24
  2. Réponses: 10
    Dernier message: 22/03/2007, 08h36
  3. menu déroulant dynamique
    Par jojo971 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2006, 14h43
  4. [Conception] Menu déroulant dynamique et administrable
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/05/2006, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo