Bonjour,
Je suis toute nouvelle sur ce forum, et j'ai essayé d'utiliser le tutoriel pour pouvoir changer de feuille de style.
Je découvre le web depuis 1mois et demi alors merci de votre indulgence.. Smiley confused

Par compte j 'ai un warning :
"Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\switchcss\index.php:10) in c:\program files\easyphp1-8\www\switchcss\index.php on line 22"

Voici le code de mon fichier index.php (inspiré du tutoriel)


<html>
<!-- Date de création: 13/11/2006 -->
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  <title>CHANGER D'HABILLAGE</title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <meta name="author" content="eebee">
  <meta name="generator" content="WebExpert 6">	
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<meta http-equiv="Content-Language" content="fr" />
		
<?php
if(isset($_POST['change_style']))
// On vérifie que le formulaire a été soumis
{	
	if(file_exists("./".$_POST['style']."/style.css"))
	{
		// On fait un cookie d'une année de durée pour garder en mémoire le style choisi et le récupérer à la prochaine visite

		setcookie('style', $_POST['style'], time()+(365*24*3600)) ;
		// Si le fichier *.css existe on définit une variable $css correspondant au style choisi
		$css = $_POST['style'] ;
	}
}
elseif(isset($_COOKIE['style']))
// Si le formulaire n'a pas été soumis, on vérifie si le cookie style existe et si tel est le cas on définit une variable $css correspondant à ce style
{
	$css = $_COOKIE['style'] ;
}	
else
// Si le cookie n'existe pas et que le formulaire n'a pas été soumis, on définit une variable $css correspondant au style par défaut, ici un_style.css par exemple
{
	$css = "style_bleu" ;
}
?>	

<?php
echo "		<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"".$css."/style.css\" />\n" ;
?>
</head>
<body> 

<h1>ceci est un essai de plusieurs presentations</h1> 
<div id="style_switcher">
	<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
		<fieldset>
			<legend>Choisissez un style de page</legend>
			<select name="style">
				<option value="style_bleu" selected="selected">style bleu</option>
				<option value="style_noir">style noir</option>
			</select>
			<input type="submit" name="change_style" value="Changer le style" />
		</fieldset>
	</form>	
</div>

<h1>ceci est un essai de plusieurs presentations</h1> 

</body>
</html>


Je ne comprends pas encore bien le php. Comment faire pour ne plus avoir ce warning Smiley bawling
Modifié par eebee (13 Nov 2006 - 20:48)
Bonjour.

Ce post a plus sa place dans "Standards web et langages serveurs"...

Il me semble que le problème vient du moment où l'on génère les cookies. Il faudrait s'occuper des cookies avant de générer l'html.
Cela consiste à déplacer ce bloc php au début du fichier, avant la balise html.

<?php
if(isset($_POST['change_style']))
// On vérifie que le formulaire a été soumis
...
{
	$css = "style_bleu" ;
}
?>	
<html>
...
<?php
echo "		<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"".$css."/style.css\" />\n" ;
?>
</head>

D'autre part, on a deux fois

  <meta http-equiv="Content-Type" content="text/html; ...

avec deux charset différents.