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

Je suis derrière toi brainwasher !
Moi aussi je me suis arraché les cheveux cette semaine à écouler tous les tutos de style switcher et ce même forum sans trouver pourquoi ça ne marchait pas sur mon serveur free.fr. Je vais finir par croire que ça vient de lui.
Ce problème de cannot modify header information est vraiment trop déroutant !
tommy : pour "cannot modify header " vire toute trace de print ou autre echo car c'est source de ce message d'erreur. Et vire bien tous les espaces avant l'insertion du code donné par alsa

pour suivre les conseils de zanzibar j'ai installé le dernier easy php (y'a vraiment rien à configurer, c'est trop fort)

et voilà l'erreur que ça m'affiche en local !

Notice: Undefined variable: css in c:\program files\easyphp1-8\www\mwnn\miseenpage.php on line 40


<?php
	if(isset($_POST['change_style']))
	{
		if(file_exists("./".$_POST['style']."/style.css"))
		{
			setcookie('style', $_POST['style'], time()+(365*24*3600)) ;
			$css = $_POST['style'] ;
		}
	}
	elseif(isset($_COOKIE['style']))
	{
		$css = $_COOKIE['style'] ;
	}
	else
	{
		$css = "style" ;
	}
?>

 <?php
 function monheader($rubrique)
 {
 ?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
	<meta name=BLABLABLA">
	<title><?php print"www.Isislafurette.com - $rubrique"; ?></title>

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


je sais pas pourquoi il me dit ça alors qu'elle est bien déclarée en ligne 7 Smiley biggol

ça avance ça avance. Mais là je sais pas comment lui faire comprendre qu'elle est déclarée au dessus Smiley fache
En fait, je pense qu'on pourrait être complémentaire parce que moi le code marche au moins avec mon style par défaut (http://thomas.barthelet.free.fr[/url]).
En tout cas, je ne vois pas où j'ai un espace de trop (que le validateur du W3C me reproche d'ailleurs). Un problème avec mon include ?
Voilà mon code :

<?php
include("styleswitch.inc.php");
$pageName = "Accueil";
include("head.inc.php");
include("header.inc.php");
?>

Avec ce qui lui correspond :

<?php if(isset($_POST['change_style']))
// On vérifie que le formulaire a été soumis
{
// 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), "/") ;
// 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 = "normal" ;
}
?>

et

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head profile="http://gmpg.org/xfn/11">
....
<?php
echo "	<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/styles/".$css."/screen.css\" />\n";
echo "	<link rel=\"stylesheet\" type=\"text/css\" media=\"print\" href=\"/styles/".$css."/print.css\" />\n";
?>
....
pourquoi as tu deux stylesheet dans la seconde partie de ton code ?

Je vérifie tout ça demain et peut être que oui on sera complémentaire, ce serait bien Smiley smile
Brainwasher a écrit :
pourquoi as tu deux stylesheet dans la seconde partie de ton code ?

Le deuxième est la feuille du media "print" mais bon, ça sert pas à grand chose pour l'instant...

Moi aussi je vais essayer de me repencher sur ce code demain, si j'en ai le courage et le temps Smiley cligne
Alors pour le serveur en local tu peux utiliser easyphp ou wamp par ex, les procédures d'install sont décrites et ce n'est pas sorcier. Attention quand tu utilise ça débranche ta liaison adsl car ton pc devient un serveur ouvert à tous les vents! Si ça marche en local alors il y a peut être une astuce particulière chez free, essaie de regarder dans la FAQ de free sur l'utilisation du php.
Pour l'espace en trop c'est juste avant la première balise ouvrante
<?php 
tout en début de ta page qu'il faut les chercher.

Attention aussi au soft que tu utilises pour envoyer tes fichiers chez free, selon le mode de transmission (ascii ou binaire) ça peut créer des pb sur le php
Modifié par zanzibar (27 Oct 2005 - 22:52)
zanzibar a écrit :

Pour l'espace en trop c'est juste avant la première balise ouvrante
<?php 
tout en début de ta page qu'il faut les chercher.

Attention aussi au soft que tu utilises pour envoyer tes fichiers chez free, selon le mode de transmission (ascii ou binaire) ça peut créer des pb sur le php

En fait, j'ai résolu le problème, j'ai tout recodé mes pages en ISO et plus en UTF-8 car je pense que SciTE (ou peut-être Fillezilla alors ? nan, le transfère ascii est nickel) gérait mal cela et me rajoutais un bit de caractère inconnu avant chaque include...
Du coup Brainwasher, mon style switcher semble fonctionner à merveille.
Reste à peaufiner les feuilles de styles Smiley cligne
Merci zanzibar, merci Brainwasher (PS, je reste sur ce topic jusqu'à ce que tu résolve ton problème).

edit : quelques iréductibles petits points d'interrogations à l'envers résistent sur pas mal de pages !
Modifié par tommybart2000 (28 Oct 2005 - 00:16)
Re bonjour,
Tes petits points d'interrogation à l'envers ça sent un peu les problèmes de codage caractères qu'on vient de discuter dans ce post
Cette fois, tous les problèmes sont résolus, c'est SciTE qui m'en faisait voir de toutes les couleurs avec le changement d'encodage !
edit Merci pour le lien, c'est exactement le problème que j'avais mais l'explication du W3C ne me satisfait pas trop Smiley cligne
Je pense que tout le monde n'est pas encore apte à adopter l'UTF-8 Smiley cligne
Modifié par tommybart2000 (28 Oct 2005 - 10:47)
zanzibar a écrit :
Alors pour le serveur en local tu peux utiliser easyphp ou wamp par ex, les procédures d'install sont décrites et ce n'est pas sorcier. Attention quand tu utilise ça débranche ta liaison adsl car ton pc devient un serveur ouvert à tous les vents! Si ça marche en local alors il y a peut être une astuce particulière chez free, essaie de regarder dans la FAQ de free sur l'utilisation du php.
Pour l'espace en trop c'est juste avant la première balise ouvrante
<?php 
tout en début de ta page qu'il faut les chercher.

Attention aussi au soft que tu utilises pour envoyer tes fichiers chez free, selon le mode de transmission (ascii ou binaire) ça peut créer des pb sur le php



hier soir j'ai installé easyphp et je l'ai également installé sur le pc de mon boulot. J'ai collé un mot de passe au root et changé dans le fichier de config, tout marche impec sauf mon switcher et comparé à ma base en ligne chez free là j'ai une erreur qui s'affiche comme je l'ai mentionné sur ma page précédente

il ne connait pas ma variable $css ! JE capte pas pourquoi alors qu'elle est déclarée juste au dessus !


<?php
	if(isset($_POST['change_style']))
	{
		if(file_exists("./".$_POST['style']."/style.css"))
		{
			setcookie('style', $_POST['style'], time()+(365*24*3600)) ;
			$css = $_POST['style'] ;
		}
	}
	elseif(isset($_COOKIE['style']))
	{
		$css = $_COOKIE['style'] ;
	}
	else
	{
		$css = "defaut" ;
	}
?>

 <?php
 function monheader($rubrique)
 {
 ?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
	<meta name="">
	<title><?php print"www.Isislafurette.com - $rubrique"; ?></title>

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


à l'execution de


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


Il me dit "Notice: Undefined variable: css in c:\program files\easyphp1-8\www\mwnn\miseenpage.php on line 40"

la ligne 40 correspond au code juste au dessus. Si quelque a une idée je suis preneur parce que là je capte pas, y'a bien $css = $_POST['style'] ; au dessus alors elle est déclarée Smiley biggol
Modifié par Brainwasher (28 Oct 2005 - 11:39)
j'ai remit des print pour tracer


<?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 = "defaut" ;
	}

	[#red]print"Juste avant de sortir de la partie php cookie : $css";[/#]
?>

 <?php
 function monheader($rubrique)
 {
	[#red]print"Juste avant la balise html : $css";[/#]
 ?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
	<meta blablabla">
	<title><?php print"www.Isislafurette.com - $rubrique"; ?></title>

	<?php
		[#red]print"Juste avant le stylesheet : $css";[/#]
		echo "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"".$css."/style.css\" />\n" ;
	?>


Résultat

Juste avant de sortir de la partie php cookie : defaut <= là elle est encore bonne mais se perd juste après
Notice: Undefined variable: css in c:\program files\easyphp1-8\www\mwnn\miseenpage.php on line 30
Juste avant la balise html :
Notice: Undefined variable: css in c:\program files\easyphp1-8\www\mwnn\miseenpage.php on line 48
Juste avant le stylesheet :
Notice: Undefined variable: css in c:\program files\easyphp1-8\www\mwnn\miseenpage.php on line 49


Je vais péter un câble, pourquoi est ce que JUSTE POUR MOI cette #!*:8O de variable perd elle son contentu ? Smiley bawling tout est dans le même fichier en plus
Modifié par Brainwasher (28 Oct 2005 - 11:59)
Je viens de capter ! Mais je sais pas comment résoudre le truc

le fait que mon utilisation de $css soit dans une fonction, pour la fonction cette variable est nouvelle et n'existe donc pas.

Comment déclarer ma variable css donc (alors qu'elle est déjà globale) afin de la faire connaître de ma fonction monheader() (fonction que j'appele dans chaque page pour éviter de me retaper l'entête à chaque fois.

Je suis un développeur moyen en php car je fais juste ça pour ma pomme alors mes connaissances sont limitées Smiley sweatdrop
AYEEEEEEEEEEEEEEEEEEEEEEE (le fait de parler tout seul ici me fait réfléchir en plus Smiley lol ), j'ai tout bêtement remonté mon


<?php
function monheader($rubrique)
{

au dessus de la partie php du cookie (le fait que le tuto impose cette partie tout en haut m'a induit en erreur en fait, dans mon cas, c'est juste après la déclaration de ma fonction monheader()
afin que tout soit dans la même fonction et que la valeur ne se perde pas. Maintenant mon css par défaut s'affiche bien et mon switcher fonctionne

comment c'est d'la balle

Merci à tous pour votre aide (Je ne peux malheureusement pas éditer le titre de ce topic car ce n'est pas moi qui l'ai créé, mais si un administrateur ou modérateur pouvait le faire (car je pense que dans ce topic la TOTALITE des questions que l'on peut se poser et leurs réponses sur le tuto du switcher, figurent dedans)

J'espere bien à mon tour aider le prochain qui aura un pépin (grâce à ça je me suis forcé à installer un serveur local ce qui n'est pas plus mal ^^)
Je suis content pour toi, ça fait tellement de bien de voir ses problèmes se résoudre !
Le problème c'est que dès qu'il y en a un de résolu on continue jusqu'à ce qu'on en rencontre un nouveau ! Smiley cligne
C'est vraiment tout ce qu'on nous apprend à l'école: résoudre des problèmes ...
Savez vous pourquoi le serveur local n'affiche pas les background-image: url("/images/papier.gif"); ??

Partout où j'ai des background dans mon css ils ne s'affichent pas en local mais sur Internet si, c'est assez étrange
Sympa tout ça, j'allais justement mettre en application le switchstyler, maintenant que j'ai deux feuilles de styles différentes. Via un lien donné sur le forum, je suis tombé sur cette page :

http://www.alistapart.com/articles/phpswitch/

Page que j'ai passé au traducteur google, parce que moi et l'anglais lol

JC'est donc une autre façon de faire, mais j'ai pas réussi à la mettre en marche tout de suite. J'ai donc utilisé votre tuto et là je dois dire que ça marche plutôt bien.

Mais est-on obligé de le faire via formulaire. Le lien que j'ai donné propose par exemple aussi ça à la place du formulaire :


<a href="./switcher.php?set=red">
click here to change to RED style!</a>


Ma question est donc. Est-ce que c'est transposable avec votre façon de faire php un petit peu différente, puisque le tuto en anglais propose de faire ça via un script php à part.




Brainwasher a écrit :
Savez vous pourquoi le serveur local n'affiche pas les background-image: url("/images/papier.gif"); ??

Partout où j'ai des background dans mon css ils ne s'affichent pas en local mais sur Internet si, c'est assez étrange


Pour te répondre, avec cette méthode qui met les feuilles css dans des dossiers il faut modifié la déclaration de chemin en conséquence.

Si dans ton dossier "Mon site" tu as un dossier "Image" avec tes images et un dossier "Styles" avec tes 2 dossiers dedans "style 1" et "style 2" alors tes images dans tes fichiers css tu devra les appeller comme ça
../Image/papier.gif en oubliant pas les deux petits points. Smiley cligne

Si on peut dire ça comme ça, les deux petits points indiquent le dossier "Mon site" et tout ce qu'il contient donc le dossier "Styles" et tout ce qu'il contient, (tes 2 feuilles de styles en l'occurence)

Sans les 2 points ca marcherait uniquement si tu avais tes fichier style.css directement dans le dossier Mon site, ce qui ne peut être le cas avec cette méthode.

Et n'oublie de garder la même hierarchie de dossier en local et sur ton ftp.
Modifié par Damonya (30 Oct 2005 - 19:36)
Ce que j'ai dis au début était en parfait rapport avec le sujet initial sur ce tuto du switchstyler. je demande simplement si c obligé de le faire en formulaire.

Et ma deuxième partie répondait à une question. j'aurais put ne pas le faire c vrai, mais c contre l'esprit du forum je crois bien.
Pages :