Pages :
(reprise du message précédent)

Reprenons ensemble où j'en suis à 14h20, si tu le veux bien :

Le php du head (De toutes les pages, peu importe la profondeur) :
<?php
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"] ."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css;  // par défaut

// Surcharge éventuelle par $_POST si le fichier existe
$css = ((isset($_POST["style"])) && (file_exists("./".$_POST['style']."/style.css"))) ? $_POST["style"] : $css; 

setcookie('style', $css, time()+(365*24*3600)) ; // C'est reparti pour un an winner  
?>


L'appel de la CSS (De toutes les pages, peu importe la profondeur) :
<?php
// Style de la page
echo "<style type=\"text/css\" media=\"screen\">\n" ;
echo "@import url(/".$css."/style.css) ;\n" ;
echo "</style>\n" ;
?>


Le formulaire (De toutes les pages, peu importe la profondeur) :

<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
	<div id="style_switcher">
		<label for="style">Choisir le design :</label>
			<select id="style" name="style" class="champ" >
				<?php
			// Il suffit de rajouter les styles dans le tableau $tab
				$tab = array("brut","styles");
				foreach ($tab as $item)
						{
						$selected = ($item == $css) ? "selected=\"selected\"" : "";
						$lib = ($item == "styles") ? "Par défaut" : $item;
						echo "<option value=\"$item\" $selected >$lib</option>";
					}
				?>
			</select>
			<input class="bouton_switch" type="submit" value="ok" />
		</div>
</form>

Smiley sweatdrop Confirmes tu ?
Modifié par ideas generator (24 Nov 2006 - 14:34)

<?php
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"] ."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css  // par défaut

// Surcharge éventuelle par $_POST si le fichier existe
$css = ((isset($_POST["style"])) && (file_exists("./".$_POST['style']."/style.css"))) ? $_POST["style"] : $css; 

setcookie('style', $css, time()+(365*24*3600)) ; // C'est reparti pour un an winner  
?>

Là, il y a des blèmes...

à remplacer par ça :

<?php
$css = (isset($_COOKIE['style'])) ? $_COOKIE['style'] : "styles"; // par défaut
// Surcharge éventuelle par $_POST si le fichier existe
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css; 
//$css = (isset($_POST["style"])) ? $_POST["style"] : $css;
setcookie('style', $css, time()+(365*24*3600)) ;
?>

Modifié par GeorgesM (24 Nov 2006 - 14:40)
Quelque chose ne va pas : deux cookies sont déposés, avec des valeurs diférentes.
L'un au chargement du site, l'autre à l'appel de la page accessibilite.php ou confidentialite.php.
Modifié par ideas generator (24 Nov 2006 - 15:03)
Il reste un problème : un cookie ne concerne pas un site, mais une page.
En ce moment, tu créé un cookie par page. Donc, chaque page a son comportement propre et indépendant des autres.

A mon avis, tu devrais utiliser le cookie en page d'accueil, mais utiliser utiliser une variable de session pour les autres pages :

ce qui donne :
pour la page principale :

<?php
session_start();
$css = (isset($_COOKIE['style'])) ? $_COOKIE['style'] : "styles"; // par défaut
$css = (isset($_SESSION["style"])) ? $_SESSION["style"] : $css ;
// Surcharge éventuelle par $_POST si le fichier existe
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css;
setcookie('style', $css, time()+(365*24*3600)) ;
$_SESSION["style"] = $css;
?>


et pour les autres pages :

<?php
session_start();
$css = (isset($_SESSION["style"])) ? $_SESSION["style"] : "styles";
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css;
$_SESSION["style"] = $css;
?>

Modifié par GeorgesM (24 Nov 2006 - 15:06)
Super ! ça fonctionne très bien.

Encore merci GeorgesM pour le temps passé à m'aider.

Je récapitule donc :

Le php dans head de l'index :
<?php
session_start();
$css = (isset($_COOKIE['style'])) ? $_COOKIE['style'] : "styles"; // par défaut
$css = (isset($_SESSION["style"])) ? $_SESSION["style"] : $css ;
// Surcharge éventuelle par $_POST si le fichier existe
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css;
setcookie('style', $css, time()+(365*24*3600)) ;
$_SESSION["style"] = $css;
?>



Le php dans head des autres pages :
<?php
session_start();
$css = (isset($_SESSION["style"])) ? $_SESSION["style"] : "styles";
$css = ((isset($_POST["style"])) && (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_POST['style']."/style.css"))) ? $_POST["style"] : $css;
$_SESSION["style"] = $css;
?>


L'appel de la feuille de style :
<?php
// Style de la page
echo "<style type=\"text/css\" media=\"screen\">\n" ;
echo "@import url(/".$css."/style.css) ;\n" ;
echo "</style>\n" ;
?>


Le formulaire :

<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
	<div id="style_switcher">
		<label for="style">Choisir le design :</label>
			<select id="style" name="style" class="champ" >
			<?php
			// Il suffit de rajouter les styles dans le tableau $tab
			$tab = array("styles","brut");
			foreach ($tab as $item)
				{
				$selected = ($item == $css) ? "selected=\"selected\"" : "";
				$lib = ($item == "styles") ? "Par défaut" : $item;
				echo "<option value=\"$item\" $selected >$lib</option>";
			}
			?>
			</select>
		<input class="bouton_switch" type="submit" value="ok" />
	</div>
</form>


Et voilou Smiley smile
Grand Merci !
Pages :