Changer CSS grace à un menu déroulant

Résolu/Fermé
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 - 1 avril 2010 à 12:27
lookman1 Messages postés 18 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 2 juillet 2011 - 2 avril 2010 à 09:35
Bonjour à tous !
Je recontre un tit souci pour modifier le css de ma plage avec un menu déroulant.
J'ai récupéré ce formulaire hier, qui me modifie bien le css de la page, mais une fois que je clique sur une autre url ou que je réactualise la plage, je retrouve le css par défaut.
Si qq a une idée pour m'aider à résoudre ce problème ça serait sympa !

Merci.

Voici le code que j'utilise :

<?php

if (isset($_GET['habillage']))// verifie que $_get existe

{

echo '<link rel="stylesheet" media="all" type="text/css" href="css/'.$_GET['choix'].'.css" />';// si oui placer la valeur de $_get dans la partie variable de la chaine de déclaration de style

}

else{ // si $_get n'existe pas (premier chargement de la page) valeur par défaut.

?> <link rel="stylesheet" media="all" type="text/css" href="css/rouge.css" />	

<?php

}

?>



	

</head>

<body>

<div id="conteneur">

	<form method="get" action="index.php"><!-- recharge la même page -->	  

		<fieldset>

			<legend>  Choix habillage  </legend>

				<p>

						<select name="choix">

							<option value="rouge">rouge</option>

							<option value="noir">vert</option>

							<option value="jaune">jaune</option>
                            
						</select>

							<input type="hidden" name="habillage" /> 

							<input type="submit" value="Ok" />

	   </fieldset>											

	</form> 
A voir également:

8 réponses

lalouviere84 Messages postés 116 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 19 janvier 2011 24
1 avril 2010 à 19:37
Un peu dans la même lignée que Alain_42 tu peux faire :

Sur la page index (la première ou tu choisi ton style)

<html>
<head>
<?php session_start()
$_SESSION['style']

if (isset($_GET['choix']))
{
$_SESSION['style']=$_GET['choix'];
echo '<link rel="stylesheet" media="all" type="text/css" href="css/'.$_SESSION['style'].'.css" />';
}

else{
echo'<link rel="stylesheet" media="all" type="text/css" href="css/rouge.css" />';
}
?>


Et sur toutes les autres pages :

<html>
<head>
<?php session_start()

if (isset($_SESSION['style']))
{
echo '<link rel="stylesheet" media="all" type="text/css" href="css/'.$_SESSION['style'].'.css" />';
}

else{
echo'<link rel="stylesheet" media="all" type="text/css" href="css/rouge.css" />';
}
?>


1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
1 avril 2010 à 20:33
L'idée est bonne mais le session_start() est à mettre en tout début de page.
Avant tout code html.
Sinon, on se retrouve avec un message de ce genre:
Warning:_Cannot_modify_header_information_-_headers_already_sent_by...
0
lalouviere84 Messages postés 116 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 19 janvier 2011 24
1 avril 2010 à 20:47
Oups...
Désolé, ça fait longtemps que je n'ai pas utilisé les variables de session

Très juste, très juste !!
0
lalouviere84 Messages postés 116 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 19 janvier 2011 24
1 avril 2010 à 13:05
Salut,

Tu devrais essayer de passer par les variables de session.

Sans trop y avoir réfléchi, il me semble qu'un truc du genre

session_start()
$_SESSION['style']

puis avec le choix dans ton menu déroulant tu affectes une valeur à la variable de session style :
$_SESSION['style']=$_GET['choix']

puis sur chaque page tu démarre la session

et :

echo '<link rel="stylesheet" media="all" type="text/css" href="css/'.$_SESSION['style'].'.css" />';


0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
1 avril 2010 à 18:34
Merci de ton aide.
J'ai essayé mais j'ai tjs le même pb, car dans l'url du fichier, après avoir choisi le css, j'ai "index.php?choix=noir&habillage=" et dès que je clique sur "index.php", le reste "choix=noir&habillage=" disparait et donc le css revient par défaut...

Mystère...

J'ai pas trouvé où je pouvais le mettre "$_SESSION['style']=$_GET['choix'] " tu peux m'éclairer ?

Merci.
0
lookman1 Messages postés 18 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 2 juillet 2011
1 avril 2010 à 18:47
salut,tu devras travailler avec les cookies ou une base de données
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 avril 2010 à 18:54
et comme ça:
<?php
session_start();
if (isset($_GET['choix']))// verifie que $_get existe

{
$_SESSION['habillage']=$_GET['choix'];
echo '<link rel="stylesheet" media="all" type="text/css" href="css/'.$_GET['choix'].'.css" />';// si oui placer la valeur de $_get dans la partie variable de la chaine de déclaration de style

}
elseif(isset($_SESSION['habillage'])){
	echo '<link rel="stylesheet" media="all" type="text/css" href="css/'.$_SESSION['habillage'].'.css" />';

}
else{ // si $_get n'existe pas (premier chargement de la page) valeur par défaut.

?> <link rel="stylesheet" media="all" type="text/css" href="css/rouge.css" />	

<?php

}

?>
0
lookman1 Messages postés 18 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 2 juillet 2011
1 avril 2010 à 19:40
oui apparemment,ça devrait marcher.dans les 2 premiers cas,il s'agit toujours de $_SESSION['habillage'] car tu as dit que $_SESSION['habillage']=$_GET['choix'];
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
2 avril 2010 à 08:20
Merci à tous de votre aide.
La page change bien de couleur, pas de souci, mais le pb (à ce que j'en pense) provient de l'url qui contient le fichier css.
A moins d'avoir l'idée divine, je ne voix pas comment conserver le "choix=noir&habillage=".
Je vais me mettre aux cookies, j'aurai surement plus de réussité... wait & see...
0
lookman1 Messages postés 18 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 2 juillet 2011
2 avril 2010 à 09:35
les cookies sont bien dans ce cas;tu peux aussi utiliser un champ dans une base de données si tu gères un espace membre.cette opportunité de changer le css sera donc donné seulement aux membres de ton site
0