8797 sujets

Développement web côté serveur, CMS

Bonjour à tous! J'ai une petite question. Voila, je fait un site et j'utilise les includes pour la présentation avec la base fixe toujours identique et seulement le corps que j'inclus dans la page en utilisant des if bien sur. Mon soucis est que je voudrai en haut de la page ( qui est fixe ) mettre un lien qui permet d'afficher ou pas une barre de menu. C'est comme si sur ce site en haut dans le header on a un lien qui indique afficher le menu quand il n'y est pas et lorsqu'on clique il apparait et le lien change en désactiver le menu par exemple et le menu disparait
je ne peux pas afficher l'include du corps du site parce que je transfères lavariable sb. Voila ce que j'ai fait :

1) On utilise les sessions pour se souvenir du choix et on utilise la variable transféré dans le lien ici : "sb"

<?php
session_start();
?>
....
....
<?php
         if ($_GET['sb'] == "ok")
                         
                $_SESSION['speedbarre'] = 'ok';
                                         
         if ($_GET['sb'] == "no")
                         
                $_SESSION['speedbarre'] = 'no';
?>


2)On affiche le lien soit activer menu soit desactiver menu

<?php
        if ($_SESSION['speedbarre'] == 'ok')
        {
                include("sb_no.php");
        }
        else
        {
                include("sb_ok.php");
        }
?>


3)On affiche ou pas le menu

<?php
        if ($_SESSION['speedbarre'] == 'ok')
        {       
                include("speedbarre.php");
        }
        else if ($_SESSION['speedbarre'] == 'no')
        {
        }
?>


Dsl je ne suis pas très connaisseur je débute ^^. Mon probleme ici c'est que comme je transfère que la variable sb je ne transfère pas la variable necessaire a l'include du corps du site.

Voici les include sb_no.php et sb_ok.php

<p class="menu"><a href="index.php?sb=no">Desactiver le menu</a></p>
 
<p class="menu"><a href="index.php?sb=ok">Activer le menu</a></p>


Merci de votre aide
Hello Francoisdu47 Smiley cligne ,

puisque tu te sers d'une variable GET l'utilisation d'une variable de session semble inutile Smiley murf !

Tu pourrais faire par exemple :

1)
<?php
$sb = (isset($_GET['sb']) && ($_GET['sb'] == 'ok')) ? true : false; // Si une variable sb est présente dans l'URL et qu'elle vaut 'ok' alors $sb vaut true, sinon $sb vaut false
?>

2)
<?php
if ($sb) {
	include('sb_no.php');
} else {
	include('sb_ok.php');
}
?>

3)
<?php
if ($sb) {
	include('speedbarre.php');
}
?>

4)
<?php
if ($sb) {
	echo '<p class="menu"><a href="index.php">Désactiver le menu</a></p>';
} else {
	echo '<p class="menu"><a href="index.php?sb=ok">Activer le menu</a></p>';
}
?>

Et si tu veux mémoriser le choix, regardes plutôt du côté des cookies (un exemple dans le tuto Faire un Style switcher en PHP).

A+ Smiley smile
Je suis d'accord mais le problème c'est sa :

<?php

if ($sb) {

	echo '<p class="menu"><a href="index.php">Désactiver le menu</a></p>';

} else {

	echo '<p class="menu"><a href="index.php?sb=ok">Activer le menu</a></p>';

}

?>


Parce que si je clique sur un des liens je tombe sur la page index et non sur la page qui est regardé par exemple si je suis sur la page index.php?page=1 alors je vais tomber sur la page index.php et c'est sa le problème !
Francoisdu47 a écrit :
...
Parce que si je clique sur un des liens je tombe sur la page index et non sur la page qui est regardé par exemple si je suis sur la page index.php?page=1 alors je vais tomber sur la page index.php et c'est sa le problème !

Ah OK !

Pour que ça fonctionne sur toutes les pages tu as 2 solutions :

* soit tu récupères l'URL de la page avec $_SERVER['PHP_SELF']
<?php
if ($sb) {
	echo '<p class="menu"><a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'">Désactiver le menu</a></p>';
} else {
	echo '<p class="menu"><a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?sb=ok">Activer le menu</a></p>';
}
?>

* soit tu ne renseignes rien (par défaut la page en cours est rappelée)
<?php
if ($sb) {
	echo '<p class="menu"><a href="?sb=no">Désactiver le menu</a></p>';
} else {
	echo '<p class="menu"><a href="?sb=ok">Activer le menu</a></p>';
}
?>

@+


Edit: Oups ! Je viens de relire ton post et je me rends compte que tu rappelles bien toujours la même page index.php mais que tu as une variable GET en plus à alimenter... Donc, en appelant la variable qui te sers à récupérer le numéro de page $numpage ça donne :
<?php
if ($sb) {
	echo '<p class="menu"><a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?page='.$numpage.'">Désactiver le menu</a></p>';
} else {
	echo '<p class="menu"><a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?page='.$numpage.'&amp;sb=ok">Activer le menu</a></p>';
}
?>

Modifié par Heyoan (26 Feb 2008 - 20:38)