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:
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
Menu déroulant alimenté par base
Ok
Code:
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();
?> |
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
2 pièce(s) jointe(s)
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 .
Pièce jointe 609577
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.
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:
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> |