Bonjour,

Je suis toute nouvelle, et je voulais poser une petite question en rapport avec le tuto Style switcher.
En effet j'ai intégré les différents bouts de code, cependant j'ai petit souci, quand je veux changer de page, le style choisi ne passe pas et je retourne sur celui par défaut... Smiley confus

Il doit s'agir d'un problème de cookie, mais je vois vraiment pas comment résoudre tout ça... Smiley decu

Si quelqu'un à une idée ça m'aiderais grandement ! Smiley biggrin
Salut,

les médiums sont en vacances et donc sans code ça va être difficile de t'aider ! Smiley lol

Mais quand même je me risque à faire une supposition (j'ai parfois des flashs !) : quand rien n'est précisé un cookie n'est valable par défaut que dans le répertoire où il a été créé (et ses sous-répertoires). Pour qu'il soit valable pour tout le site il faut préciser :
setcookie("nom_cookie", $valeur_cookie, time()+$expire, [b]'/'[/b]);

Modifié par Heyoan (04 Mar 2009 - 19:38)
Oui désolée, j'ai pas mis de code !! Smiley confused

donc je reprend correctement :

-> sur mon fichier index.php :
<?php include("style-switcher.php"); ?> //dans le head


-> dans ce fichier style-switcher.php :

<?php
header('Content-type: text/html; charset=utf-8');
require_once 'styles/styleswitcher.inc.php'; 

//récupère le nom du dossier en fonction du style choisi
$dossier = $_GET['style'];
if(!$dossier) $dossier = 'rose'; //dossier par defaut
?>
<link rel="stylesheet" media="screen, projection" type="text/css" id="css" href="<?php echo $url; ?>" />
<link rel="shortcut icon" href="images/couleurs/<?php echo $dossier ?>/favicon.ico"/>


-> dans mon fichier entete.php :
<div id="styleswitcher">
	<a href="<?php echo $actuel; ?>?style=jaune" ><img src="images/entete/choix-jaune.gif" alt="style jaune" border="0"/></a>
    <a href="<?php echo $actuel; ?>?style=orange" ><img src="images/entete/choix-orange.gif" alt="style orange" border="0"/></a>
    <a href="<?php echo $actuel; ?>?style=rose"  ><img src="images/entete/choix-rose.gif" alt="style rose" border="0"/></a>
    <a href="<?php echo $actuel; ?>?style=violet"><img src="images/entete/choix-violet.gif" alt="style violet" border="0"/></a>
    <a href="<?php echo $actuel; ?>?style=bleu" ><img src="images/entete/choix-bleu.gif" alt="style bleu" border="0"/></a>
    <a href="<?php echo $actuel; ?>?style=vert"><img src="images/entete/choix-vert.gif" alt="style vert" border="0"/></a>
</div>


-> mon fichier styleswitcher.inc.php :

<?php
function construire_url($dossier)
{
	return 'http://graphikly.fr/styles/' . htmlspecialchars($dossier) . '/style.css';
}

$dossiers = array(
	'rose',
	'bleu',
	'jaune',
	'orange',
	'vert',
	'violet'
);

$actuel = htmlspecialchars($_SERVER['PHP_SELF']);
$new_style = (isset($_GET['style'])) ? $_GET['style'] : '';
$cookie_style = (isset($_COOKIE['style'])) ? $_COOKIE['style'] : '';

if(in_array($new_style, $dossiers, true))
{
	setcookie('style', $new_style, time() + (365 * 24 * 3600), '/');
	$url = construire_url($new_style);
}

else if(in_array($cookie_style, $dossiers, true))
{
	$url = construire_url($cookie_style);
}

else
{
	$url = construire_url($dossiers[0]);
}
?>


Voilà j'espère que je crois rien avoir oublier...
Smiley sweatdrop
Ça semble pas mal... sauf que l'url vers ta feuille de style qui est générée (par exemple http://graphikly.fr/styles/vert/style.css) mène vers une page 404. Smiley cligne
oui car vu que mon site est en cours de développement, il n'y a que la feuille de style bleu et rose qui sont en ligne....

Et même quand je clique sur le style bleu je perd le style au passage d'une autre page. Smiley ohwell
marissa a écrit :
oui car vu que mon site est en cours de développement, il n'y a que la feuille de style bleu et rose qui sont en ligne....
Arf ! J'ai pas eu de chance sur ce coup là ! Smiley langue

Comme chez moi le cookie est bien écrit cela vient peut-être du paramétrage de ton navigateur (Autoriser les cookies) ?

Le plus simple est de vérifier sur un autre (Firefox, Opera, Safari, IE) et sinon d'installer l'extension web developer pour Firefox (il y a un onglet Cookies)