session+plusieurs menus

Eléphant du PHP | 186 Messages

14 févr. 2007, 18:17

Bonjour à tous.
Je reviens vers vous avec un problème que j'avais quelques peu laissé de côté.
Pour illustrer ce problème, je vais utiliser un exemple simple.
Imaginez-vous sur la page d'accueil d'un site dédié d'un côté pour les garçons et de l'autre pour les filles. Sur cette page pourrait se trouver l'image d'un garcon qui serait en réalité un lien vers la partie du site dédié aux gars et une image d'une fille pointant vers la partie du site dédié aux sexe féminin.
Les deux parties distinctes du site en général (donc partie garcon et partie fille) disposeraient d'une ergonomie et d'une structure identique avec des contenus différents sur certains points et similaires sur d'autres comme par exemple un menu qui parlerait pourquoi pas des sorties à faire, menu que l'on retrouverait donc que l'on soit du côté des gars ou des filles.
La barre de navigation composée des menus serait aussi identique en terme de structure et différent en terme de contenu et d'esthétique (une barre de menu rose pour les filles et bleu pour les gars)

Ma grande question est la suivante:
Imaginons que je choisisse d'aller sur le menu "sorties" (commun aux deux parties filles et gars), un sous menu apparait sur lequel je choisi "discothèques". L'action de cliquer sur ce sous menu va générer une autre page sur laquelle va se retrouver un annuaire des discothèques de la région. La barre de menus sera aussi présente sur cette page afin de laisser la possibilité d'ouvrir un autre sous menu plutôt que de faire précédente.
Seulement voilà, comment faire comprendre que si l'on a choisit le sous menu "dicothèque" depuis la partie du site dédiée aux filles (présent aussi sur la partie des gars) la page générée devra afficher la barre de navigation rose (donc celui des filles)??
Je tiens à préciser que le menu est externalisé des pages tant en css qu'en html et réintégrer par un "include".
Je tiens aussi à préciser qu'aucun visiteur ne s'identifie ou ne s'enregistre au préalable en tant que fille ou garçon.

Je sais que mon problème semble difficile, il l'est effectivement pour moi qui débute. C'est pourquoi je ne demande pas une solution toute faite mais des pistes de réflexion et d'aides.
Merci par avance pour toute aide apportée.

ViPHP
ViPHP | 1961 Messages

14 févr. 2007, 18:37

Bonjour,

Tu peu le faire en utilisant les sessions.
Tu crées une variable session Exp. 'genre' que tu initialises au click en fonction de l'image sélectionnée.

En fonction de cette valeur, tu choisis ta page et ta feuille de style pour la page.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 186 Messages

15 févr. 2007, 15:58

Salut Ajoloca!
Pourrais tu être plus précis sur cette variable de session et son fonctionnement stp.
Merci

Mammouth du PHP | 1029 Messages

15 févr. 2007, 17:23

Les sessions est un processus utiliser par php pour garder certaine information lié à un utilisateur précis.

En fait php sauvegarde dans un fichier toutes les données que tu lui demande à commencé par son identifiant(je parle de l'utilisateur).

Dans chaque fichier où tu as besoin de session tu dois mettre ceci au debut de script
session_start();
A partir de ce moment tu peux utiliser des sessions pour sauvegarder certaine information.

par exemple pour ta différence garçon/fille.

admettons les liens suivant

index.php?genre=garcon
index.php?genre=fille 

ce qui représente les deux liens possibles(exemple hein :))

tu récupères l'info ainsi


<?php
session_start();

$_SESSION['genre'] = $_GET['genre'] //je récupère l'information de ton lien
?>

Maintenant $_SESSION['genre'] contient soit fille soit garçon pour uniquement l'utilisateur qui l'a demandé.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 186 Messages

16 févr. 2007, 11:30

Salut tout le monde.
Merci Maitrepylos pour ta réponse. Je vais commencé à croire que j'abuse un peu.

J'ai trouvé de mon côté un début de solution qui ressemble à la méthode que tu me propose.

Voici le code que je mets:
session_start();

if (isset($_GET['menu'])) { // si la donnée est passée en get  
  // elle est explicitement demandée par l'utilisateur, donc on l'utilise :)  
  $menu = $_GET['menu'];  
}  
else { // sinon  
  if (isset($_SESSION['menu'])) { // si la donnée existe en session   
    // c'est qu'elle a été précément demandée par l'utilisateur, donc on l'utilise  
    $menu = $_SESSION['menu'];   
  } else {
   $menu = '1-menu'; // valeur par défaut
   } 
  }  

$_SESSION['menu'] = $menu; // stocke la nouvelle valeur de $menu dans la session
Et j'inclus le résultat sous cette forme ci:
<?php
		include('./'.$menu . '.htm');
		
	?>
Je ne sais pas si j'ai besoin de l'intégralité du code mais lorsque je clique sur mes liens, les bons menus semblent s'afficher.

Néanmoins, un problème subsiste car comment appliquer la même méthode pour la page css de mon menu. J'ai essayé le synthaxe suivante:

<link href="include('./'.$menu . '.css');" rel="stylesheet" type="text/css" />

Mais rien n'y fait, le menu apparait mais dans son plus simple appareil (si vous me le permettez!!).
Donc je me doute que ce n'est pas la bonne synthaxe.

Eléphant du PHP | 186 Messages

16 févr. 2007, 12:05

Bon je me suis finalement reporté faire une solution radicale mais qui semble fonctionner. J'ai incorporé chaque style css dans les pages htm des menus correspondants.

Est ce que cette solution est critiquable?
Si oui, faites moi part de vos critiques.

ViPHP
ViPHP | 1961 Messages

16 févr. 2007, 12:16

Bonjour,

Comme tu le sais, PHP, génère du (X)HTML.
Ta ligne <link> c'est du (X)HTML donc tu peu faire de la même manière pour l'inclure.

QQ chose du style (dans ta page menu ou les autres
$feuilleCSS = Array('fille' => '/css/fille.css', 'garcon' => '/css/garcon.css');
<link rel="stylesheet" type="text/css" media="all" href="<?php echo $feuilleCSS[$_SESSION['genre']]; ?>" />
Modifié en dernier par Ajoloca le 16 févr. 2007, 12:20, modifié 1 fois.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1029 Messages

16 févr. 2007, 12:16

essaie plutôt ceci
<link href="<?php "./".$menu .".css"?>" rel="stylesheet" type="text/css" /> 

edit : :? grillé
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 186 Messages

16 févr. 2007, 13:24

Ok.
Merci à vous deux en tout cas pour tous ces renseignements et ce petit cours de php.
Je vais essayer ce que vous me proposez.
En attendant, je vais mettre résolu sur mon post.
Merci encore.