Rendre actif un onglet menu
Résolu
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à rendre actif un onglet de menu dont le nom et le texte correspondant sont issus d'une base de donnée.
Affichage du menu :
Merci
Je cherche à rendre actif un onglet de menu dont le nom et le texte correspondant sont issus d'une base de donnée.
Affichage du menu :
$select = 'SELECT * FROM menu'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); echo '<div class="menu">'; while($row = mysql_fetch_array($result)) { echo '<a href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>'; } echo '</div>';
Merci
A voir également:
- Rendre actif un onglet menu
- Menu déroulant excel - Guide
- Rouvrir un onglet fermé - Guide
- Comment rendre un fichier moins lourd - Guide
- Pourquoi je ne vois plus actif il y a ✓ - Forum Facebook Messenger
- Canon quick menu - Télécharger - Utilitaires
16 réponses
Salut.
Il suffit de vérifier si le lien qui provient de la bdd correspond à celui de la page actuelle. Si oui, alors tu ajoutes une classe CSS.
Il suffit de vérifier si le lien qui provient de la bdd correspond à celui de la page actuelle. Si oui, alors tu ajoutes une classe CSS.
Ben oui ! J'y avait pensé ......
Mais je ne sais pas comment faire pour comparer $row[nom] avec $row[texte] pour savoir s'ils proviennent du même enregistrement !
Avec $row[id] peut-être ? Mais comment ?
Merci
Mais je ne sais pas comment faire pour comparer $row[nom] avec $row[texte] pour savoir s'ils proviennent du même enregistrement !
Avec $row[id] peut-être ? Mais comment ?
Merci
$select = 'SELECT * FROM menu'; $result = mysql_query($select, $link) or die ('Erreur : ' . mysql_error() ); echo '<div class="menu">'; while($row = mysql_fetch_array($result)) { $classe = ''; if(isset($_GET['nom']) && $_GET['nom'] == $row['nom']) { $classe = 'class="actif" '; } echo '<a '.$classe.'href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>'; } echo '</div>';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ben c'est ce que j'ai fait, mais le bouton ne garde pas la class actif !
J'ai modifié ainsi :
mais ça fonctionne pas mieux ....
J'ai modifié ainsi :
while($row = mysql_fetch_array($result)) { $classe = 'bouton'; if(isset($_GET['nom']) && $_GET['nom'] == $row['nom']) { $classe = 'class="actif" '; } echo '<a href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="'.$classe.'">'.$row['nom'].'</a><p>'; } echo '</div>'; echo '<div class="frame">'; echo $_GET['texte']; echo '</div>';
mais ça fonctionne pas mieux ....
« $classe = ''; » sert à déclarer la variable ! Tu ne dois pas mettre ta classe à toi dedans ! C'est "actif" qu'il faut remplacer (quelques lignes plus loin)
OK ! J'ai remis le code comme tu me le proposes plus haut. Mais ça ne fonctionne pas mieux :
Les boutons ne prennent pas la classe actif quand le texte correspondant estr affiché dans le <div class="frame">.
.bouton { display: block; width: 130px; height: 17px; background-color: #800000; text-align: center; font-family: verdana, arial, helvetica, sans-serif; font-size: 10px; font-weight: bold; color: yellow; text-decoration: none; } .bouton:hover { ............................ } .actif { ........................ } <?php $select = 'SELECT * FROM menu'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); echo '<div class="menu">'; while($row = mysql_fetch_array($result)) { $classe = ''; if(isset($_GET['nom']) && $_GET['nom'] == $row['nom']) { $classe = 'class="actif" '; } echo '<a '.$classe.'href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>'; } echo '</div>'; echo '<div class="frame">'; echo $_GET['texte']; echo '</div>'; ?>
Les boutons ne prennent pas la classe actif quand le texte correspondant estr affiché dans le <div class="frame">.
Les boutons prennent la classe "actif" quand $_GET['nom'] est égale au nom du bouton ($row['nom']).
Fais un echo de ces variables pour voir ce quelle contiennent.
Fais un echo de ces variables pour voir ce quelle contiennent.
Si je fais un echo des variables, donc j'écris :
$_GET['nom'] me retourne bien le nom. Par contre, $row['nom'] ne me retourne rien !!!!???? (j'ai testé en mettant les valeurs en commentaire).
Bizarre, puisque avec >'.$row['nom'].'</a>, le nom m'est bien retourné !
..........echo '<a '.$classe.'href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>'; } echo $_GET['nom']; echo $row['nom'];
$_GET['nom'] me retourne bien le nom. Par contre, $row['nom'] ne me retourne rien !!!!???? (j'ai testé en mettant les valeurs en commentaire).
Bizarre, puisque avec >'.$row['nom'].'</a>, le nom m'est bien retourné !
Fais l'affichage de $row['nom'] dans la boucle while.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
J'ai donc fait ce que tu m'as dit, et le résultat du $row[nom] s'affiche partout sauf dans la boucle du if
Donc la condition n'est pas exécutée !?
if(isset($_GET['nom']) && $_GET['nom'] == $row['nom']) { echo $row['nom']; $classe = 'class="actif" '; }
Donc la condition n'est pas exécutée !?
if n'est pas une boucle.
Donc une seule fois dans while !
« Donc la condition n'est pas exécutée !? »
Ça je l'ai remarqué depuis longtemps.
C'est pour ça que j'aimerais savoir la valeur des variables.
Donc une seule fois dans while !
« Donc la condition n'est pas exécutée !? »
Ça je l'ai remarqué depuis longtemps.
C'est pour ça que j'aimerais savoir la valeur des variables.
La valeur de $row['nom'] correspond aux valeurs "nom" des enregistrements !
Comme c'est dans la boucle while, toutes les valeurs sont retournées.
La valeur $_GET['nom'] dans la boucle while me retourne la valeur du bouton sur lequel je cliques.
Donc effectivement, comme est écrit la condition, ça devrait fonctionner .... ????!!!!
Ce serait dans l'écriture du echo d'où vient l'erreur ?
Comme c'est dans la boucle while, toutes les valeurs sont retournées.
La valeur $_GET['nom'] dans la boucle while me retourne la valeur du bouton sur lequel je cliques.
Donc effectivement, comme est écrit la condition, ça devrait fonctionner .... ????!!!!
Ce serait dans l'écriture du echo d'où vient l'erreur ?
echo '<a '.$classe.'href="index.php?nom='.$row['nom'].' & texte='.$row['texte'].'" class="bouton">'.$row['nom'].'</a><p>';