par
Cyrano » 27 avr. 2005, 21:51
Sans formulaire, il faudrait utiliser un paramètre dans l'url avec un lien du genre <a href="page.php?style=blanc">... la page en blanc</a>
mais ce serait laborieux parce qu'il faudrait faire suivre le paramètre dans tous les liens pour que l'internaute puisse visiter tout le site avec son choix de style.
Donc le formulaire est le plus simple. Ce que moi je fais : j'établis une liste de styles. Je crée une variable de session que j'initialise avec une valeur par défaut. Dans la construction de ma page, je fait générer le lien vers la feuille de style en testant la valeur de cette variable de session.
Quand l'internaute choisit un autre style via le formulaire, en cliquant sur OK, il fait recharger la page. Un test de valeur sur $_POST['style'] me dit si une valeur a été envoyée et je la récupère: je change au besoin la valeur de la variable de session selon le résultat.
La page se reconstruit donc et le lien vers la fuille de style est créé en fonction de la nouvelle valeur de la variable de session.
C'est tout
Comme je me sens en forme, voici mon bout de script : d'abord, tester le formulaire :
/* Choix du thème graphique utilisé pour l'affichage */
/* D'abord, une valeur par défaut si la variable de sesion n'a pas été initialisée */
if(!isset($_SESSION['theme']))
{
$_SESSION['theme'] = "vert";
}
/* On teste si le bouton OK pour le choix de style a été cliqué */
if(isset($_POST['ok']))
{
$theme = $_POST['styles'];
switch($theme)
{
case "blanc" : $_SESSION['theme'] = "blanc";
break;
case "vert" : $_SESSION['theme'] = "vert";
break;
case "minimum" : $_SESSION['theme'] = "sans";
break;
default : $_SESSION['theme'] = "vert";
}
}
Ensuite dans la partie qui sert à générer mes en-têtes de page:
<?php
if($_SESSION['theme'] != "sans")
{
switch($_SESSION['theme'])
{
case "vert" :
?>
<link rel="stylesheet" type="text/css" rev="stylesheet" href="./styles/jemvert.css" media="screen" />
<?php
break;
case "blanc" :
?>
<link rel="stylesheet" type="text/css" rev="stylesheet" href="./styles/jemblanc.css" media="screen" />
<?php
break;
default :
case "vert" :
?>
<link rel="stylesheet" type="text/css" rev="stylesheet" href="./styles/jemvert.css" media="screen" />
<?php
break;
}
}
?>
Dans le cas ou l'internaute aurait choisi sans, je n'utilise aucune feuille de style.
Sans formulaire, il faudrait utiliser un paramètre dans l'url avec un lien du genre <a href="page.php?style=blanc">... la page en blanc</a>
mais ce serait laborieux parce qu'il faudrait faire suivre le paramètre dans tous les liens pour que l'internaute puisse visiter tout le site avec son choix de style.
Donc le formulaire est le plus simple. Ce que moi je fais : j'établis une liste de styles. Je crée une variable de session que j'initialise avec une valeur par défaut. Dans la construction de ma page, je fait générer le lien vers la feuille de style en testant la valeur de cette variable de session.
Quand l'internaute choisit un autre style via le formulaire, en cliquant sur OK, il fait recharger la page. Un test de valeur sur $_POST['style'] me dit si une valeur a été envoyée et je la récupère: je change au besoin la valeur de la variable de session selon le résultat.
La page se reconstruit donc et le lien vers la fuille de style est créé en fonction de la nouvelle valeur de la variable de session.
C'est tout
Comme je me sens en forme, voici mon bout de script : d'abord, tester le formulaire :
[php]/* Choix du thème graphique utilisé pour l'affichage */
/* D'abord, une valeur par défaut si la variable de sesion n'a pas été initialisée */
if(!isset($_SESSION['theme']))
{
$_SESSION['theme'] = "vert";
}
/* On teste si le bouton OK pour le choix de style a été cliqué */
if(isset($_POST['ok']))
{
$theme = $_POST['styles'];
switch($theme)
{
case "blanc" : $_SESSION['theme'] = "blanc";
break;
case "vert" : $_SESSION['theme'] = "vert";
break;
case "minimum" : $_SESSION['theme'] = "sans";
break;
default : $_SESSION['theme'] = "vert";
}
}
[/php]
Ensuite dans la partie qui sert à générer mes en-têtes de page:
[php]<?php
if($_SESSION['theme'] != "sans")
{
switch($_SESSION['theme'])
{
case "vert" :
?>
<link rel="stylesheet" type="text/css" rev="stylesheet" href="./styles/jemvert.css" media="screen" />
<?php
break;
case "blanc" :
?>
<link rel="stylesheet" type="text/css" rev="stylesheet" href="./styles/jemblanc.css" media="screen" />
<?php
break;
default :
case "vert" :
?>
<link rel="stylesheet" type="text/css" rev="stylesheet" href="./styles/jemvert.css" media="screen" />
<?php
break;
}
}
?>
[/php]
Dans le cas ou l'internaute aurait choisi sans, je n'utilise aucune feuille de style.