8793 sujets

Développement web côté serveur, CMS

Bonjour,

je cherche a mettre un peu plus de vie dans mon site et je cherche a mettre un ou plusieurs boutons qui permettrais de changer la couleur de l'arrière plan de la page web.

Je voudrais faire ceci en php. Est ce possible ?

Auriez vous un lien qui l'expliquerais ? Ou encore un début de code qui me permettrait d'avancer ?

Merci d'avance pour votre aide

Amicalement
Lonewolf
Modifié par lonewolf (26 Jul 2008 - 10:55)
Re,

Voila ce que j'ai trouvé.

Ca fonctionne en l'etat. Mais je voudrais avoir votre avis sur le code.

Merci d'avance

Amicalement
Lonewolf

<html>
<?php
$a=array("<body bgcolor=\"red\">","<body bgcolor=\"blue\">");
?>
<form method="post">
<select name="couleur">
<option value="red">Couleur rouge</option><br/>
<option value="blue">Couleur bleue</option><br/>
</select>
<input type="submit" />
</form>
<?php
if ($_POST['couleur']=="red")
	{
	print ($a[0]);
	}
else
	{
	print ($a[1]);
	}
?>
</body>
</html>
Bon, j'ai un peu améliorer mon script et y ait ajouter une couleur par défaut avec "selected" mais à chaque fois je n'arrive pas sur la couleur par defaut défini.

Voyez vous ou ca cloche ?

<html>
<?php
$a=array("<body bgcolor=\"#FFCCFF\">","<body bgcolor=\"#CCFFFF\">","<body bgcolor=\"#99FF99\">","<body bgcolor=\"#E8E8E8\">");
?>
<form method="post">
<select name="couleur">
<option value="red">Couleur rose</option><br/>
<option value="blue">Couleur bleue</option><br/>
<option value="vert">Couleur verte</option><br/>
<option value="brun" 
selected="true">Couleur par defaut</option><br/>
</select>
<input type="submit" />
</form>
<?php
if ($_POST['couleur']=="red")
	{
	print ($a[0]);
	}
elseif ($_POST['couleur']=="vert")
	{
	print ($a[2]);
	}
elseif ($_POST['couleur']=="brun")
	{
	print ($a[3]);
	}
else
	{
	print ($a[1]);
	}
?>
</body>
</html>


Amicalement
Lonewolf
Bon ca y est mon code est au point et ca fonctionne.

A l'ouverture la couleur par défaut est celle passée dans le "else".

Donc pour choisir celle de départ il suffit de la placer dans le "else".

Problème résolu

Amicalement
Lonewolf

Exemple : couleur "brun" par defaut
<html>
<?php
$a=array("<body bgcolor=\"#FFCCFF\">","<body bgcolor=\"#CCFFFF\">","<body bgcolor=\"#99FF99\">","<body bgcolor=\"#E8E8E8\">");
?>
<form method="post">
<select name="couleur">
<option value="red">Couleur rose</option><br/>
<option value="blue">Couleur bleue</option><br/>
<option value="vert">Couleur verte</option><br/>
<option value="brun" 
selected>Couleur par defaut</option><br/>
</select>
<input type="submit" />
</form>
<?php
if ($_POST['couleur']=="red")
	{
	print ($_POST['couleur']);
	print($a[0]);
	}
elseif ($_POST['couleur']=="vert")
	{
	print ($_POST['couleur']);
	print($a[2]);
	}
elseif ($_POST['couleur']=="blue")
	{
	print ($_POST['couleur']);
	print ($a[1]);
	}
else
	{
	print ($_POST['couleur']);
	print ($a[3]);
	}
?>
</body>
</html>


Exemple : couleur "blue" par default

<html>
<?php
$a=array("<body bgcolor=\"#FFCCFF\">","<body bgcolor=\"#CCFFFF\">","<body bgcolor=\"#99FF99\">","<body bgcolor=\"#E8E8E8\">");
?>
<form method="post">
<select name="couleur">
<option value="red">Couleur rose</option><br/>
<option value="blue">Couleur bleue</option><br/>
<option value="vert">Couleur verte</option><br/>
<option value="brun" 
selected>Couleur par defaut</option><br/>
</select>
<input type="submit" />
</form>
<?php
if ($_POST['couleur']=="red")
	{
	print ($_POST['couleur']);
	print($a[0]);
	}
elseif ($_POST['couleur']=="vert")
	{
	print ($_POST['couleur']);
	print($a[2]);
	}
elseif ($_POST['couleur']=="brun")
	{
	print ($_POST['couleur']);
	print ($a[3]);
	}
else
	{
        print ($_POST['couleur']);
	print ($a[1]);
	
	}
?>
</body>
</html>

Modifié par lonewolf (22 Jul 2008 - 13:32)
Modérateur
Salut,

Juste une petite remarque : Au lieu d'utiliser à outrance le « elsif » tu as le switch. Je pense que c'est plus approprié.

++
Hello,

remarque très appropriée. Tu as raison.

Donc pour prendre en compte ta remarque et par la même occasion pouvoir mettre la couleur choisis sur toutes les pages du site, voila comment je m'y suis pris.

Sur chaque début de pag (avant <html>), j'ai rajouté :
<?php
session_start();
?>


Ensuite, j'ai également modifier mon body en l'incluant sur chaque page dans une variable tableau de cette manière :
<?php
$a=array("<body bgcolor=\"#FFCCFF\">","<body bgcolor=\"#CCFFFF\">","<body bgcolor=\"#99FF99\">","<body bgcolor=\"#E8E8E8\">");
?>


et pour terminer, j'ai créer un fichier "couleur" dans lequel j'ai inclus ce code :
<?php
switch ($_SESSION['couleur'])
{
	case"red":
	print ($a[0]);
	break;
	case"vert":
	print($a[2]);
	break;
	case "blue":
	print ($a[1]);
	break;
	default:
	print ($a[3]);
	break;
}
?>


Et enfin, j'ai inclus ce fichier dans mes pages par la fonction include de cette manière :
<?php
include("couleur");
?>


Est ce que ceci te parait correct ?

Merci de ta remarque, elle m'a permit de mieux mettre en place ce que je voulais faire (du moins plus proprement)

Amicalement
Lonewolf
Faudrait voir aussi la durée de vie de la session parce que si la couleur revient par défaut à chaque fermeture du navigateur ça va pas être marrant ...
Effectivement...

Remarque prise en compte, je regarde ca et vous tiens au courant.

Merci pour vos remarques constructives.

Amicalement
Lonewolf
Oupsss !!

Ca fonctionne ... sauf que lorsque je retourne sur mon index, je reprend automatiquement ma couleur par defaut.

Quelqu'un a une idée quand à la manière de resoudre ce problème ??

Amicalement
Lonewolf
Salut,
lonewolf a écrit :
Ca fonctionne ... sauf que lorsque je retourne sur mon index, je reprend automatiquement ma couleur par defaut.

Quelqu'un a une idée quand à la manière de resoudre ce problème ??
Il faudrait sauvegarder le dernier choix dans un cookie... D'ailleurs c'est très bien expliqué dans le tuto Faire un Style switcher en PHP ! Smiley cligne
Modérateur
Re,

Exact, un petit cookie va répondre à ton petit soucis.

Je rajouterai également comme remarque complémentaire qu'il est préférable d'insérer des styles dans une css externe ou en interne dans le head. Sinon, on sort automatiquement de la logique des CSS (séparation du contenu et de la forme).

Je ne me suis pas encore penché sur le sujet, mais je pense qu'il est simple d'éditer dynamiquement une css avec le php. Je pense que si on écrit une css dynamiquement, le soucis du cookie ne se pose même plus.

<<<EDIT
À moins de coupler les deux pour que l'utilisateur personnalise au mieux l'environnement.
EDIT;

++
Modifié par Nolem (23 Jul 2008 - 21:55)
Bonjour,

alors j'ai essayé par le cookie mais je n'ai aucun résultat.

Voici comment j'ai procédé :

en début de texte avant le <html>, j'ai mis ceci :
<?
$expire = 365*24*3600; // on définit la durée du cookie, 1 an
setcookie("style","$_SESSION['couleur']",time()+$expire);  // on l'envoi
?>


Et ensuite juste pour voir si ca fonctionnait j'ai mis en bas du texte (donc entre <html> et </html> ceci :
<?

// On affiche la valeur de style
echo "Bonjour $_COOKIE["style"]";
?>


Mais même si je recharge, rien ne s'affiche donc je suppose que mon cookie ne fonctionne pas.

Ou ais je mer*** ?

Merci pour votre aide.

Amicalement
Lonewolf
Modifié par lonewolf (24 Jul 2008 - 16:19)
Bon ben j'ai un peu avancé. et voici le résultat du fruit de mes recherches.

Alors en reprenant mon code d'exemple, ca fonctionne si j'utilise un if

Explication en if :[/]

En début de page, je crée mon cookie
<?
$expire = 365*24*3600;  // on définit la durée du cookie, 1 an
setCookie("style",$_POST['couleur'],time()+$expire);
?>


Ensuite à la suite de mes if, elseif, j'utilise le code suivant et ca fonctionne :
<?php
if ($_POST['couleur']=="red")
	{
	print ($_POST['couleur']);
	print($a[0]);
	}
elseif ($_POST['couleur']=="vert")
	{
	print ($_POST['couleur']);
	print($a[2]);
	}
elseif ($_POST['couleur']=="blue")
	{
	print ($_POST['couleur']);
	print ($a[1]);
	}
elseif ($_POST['couleur']=="brun")
	{
	print ($_POST['couleur']);
	print ($a[3]);
	}
else
	{
	print ($_COOKIE['style']);
	if ($_COOKIE['style']=="red")
		{
		print($a[0]);
		}
	elseif ($_COOKIE['style']=="vert")
		{
			print ($a[2]);
		}
	elseif ($_COOKIE['style']=="blue")
		{
			print($a[1]);
		}
	else
		{
			print($a[3]);
		}
	}
?>


[b]Explication en switch
:

Ensuite même cookie en début de page

Et ensuite le switch
<?php
switch ($_POST['couleur'])
{
	case"red":
	print ($a[0]);
	break;
	case"vert":
	print($a[2]);
	break;
	case "blue":
	print ($a[1]);
	break;
	case "brun":
	print ($a[3]);
	break;
	default:
		switch ($_COOKIE['style'])
		{
			case "red":
			print ($a[0]);
			break;
			case"vert":
			print($a[2]);
			break;
			case "blue":
			print ($a[1]);
			break;
			default:
			print ($a[3]);
			break;
		}
}
?>


Néanmoins, il reste un souci. Si je ne reclique pas pour confirmer la couleur choisie ou une autre couleur et à la deuxième relance du navigateur, j'ai de nouveau la couleur par defaut.

Je me rapproche mais ce n'est pas encore cela

Merci pour votre aide

Amicalement
Lonewolf[/b]
Comme je te disais, le mieux serait de décortiquer le tuto sur le Style Switcher et de voir (et comprendre Smiley cligne ) comment l'écriture du cookie est effectuée.
Bonjour,

Problème résolu. Il fallait juste tester si le post existait.

J'ai donc rajouter un ligne de test dans mon cookie et ca fonctionne.

Mon cookie :

<?
if(isset($_POST['couleur'])){
$expire = 365*24*3600;  // on définit la durée du cookie, 1 an
setCookie("style",$_POST['couleur'],time()+$expire);
}
?>


Amicalement
lonewolf