Guest vchahun Posté 4 Octobre 2004 Posté 4 Octobre 2004 J'ai un problème existentiel dans mon système de feuilles de styles: je veux que le choix de l'utilisateur soit permanent (grâce à un cookie). Voila le code que je pensais utiliser: <html><head>[...]<link rel="alternate stylesheet" type="text/css" href="style.php?css=fixed" title="Fixed" /><link rel="alternate stylesheet" type="text/css" href="style.php?css=lynx" title="Lynx" /><link rel="alternate stylesheet" type="text/css" href="/style.php?css=orange" title="Orange" />link rel="stylesheet" type="text/css" href="style/style.php" title="Feuille de style actuelle" /> avec pour code PHP: <?phpHeader("Content-type:text/css");if(isset($_GET['css'])) {$css=$_GET['css']; SetCookie("phpcss",$css,time()+630720000)}elseif(isset($_COOKIE['phpcss'])) $css=$_COOKIE['phpcss'];else $css="orange";echo "@import url($css.css);\n";?> Or, quand j'inclue dans ma page les feuilles de styles alternatives, le navigateur charge en mémoire les CSS résultant et modifie les cookie 3 fois: style.php?css=fixed => SetCookie("phpcss","fixed",time()+630720000) style.php?css=lynx => SetCookie("phpcss","lynx",time()+630720000) style.php?css=orange => SetCookie("phpcss","orange",time()+630720000) Au final, le cookie a donc toujours pour valeur "orange". Si l'utlisateur change de feuille de style et visite une autre page, la feuille de style sélectionnée ne sera pas réutilisée, car le cookie prend une valeur "orange" avant que soit inclue la feuille de style. Conclusion: quelqu'un aurait-il une proposition ou une alternative ?? PS: je sais que c'est pas facile à comprendre, posez-moi des questions ...
Dan Posté 4 Octobre 2004 Posté 4 Octobre 2004 Salut vchahun, Ce n'est pas un problème de code, mais simplement un problème de logique. Comme tu le dis toi-même, le navigateur charge les 3 feuilles de style et change le cookie à chaque fois. Je pense que tu devrais mettre du code php autour de tes balises <link rel...> pour éviter de les charger toutes les trois. Par exemple: if($_COOKIE['phpcss']) print "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.php?css=".$_COOKIE['phpcss']."\" />";else // la feuille de style par défaut Dan
Guest vchahun Posté 5 Octobre 2004 Posté 5 Octobre 2004 Oui, mais comment fait alors le visiteur pour changer la feuille de style ? Je vais finir pas opter vers la solution "JS stylesheet switcher" ...
ElMoustiko Posté 5 Octobre 2004 Posté 5 Octobre 2004 Si tu veux j'ai fait un petit tuto rapide de style switcher PHP. Il ne doit pas être totalement complet et bourrés de fautes, mais tu as déjà le principe. http://www.elmoustikoblog.net/tutoriels/php/style_switcher/ Il va peut etre deconné, je l'ai repris sur un de mes sites mais le modifiant en "direct live" sans tester, mais a prori ca le fait. Sinon la solution JS est tout à fait envisageable, mais la gestion des cookies avec JS est vraiment chiatique je trouve. @++
Guest vchahun Posté 6 Octobre 2004 Posté 6 Octobre 2004 Je disais Javascript parce que les <select> qui servent de lien sont très utilisés ... [mais bien sur j'éviterai .....]
ElMoustiko Posté 6 Octobre 2004 Posté 6 Octobre 2004 ?????????????? Et ca voulait dire quelque chose ton truc là ?
bigornot Posté 8 Octobre 2004 Posté 8 Octobre 2004 bah, pour prendre par exemple le style 1, tu le fais aller sur une page comme ça : <?php $css = "1"; session_start(); session_register("css"); ?> et apres, tu fais dans l'autre sens .. je vois pas de probleme ...
Guest vchahun Posté 9 Octobre 2004 Posté 9 Octobre 2004 Il n'y a pas de problème pour ta solution, mais je voulais lui permettre de ne pas changer de page et de changer la feuille de style au moyen d'un "stylesheet-switcher", c'est à dire en restant sur la page, mais de toute façon IE n'en dipose pas ...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant