Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2011, 12h20   #1
Invité de passage
 
Inscription : août 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Par défaut Problème de boutons enfoncés

Bonjour!

J'ai un soucis de boutons... Je cherche un code pour que lorsque je suis sur une page de mon site, le bouton correspondant reste enfoncé. Donc que lorsque la "page1" est active dans mon site, que le "bouton1" soit actif, quand c'est la page2, le bouton2, etc. etc.

Est-ce que qqn peut me dire ce que j'ai fait de faux ou oublié dans mon code svp? Car cela ne fonctionne pas et après plusieurs essais, je ne sais vraiment plus ou chercher o_O :

Code :
1
2
3
4
5
6
7
8
 
</div>
<div id="menu">
<ul>
<li><a href="page1.php" class="btn1" <?php if($page == "page1") { echo "id = btn1_actif"; }?>></a></li>
<li><a href="page2.php" class="btn2" <?php if($page == "page2") { echo "id = btn2_actif"; }?>></a></li>
<li><a href="page3.php" class="btn3" <?php if($page == "page3") { echo "id = btn3_actif"; }?>></a></li>
</div>
Sachant que dans le titre de chaque page j'ai inscrit

Code :
1
2
 
<?php $page='page1'?>, <?php $page='page2'?>
et ainsi de suite.

Dans le CSS j'ai mis:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#btn1_actif
{
	background-image:url("images/btn1_actif.png");
	background-repeat:no-repeat;
}
 
#btn2_actif
{
	background-image:url("images/btn2_actif.png");
	background-repeat:no-repeat;
}
 
#btn3_actif
{
	background-image:url("images/btn3_actif.png");
	background-repeat:no-repeat;
}
Les boutons s'affichent correctement, par contre aucun ne reste "enfoncé" lorsque je suis sur la page correspondante.

Si qqn a une idée, ce serait pas de refus.

Merci et bonne journée!
tulipe84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 12h44   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

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

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
</ul> manquant
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	<style type="text/css">
#btn1_actif
{
	background:url("images/btn1_actif.png") no-repeat;
}
#btn2_actif
{
	background:url("images/btn2_actif.png") no-repeat;
}
#btn3_actif
{
	background:url("images/btn3_actif.png") no-repeat;
}
	</style>
Mais surtout :
Code :
1
2
3
4
5
6
7
<div id="menu">
<ul>
	<li><a href="page1.php" class="btn1" <?php if($page == "page1") { echo ' id="btn1_actif"'; }?>>page1</a></li>
	<li><a href="page2.php" class="btn2" <?php if($page == "page2") { echo ' id="btn2_actif"'; }?>>page2</a></li>
	<li><a href="page3.php" class="btn3" <?php if($page == "page3") { echo ' id="btn3_actif"'; }?>>page3</a></li>
</ul>
</div>
ps : afficher le code source généré t'aurait permis de voir l'erreur.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 12h54   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

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

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Perso, j'aurais interverti class et id (c'est plus logique) :
Code :
1
2
3
4
5
6
7
8
	<style type="text/css">
#btn1 { /* ... */ }
#btn2 { /* ... */ }
#btn3 { /* ... */ }
.btn1_actif { background:url("images/btn1_actif.png") no-repeat; }
.btn2_actif { background:url("images/btn2_actif.png") no-repeat; }
.btn3_actif { background:url("images/btn3_actif.png") no-repeat; }
	</style>
Code :
1
2
3
4
5
6
7
<div id="menu">
<ul>
	<li><a href="page1.php" id="btn1"<?php if($page == "page1") { echo ' class="btn1_actif"'; }?>>page1</a></li>
	<li><a href="page2.php" id="btn2"<?php if($page == "page2") { echo ' class="btn2_actif"'; }?>>page2</a></li>
	<li><a href="page3.php" id="btn3"<?php if($page == "page3") { echo ' class="btn3_actif"'; }?>>page3</a></li>
</ul>
</div>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 13h09   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 012
Points : 5 012
Avec du css, sert-toi de la pseudo classe :active. et mets une classe supplémentaire pour setter cette propriété manuellement:
Code :
1
2
3
4
5
6
7
8
9
 
a.btn {
  border: 2px outset black;
}
 
a.btn:active,
a.abtn {
  border: 2px inset black;
}
Code :
1
2
3
 
<a class="btn">Un boutton qui s'enfonce au click</a>
<a class="abtn">Un boutton déjà enfoncé</a>
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 13h28   #5
Invité de passage
 
Inscription : août 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par jreaux62 Voir le message
Bonjour,
</ul> manquant
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	<style type="text/css">
#btn1_actif
{
	background:url("images/btn1_actif.png") no-repeat;
}
#btn2_actif
{
	background:url("images/btn2_actif.png") no-repeat;
}
#btn3_actif
{
	background:url("images/btn3_actif.png") no-repeat;
}
	</style>
Mais surtout :
Code :
1
2
3
4
5
6
7
<div id="menu">
<ul>
	<li><a href="page1.php" class="btn1" <?php if($page == "page1") { echo ' id="btn1_actif"'; }?>>page1</a></li>
	<li><a href="page2.php" class="btn2" <?php if($page == "page2") { echo ' id="btn2_actif"'; }?>>page2</a></li>
	<li><a href="page3.php" class="btn3" <?php if($page == "page3") { echo ' id="btn3_actif"'; }?>>page3</a></li>
</ul>
</div>
ps : afficher le code source généré t'aurait permis de voir l'erreur.

Hello!

Merci pour ta réponse. J'ai essayé avec tes modifications mais cela ne fonctionne toujours pas... Je dois faire qqch de faux, je ne comprends pas pourquoi malgré tous les essais rien ne fonctionne . Qu'entends-tu par "afficher le code source généré"? (je suis débutante en développement, désolée si la question est un peut bête...)
tulipe84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 13h30   #6
Invité de passage
 
Inscription : août 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par Benjamin Delespierre Voir le message
Avec du css, sert-toi de la pseudo classe :active. et mets une classe supplémentaire pour setter cette propriété manuellement:
Code :
1
2
3
4
5
6
7
8
9
 
a.btn {
  border: 2px outset black;
}
 
a.btn:active,
a.abtn {
  border: 2px inset black;
}
Code :
1
2
3
 
<a class="btn">Un boutton qui s'enfonce au click</a>
<a class="abtn">Un boutton déjà enfoncé</a>
Hello!

Merci pour ta réponse! Déjà testé avec le CSS mais cela ne fonctionne pas non plus. Je vais encore tester ta méthode pour en avoir le coeur net. Je reviens plus tard avec le résultat

Bon après-midi!
tulipe84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 13h43   #7
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

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

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par tulipe84 Voir le message
Je dois faire qqch de faux, je ne comprends pas pourquoi malgré tous les essais rien ne fonctionne
Pour t'aider, il faudrait qu'on voit ton code !
Citation:
Envoyé par tulipe84 Voir le message
Qu'entends-tu par "afficher le code source généré"?
C'est le code html créé (la page qui s'affiche)
-> navigateur IE -> onglet "page" -> "afficher la source"
-> navigateur firefox -> menu "affichage" -> "Code source de la page"
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 16h36   #8
Invité de passage
 
Inscription : août 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
En fait c'est ok, cela fonctionne maintenant. La solution était la suivante:

Code :
1
2
3
4
5
6
7
8
 
<div id="menu">
<ul>
<li <?php if ($page == "page1" )  {echo 'id="page1_active"';}  else{echo 'id="btn_page1"';} ?>><a href="page1.php"></a></li>
<li <?php if ($page == "page2"){echo 'id="page2_active"';} else{echo 'id="btn_page2"';} ?>><a href="page2.php"></a></li>
<li <?php if ($page == "page3"){echo 'id="page3_active"';} else{echo 'id="btn_page3"';} ?>><a href="page3.php"></a></li>
</ul>
</div>
et en CSS:
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
 
#btn_page1 a
{
	display:block;
	border:none;
	background:url(images/btn_page1.png);
	background-repeat:no-repeat;
	width:96px;
	height:51px;
}
 
#btn_page1:hover
{
	background:url(images/btn_page1_survol.png);
	background-repeat:no-repeat;
}
 
#page1_active
{
	display:block;
	border:none;
	background:url(images/btn_page1_survol.png);
	background-repeat:no-repeat;
	width:96px;
	height:51px;
}
et ainsi de suite pour les autres pages.

Et bien sûr <?php $page='page1'?> etc. dans le titre de chaque page.

Merci pour votre aide, cela m'a mis sur la voie, et cela m'a aussi permis de corriger des erreurs que je n'avais pas vu avant!

A + et bonne journée!
tulipe84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 17h43   #9
Membre régulier
 
Homme Thomas DUTRION
Développeur Web
Inscription : février 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thomas DUTRION
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2009
Messages : 58
Points : 93
Points : 93
Pour rendre ton code plus lisible, tu devrais utiliser l'opérateur tertiaire ? :

Code :
1
2
3
4
5
6
7
8
 
<div id="menu">
  <ul>
    <li <?php if ($page == "page1" )  {echo 'id="page1_active"';}  else{echo 'id="btn_page1"';} ?>><a href="page1.php"></a></li>
    <li <?php if ($page == "page2"){echo 'id="page2_active"';} else{echo 'id="btn_page2"';} ?>><a href="page2.php"></a></li>
    <li <?php if ($page == "page3"){echo 'id="page3_active"';} else{echo 'id="btn_page3"';} ?>><a href="page3.php"></a></li>
</ul>
</div>
devient :

Code :
1
2
3
4
5
6
7
8
 
<div id="menu">
  <ul>
    <li <?php echo 'page1'==$page?'id="page1_active"':'id="btn_page1"'; ?>><a href="page1.php"></a></li>
    <li <?php echo 'page2'==$page?'id="page2_active"':'id="btn_page2"'; ?>><a href="page2.php"></a></li>
    <li <?php echo 'page3'==$page?'id="page3_active"':'id="btn_page3"'; ?>><a href="page3.php"></a></li>
</ul>
</div>
De manière générale, essaye aussi d'écrire les comparaisons dans l'ordre valeur == variable :

valeur == variable => vrai ou faux selon le cas
variable == valeur => même chose

Par contre en cas d'erreur (si tu oublies de mettre un = dans ton test) :
variable = valeur => affection
valeur = variable => erreur (une string ne peux pas subir d'affection de valeur)
__________________
Recherche poste de développeur web PHP/Zend Framework sur Lille (hors SSII)
Théocrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 20h51   #10
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
Un petit exemple...

Tout d'abord, on défini le php qui va établir la fonction de "page" :

Code php :
1
2
3
4
function onglet_actif($onglet) {
	$actif = ($_SERVER["REQUEST_URI"] == "/" && $onglet == 0) || ($_SERVER["REQUEST_URI"] == "/page1.php" && $onglet == 0) || ($_SERVER["REQUEST_URI"] == "/page2.php" && $onglet == 1) || ($_SERVER["REQUEST_URI"] == "/page3.php" && $onglet == 2);
	return $actif ? "_actif" : "";
}

Ensuite le html qui recevra dans l'id l'onglet actif si on est sur cette page...

Code html :
1
2
3
4
5
6
 
<ul>
<li><a href="page1.php" id="btn1<?php echo onglet_actif(0); ?>"></a></li>
<li><a href="page2.php" id="btn2<?php echo onglet_actif(1); ?>"></a></li>
<li><a href="page3.php" id="btn3<?php echo onglet_actif(2); ?>"></a></li>
</ul>


Et pour finir, le css :

Code css :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#btn1_actif
{
	background-image:url("images/btn1_actif.png");
	background-repeat:no-repeat;
}
 
#btn2_actif
{
	background-image:url("images/btn2_actif.png");
	background-repeat:no-repeat;
}
 
#btn3_actif
{
	background-image:url("images/btn3_actif.png");
	background-repeat:no-repeat;
}
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/09/2011, 15h12   #11
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 55
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 55
Points : 77
Points : 77
Moi ce que je vois surtout c'est ca
Citation:
Envoyé par tulipe84 Voir le message
Bonjour!
Code :
1
2
 
<?php $page='page1'?>, <?php $page='page2'?>
Il manque peut-être les ';' !
Avalion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 15h21   #12
Membre régulier
 
Homme Thomas DUTRION
Développeur Web
Inscription : février 2009
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Thomas DUTRION
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2009
Messages : 58
Points : 93
Points : 93
Citation:
Envoyé par Avalion Voir le message
Moi ce que je vois surtout c'est ca


Il manque peut-être les ';' !
Pas forcément, le ; n'est pas obligatoire pour la dernière instruction avant la balise fermante, ce qui est le cas ici.

Cependant, les conventions de codage choisies dans l'application peuvent être de mettre systématiquement le ;.

Pour ma part, il m'arrive de l'omettre uniquement dans mes scripts de vue pour des raisons de lisibilité.
__________________
Recherche poste de développeur web PHP/Zend Framework sur Lille (hors SSII)
Théocrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 23h18   #13
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Citation:
Envoyé par Théocrite Voir le message
De manière générale, essaye aussi d'écrire les comparaisons dans l'ordre valeur == variable :

valeur == variable => vrai ou faux selon le cas
variable == valeur => même chose

Par contre en cas d'erreur (si tu oublies de mettre un = dans ton test) :
variable = valeur => affection
valeur = variable => erreur (une string ne peux pas subir d'affection de valeur)
Pas bête du tout ça...
Sinon NetBeans repère ce genre d'erreur et met un warning...
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h57.


 
 
 
 
Partenaires

Hébergement Web