Des liens vers plusieurs thémes css

Résolu/Fermé
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 - 19 nov. 2008 à 14:16
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 - 21 nov. 2008 à 15:58
Bonjour,
Mon site comporte un fichier design1.css qui désigne l'interface du site, j'ai envie de créer plusieurs fichiers css avec une interface différente (couleur, images,...) S'il vous plait comment faire pour qu'en cliquant sur un lien le thème se change, un appel vers design2 avec lien2 ou design3 avec lien3.

thème design 1
thème design 2 // en cliquant sur ce lien le thème change

Merci

12 réponses

xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
20 nov. 2008 à 09:29
Allez jt'ai corriger les erreurs, s'était vraiment pas méchant:
<?php
session_start();
$_SESSION['theme'] = 'design'; 
?>
<html>
	<head>
		<link rel="stylesheet" media="screen" type="text/css" title="Designn" href="<?php echo $_SESSION['theme'];?>.css" />
	</head>
	<body>
		<ul>
			<li ><a href='index.php?Designn=design'>1 Octet</a></li >
			<li ><a href='#'>Chabanus</a></li >
			<li ><a href='index.php?Designn=design3'>Marine</a></li >
			<li ><a href='index.php?Designn=design4'>Vertvert</a></li >
		</ul>

				      
<?php      
if (isset($_GET['Designn']))
{
  if($_GET['Designn'] == 'design')
   {
      $_SESSION['theme'] = 'design';
   }
  elseif($_GET['Designn'] == 'design3')
   {
      $_SESSION['theme'] = 'design3';
   }
elseif($_GET['Designn'] == 'design4')
   {
      $_SESSION['theme'] = 'design4';
   }

}
echo $_SESSION['theme'];
?>
</body>

petite explication:
Tu verifiais si la variable $_GET['theme'] == 'design', mais la variable $_GET['theme'] n'existe pas.
donc forcement... ^^
2
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
20 nov. 2008 à 09:42
Merci mais cela ne veut toujours pas fonctionner
Cette ligne je dois la copier dans toutes les pages ?
<?php
$_SESSION['theme'] = 'design';
?>
Est-ce que j'ai besoin d'écrire un fragment de ce code dans l'index.php ? Car ce code je l'ai écris dans une page menu.php qui est inclus dans l'index.
Merci
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 14:26
Défini une variable de session ;)
genre $_SESSION['theme'] = 'design1';

puis dans ton head tu inclus le fichier css de cette façon:
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="chemin/vers/tes/css/<?php echo$_SESSION['theme']; ?>.css" />
Après tu fais des liens qui dirige vers une condition qui change ta variable de session, pour que tu puisse les choisir
genre
<a href='index.php?design=design1'>design1</a>
<a href='index.php?design=design2'>design2</a>
<a href='index.php?design=design3'>design3</a>
<?php
if(isset($_GET('design'))
{
  if($_GET['theme'] == 'design1'
   {
      $_SESSION['theme'] = 'design1';
   }
  if($_GET['theme'] == 'design2'
   {
      $_SESSION['theme'] = 'design2';
   }
  if($_GET['theme'] == 'design3'
   {
      $_SESSION['theme'] = 'design3';
   }
[etc...]
}
?>

Et le tour est joué :)
Pense a définir la variable avec une valeur par défaut ;)

Ps: plutôt que de définir le nom du fichier css, tu peux egalement définir le nom des DIFFÉRENTS dossiers qui les contient: ça te permettra de stocker un dossier images différents pour chacun de tes designs ;)
1
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 14:43
Bah tu peux faire un truc simple:
Avant ton head, en tout cas avant ta ligne incluant le css, tu fais une petite verif:
if(!isset($_SESSION['design'])
{
   $_SESSION['design'] == 'design1';
}
(n'oublie pas, si ce n'est pas déjà fait, d'ouvrire une session: session_start() (en touuut début de fichier)

tu peux allé plus loin aussi, par exemple verifier que la valeur de la variable de session est bien autorisé:
if($_SESSION['design']!='design1' AND $_SESSION['design']!='design2' AND $_SESSION['design']!='design3')
{
   $_SESSION['design'] == 'design1';
}

plus long, mais on est jamais trop prudent en prog ^^

Bonne chance ;)
1
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
20 nov. 2008 à 09:54
Non pas besoin, l'avantage d'une variable de session, c'est qu'elle est définis sur la durée:
par exemple, lorsque tu te connecte sur un site, une session est crée avec, par exemple, une variable de session pour le pseudo, une pour ton n° d'identifiant, etc etc...
Elle sont "supprimées" lorsque tu te déconnecte, ou lorsque tu est inactif pendant longtemps.

Par contre, tu dois ouvrir la session ( <?php session_start();?> ) sur chaque page ou tu utilise une variable de session; et etant donné que tu utilise une variable de session pour definir ton fichier css, tu dois l'ouvrire sur presque toutes tes page;
Sauf, il y a un sauf ^^ et heureusement qu'il est la:
Sauf si tu as un tronc commun.

Par exemple, tu peux créer un fichier "head.php" qui contiendra l'ouverture de session, suivis de toute ta partie <head></head> et que tu inclura dans toute tes pages ( <?php include('head.php');?> )
Comme ça le jour ou tu dois modifier une partie de ton head, tu n'aura qu'a modifier ton fichier head.php et hop, toutes les pages seront mise a jours en même temps ;)
1

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

Posez votre question
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
20 nov. 2008 à 10:34
Y'a pas de quoi ;)
Bonne continuation.

Cdlt :)
1
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
19 nov. 2008 à 14:37
$_SESSION['theme'] = 'design1'; // design1 c'est mon thème actuel, je suis donc obligé d'affecter design1 au debut.
Merci je vais essayer :p
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
19 nov. 2008 à 22:36
On me dit qu'il y a une erreur sur cette ligne:
if(isset($_GET('designn'))
Parse error: syntax error, unexpected T_IF in /www/sites/1/ifrance.com/1/o/1octet/site/index.php on line 102

<div id="menu"> <?php include("menu.php") 

if(isset($_GET('designn'))
{
  if($_GET['theme'] == 'design')
   {
      $_SESSION['theme'] = 'design';
   }
if($_GET['theme'] == 'design2')
   {
      $_SESSION['theme'] = 'design2';
   }
  if($_GET['theme'] == 'design3')
   {
      $_SESSION['theme'] = 'design3';
   }
       if($_GET['theme'] == 'design4')
   {
      $_SESSION['theme'] = 'design4';
   }

}



?> </div>

S'il vous plait aidez-moi a trouver l'erreur merci
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
19 nov. 2008 à 23:00
J'ai fais comme vous aviez dit ça veut pas.

cela avant le code html:
session_start();
$_SESSION['theme'] = 'design'; 


celui-ci entre le HEAD:
<link rel="stylesheet" media="screen" type="text/css" title="Designn" href="<?php echo $_SESSION['theme'];?>.css" />

et cela entre le body:
<ul>
<li ><a href='index.php?Designn=design'>1 Octet</a></li >
<li ><a href='#'>Chabanus</a></li >
<li ><a href='index.php?Designn=design3'>Marine</a></li >
<li ><a href='index.php?Designn=design4'>Vertvert</a></li >
			    </ul>
				      
            <?php      
if (isset($_GET['Designn']))
{
  if($_GET['theme'] == 'design')
   {
      $_SESSION['theme'] = 'design';
   }
  elseif($_GET['theme'] == 'design3')
   {
      $_SESSION['theme'] = 'design3';
   }
elseif($_GET['theme'] == 'design4')
   {
      $_SESSION['theme'] = 'design4';
   }

}

?>
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
19 nov. 2008 à 23:14
Personne ne peut m'aider a trouver l'erreur ? Svp
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
20 nov. 2008 à 10:18
J'ai enlevé tt les variables de session au début de la page et c'est résolu merciiiiiiiiiiiiiiiii
bonne fin de semaine ;-) et merci encore pour ton aide
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
20 nov. 2008 à 14:02
Sur l'index, avec la session_start() dans les deux menus et l'entête, le thème marche bien, mais lorsque je vais sur une autre page telle inscription.php avec session_start() inclus, le thème disparu ! Pourquoi ?
S'il vous plait merci de m'aider
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
20 nov. 2008 à 19:43
Y a pas une variable qui permettrait de garder la sauvegarde du changement de la variable $_SESSION['theme'] ?
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
21 nov. 2008 à 12:00
le theme disparait ?
c'est a dire ?
tu n'a plus aucun style, ou c'est le thème par défaut qui reviens ?
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
21 nov. 2008 à 13:56
Le thème par défaut qui revient

L'index du site:
<?php
session_start();
.
.
.
?>
<html>
.
.
<head>
<link rel="stylesheet" media="screen" type="text/css" title="designs" href="<?php echo $_SESSION['theme'];?>.css" />
.
.
.
</head>
<body>
.
.
.
<div id="menu">

<?php include("menu.php") ?>
</div>
.
.
.
</body>


Le contenu du menu:

<?php
session_start();
$_SESSION['theme'] = 'design';
?>
<html>
.
.
<head>
<link rel="stylesheet" media="screen" type="text/css" title="designs" href="<?php echo $_SESSION['theme'];?>.css" />
.
.
.
</head>
<body>
.
.
.
<div class="element_menu">
<h3> Nos Thèmes</h3> <br/>

<ul>
<li ><a href='index.php?designs=design'>1 Octet</a></li >
<li ><a href='#'>Chabanus</a></li >
<li ><a href='index.php?designs=design3'>Verdure</a></li >
<li ><a href='index.php?designs=design4'>Marine</a></li >
<li ><a href='index.php?designs=design5'>Bonbon</a></li >
</ul>
<?php

if (isset($_GET['designs']))
{
if($_GET['designs'] == 'design')
{
$_SESSION['theme'] = 'design';
}
elseif($_GET['designs'] == 'design3')
{
$_SESSION['theme'] = 'design3';
}
elseif($_GET['designs'] == 'design4')
{
$_SESSION['theme'] = 'design4';
}
elseif($_GET['designs'] == 'design5')
{
$_SESSION['theme'] = 'design5';
}

}


?>
</ul></div>
.
.
.
</body>


Voici la page à laquelle je m'oriente pour voir si le thème reste:


<?php
session_start();
$_SESSION['theme'] = isset($_GET['designs']) ? $_GET['designs'] : "design";
.
.
.
?>
<html>
.
.
<head>
<link rel="stylesheet" media="screen" type="text/css" title="designs" href="<?php echo $_SESSION['theme'];?>.css" />
.
.
.
</head>
.
.
.
<body>
.
.
.
</body>


Si tu veux essayer voici le lien http://1octet.ifrance.com .

Merci de m'aider c'est gentil :P
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
21 nov. 2008 à 14:00
tu dois definir $_SESSION['theme'] = 'design'; sans aucune condition.
surement juste après ton session_start();

modifie cette ligne en ajoutant une condition:
if(empty($_SESSION['theme'])){$_SESSION['theme'] = 'design'; }
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
21 nov. 2008 à 15:58
C'est ok merci :D
0