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 alimenté par base de données


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 33
    Par défaut Menu déroulant alimenté par base de données
    Je crois que je n'avais pas posté dans la bonne rubrique. avec mes excuses

    un petit menu déroulant alimenté par une base pdo.
    J'ai représenté ici les 2 premiers onglets.
    J'ai l'impression que j'ai compliqué les choses.
    Il doit bien y avoir moyen de simplifier tout ça ?

    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
    <?php
    $cat='Arts';
     
    ?>
    <ul id="menu-accordeon">
    <li><a href="#">Arts</a>
    <?php
    $reponse = $pdo_conn->query("SELECT id,Activite,Categorie FROM pages where Categorie='$cat'");
    while ($donnees= $reponse->fetch())
    // debut de la boucle
    {
    ?>
    <ul>
    <li><a href="essai2.php?variable=<?php echo $donnees['id']; ?>"><?php echo $donnees['Activite'];?></a></li>
    </ul>
    <?php
    $cat='SPORTS & SANTE';
    }
    $reponse->closeCursor();
    ?>
    <!-------------------------------------------------- -->
    <li><a href="#">SPORTS & SANTE</a>
    <ul>
    <?php
    $reponse = $pdo_conn->query("SELECT id,Activite,Categorie FROM pages where Categorie='$cat'");
    while ($donnees= $reponse->fetch())
    // debut de la boucle
    {
    ?>
    <li><a href="essai2.php?variable=<?php echo $donnees['id']; ?>"><?php echo $donnees['Activite'];?></a></li>
    <?php
    }
    $reponse->closeCursor();
    ?>
    </ul>
    </li>
    </ul>
    Fin du code

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    MERCI de mettre le CODE entre balises [CODE][/CODE] (icône # du menu)

    à tester :

    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
    <?php
    // requête : activité par catégorie
    $sql = "SELECT id, Activite, Categorie 
    	FROM pages
    	ORDER BY Categorie ASC, Activite ASC ";
    $reponse = $pdo_conn->query($sql);
     
    $cat_current = '';
    $cat_first = true;
    ?>
    	<ul id="menu-accordeon">
    <?php
    // debut de la boucle
    while( $donnees= $reponse->fetch() )
    {
    	// à chaque changement de catégorie
    	if( $donnees['Categorie'] != $cat_current )
    	{
    		$cat_current = $donnees['Categorie'];
     
    		if( !$cat_first ) // sauf pour le 1er <li>
    		{
    			// on referme ul et li
    ?>
    			</ul>
    		</li>
    <?php
    		}
    			// on affiche la catégorie "en cours"
    ?>
    		<li>
    			<a href="#"><?php echo $cat_current;?></a>
    			<ul>
    <?php
    	}
    ?>
    				<li><a href="essai2.php?variable=<?php echo $donnees['id']; ?>"><?php echo $donnees['Activite'];?></a></li>
    <?php
    			$cat_first = false; 
    }
    ?>
    			</ul>
    		</li>
     
    	</ul>
     
    <?php
    $reponse->closeCursor();
    ?>

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 33
    Par défaut Menu déroulant alimenté par base
    Ok


    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
     
    <?php
    // requête : activité par catégorie
    $sql = "SELECT id, Activite, Categorie 
    	FROM pages
    	ORDER BY Categorie ASC, Activite ASC ";
    $reponse = $pdo_conn->query($sql);
     
    $cat_current = '';
    $cat_first = true;
    ?>
    	<ul id="menu-accordeon">
    <?php
    // debut de la boucle
    while( $donnees= $reponse->fetch() )
    {
    	// à chaque changement de catégorie
    	if( $donnees['Categorie'] != $cat_current )
    	{
    		$cat_current = $donnees['Categorie'];
     
    		if( !$cat_first ) // sauf pour le 1er <li>
    		{
    			// on referme ul et li
    ?>
    			</ul>
    		</li>
    <?php
    		}
    			// on affiche la catégorie "en cours"
    ?>
    		<li>
    			<a href="#"><?php echo $cat_current;?></a>
    			<ul>
    <?php
    	}
    ?>
    				<li><a href="essai2.php?variable=<?php echo $donnees['id']; ?>"><?php echo $donnees['Activite'];?></a></li>
    <?php
    			$cat_first = false; 
    }
    ?>
    			</ul>
    		</li>
     
    	</ul>
     
    <?php
    $reponse->closeCursor();
    ?>

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Donc ?
    Ça donne quoi ? (code HTML généré)

  5. #5
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 33
    Par défaut Menu déroulant alimenté par base
    ça fonctionne bien :
    lorsque l'on clique sur le premier onglet : ARTS
    une liste d'activités se développent
    lorsque l'on clique sur le deuxième onglet : SPORTS et SANTE
    une liste d'activités correspondante se développe.
    Par contre j'ai encore 5 onglets à rajouter et à chaque fois je rentre une requête de plus
    Je me demande si je pourrais alléger mon code avec une seule requête.

    Merci

  6. #6
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Une seule requête : c'est ce que j'ai fait

  7. #7
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 33
    Par défaut Menu déroulant alimenté par base
    Super !

    Lorsque l'on clique sur chaque onglet les catégories s'affichent sans problèmes
    Mais j'ai le premier onglet Arts qui s'affiche trois fois .


    Nom : 20211202.jpg
Affichages : 99
Taille : 81,2 Ko
    Images attachées Images attachées  

  8. #8
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    c'est normal, puisqu'il est écrit différemment : "Arts" est différent de "ARTS".

    Pour bien faire :

    1- il faut créer une TABLE SQL "categories" :
    • id_categorie (INT auto-increment
    • Categorie (VARCHAR 100)

    Dans celle-ci, on aura donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1 ARTS
    2 SPORTS & SANTE
    3 ...
    4 ...
    2- dans la TABLE SQL "pages",
    • on supprime la colonne "Categorie"
    • on ajoute la colonne "id_categorie"

    Dans cette colonne "id_categorie", on notera pour chaque ligne 1, 2,... (l'id_categorie associée)

    3- Enfin, on modifie la requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // requête : activité par catégorie
    $sql = "SELECT P.id, P.Activite, C.Categorie 
    	FROM pages P
    	INNER JOIN categories C
    	   ON P.id_categorie = C.id_categorie
    	ORDER BY C.Categorie ASC, P.Activite ASC ";

  9. #9
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 33
    Par défaut Menu déroulant alimenté par base
    Super ça marche

    je n'avais pas remarqué que j'avais écrit Arts soit en majuscule soit en minuscule .
    Idem avec SPORTS & SANTE ( problème d'espaces à bannir !)

    je vais m'employer à faire une refonte de la table comme vous me l'avez indiqué.

    Merci pour votre aide et patience.

  10. #10
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 33
    Par défaut Menu déroulant alimenté par base
    je coince lamentablement.
    le code du menu déroulant que vous m'avez indiqué fonctionne très bien.
    j'ai essayé par la suite d'inclure une requête m'affichant les éléments cliqués à partir du menu.
    par contre je n'ai pas su déplacer la fin de la boucle ni les <li>et<ul> correspondant.
    j'abuse encore de votre soutien

    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
    78
    79
     
      <?php        
      include_once '_connexion.php';
    // requête : activité par catégorie
    $sql = "SELECT id, Activite, Categorie FROM pages ORDER BY Categorie ASC, Activite ASC ";
    $reponse = $pdo_conn->query($sql);
     
    $cat_current = '';
    $cat_first = true;
    ?>
    	<ul id="menu-accordeon">
    <?php
    // debut de la boucle
    while( $donnees= $reponse->fetch() )
    {
    	// à chaque changement de catégorie
    	if( $donnees['Categorie'] != $cat_current )
    	{
    		$cat_current = $donnees['Categorie'];
     
    		if( !$cat_first ) // sauf pour le 1er <li>
    		{
    			// on referme ul et li
    ?>
    			</ul>
    		</li>
    <?php
    		}
    			// on affiche la catégorie "en cours"
    ?>
    		<li>
    			<a href="#"><?php echo $cat_current;?></a>
    			<ul>
    <?php
    	} //fin de while
    ?>
    				<li><a href="essai4.php?variable=<?php echo $donnees['id']; ?>"><?php echo $donnees['Activite'];?></a></li>
                   <?php
                   $variable=$donnees['id'];
    			   $cat_first = false; 
    			   ?>
    <?php		
     
    }
    ?>
    			</ul>
    		</li>
     
    	</ul>
     
    <?php
    $reponse->closeCursor();
    ?>
      </div>   
      <div class="item-3">
       <table width="100%">   
     
     <?php
       echo $variable;
     
      $reponse = $pdo_conn->query("SELECT * FROM pages WHERE id=$variable");
      while ($donnees = $reponse->fetch())      
          // debut de la boucle
          {     
           //On affiche les données dans le tableau    
      ?>   
             <tr>
             <td colspan="6"><?php echo $donnees['Activite'] ?></div></td>
             </tr>
             <tr>
             <td colspan="6" ><?php echo $donnees['Libel_activ']?></div></td>
             </tr>       
       <?php                  
                $_SESSION['login'] = $variable;
       //Fin affichage des données dans le tableau
      }// fin de la boucle
      $reponse->closeCursor();
      ?>
       </table>

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2011, 13h10
  2. [MySQL] Menu déroulant alimenté par requete SQL
    Par perlgirl dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/11/2009, 18h03
  3. Graphe alimenté par base de données
    Par erigoal dans le forum Windows Forms
    Réponses: 26
    Dernier message: 03/12/2008, 15h27
  4. menu déroulant dynamique et base de données
    Par Heilong dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/08/2008, 10h48
  5. Réponses: 6
    Dernier message: 04/04/2008, 13h09

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