Changer CSS grace à un menu déroulant

Résolu
Aresledieu Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -  
lookman1 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   24
 
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   Statut Membre Dernière intervention   475
 
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   Statut Membre Dernière intervention   24
 
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   Statut Membre Dernière intervention   24
 
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   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   13
 
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   Statut Membre Dernière intervention  
 
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