Page 1 sur 2

recuperer une variable passé dans un lien

Posté : 26 janv. 2008, 12:20
par arno77
Bonjour à tous,

J'ai une variable insérer dans un lien comme suis

Code : Tout sélectionner

<a href="index.php?couleur='vert' ">Actus</a>
et j'essaie de recuperer la variable
if( $_GET['couleur']=='vert') {
              echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
else{
            echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_mauve.css" />'; }
 
Il y a un probleme dans mon code mais je ne vois pas lequel.

d'avance merci

Posté : 26 janv. 2008, 13:11
par cf357
Essaie exactement ça :

Code : Tout sélectionner

<a href="index.php?couleur=vert">Actus</a>
(sans les guillemets autour de 'vert' ;)

Posté : 26 janv. 2008, 14:48
par arno77
ca ne change rien

Les deux morceau de code son dans la même page si cela à une importance

Posté : 26 janv. 2008, 15:07
par cf357
Qu'est-ce que tu appelles "probleme dans ton code" ?

Tu as bien cliqué sur le lien pour observer les changements ?

Posté : 26 janv. 2008, 15:59
par arno77
oui il n'y a aucun changement.
voici tout le code qui se trouve sur la même page

if (isset($_GET['couleur'])){
            if( $_GET['couleur']=='vert') {
                echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
            elseif( $_GET['couleur']=='mauve') {
              echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
            elseif( $_GET['couleur']=='bleu') {
              echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
            elseif( $_GET['couleur']=='saumon') {
              echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
            elseif( $_GET['couleur']=='lie_de_vin') {
              echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
            elseif( $_GET['couleur']=='turquoise') {
              echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
            
        }else{
            echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_mauve.css" />';
        } 
echo'';
?>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Le Monde de Camille</title>
	</head>
	<body>
		<div id="global">
			<div id="header">
				<h1>Le Monde de Camille</h1>
			</div>
			<div id="center">
				<div id="content">
					<h2>Bienvenue</h2>
					<p>vous trouverez ici le contenue des pages demandees</p>
				</div>
				<div id="sidebar">
					<h3>Navigation</h3>
					<ul id="menu">
            <li><a href="index.php?couleur=mauve" title="Les actualitees">Actus</a></li>
						<li><a href="index.php?couleur=vert" title="Les videos">Mes videos</a></li>
						<li><a href="index.php?couleur=bleu" title="Les bandes sons">Mes sons</a></li>
						<li><a href="index.php?couleur=turquoise" title="Les photos">Mes photos</a></li>
						<li><a href="index.php?couleur=saumon" title="La construction">Ma maison</a></li>
						<li><a href="index.php?couleur=lie_de_vin" title="La famille">Ma famille</a></li>
					</ul>
				</div>
			</div>
			<div id="footer">
				<p>&nbsp;</p>
			</div>
		</div>
	</body>
</html>

Posté : 26 janv. 2008, 16:16
par cf357
Il faut que tu mettes ton code entre les balises <head> et </head> ;)

Posté : 26 janv. 2008, 16:24
par arno77
même comme ça cela ne marche pas

Posté : 26 janv. 2008, 17:08
par Truc
Qu'est-ce que tu appelles "probleme dans ton code" ?
J'insiste sur cette remarque... prend ton temps de bien expliquer ce que tu obtiens et ce que tu veux pour éviter de perdre ton temps à tourner en rond.

N'hésite pas à afficher les variables GET et autres pour vérifier leur contenu etc.

Posté : 26 janv. 2008, 17:17
par Power Web
Salut, ça sert à quoi de faire ça :
if( $_GET['couleur']=='vert') {
                echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
?

Autant faire :
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
     echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_' . $couleur; . '.css" />';
else
     echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_defaut.css" />';
Nan?

Posté : 26 janv. 2008, 17:19
par arno77
le probleme que j'ai c'est que si je fais un echo $_GET['couleur']
il affiche rien
il semble ne pas recuperer la variable entre en dessous

Posté : 26 janv. 2008, 17:24
par Power Web
Ok, bon essais ça :
<html>
    <head>
	<?php
		$couleur = htmlspecialchars($_GET['couleur']);
		
		if( isset($couleur) && !empty($couleur) )
		{
			if( preg_match('#vert|mauve|bleu|saumon|lie_de_vin|turquoise#i', $couleur) )
				echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
				
			else
				echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_mauve.css" />';
        } 
	?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Le Monde de Camille</title>
    </head>
La regex n'est pas obligatoire mais c'est plus sécurisé comme ça :) Et mets bien ta page au format *php ;)

Posté : 26 janv. 2008, 17:25
par cf357
Salut, ça sert à quoi de faire ça :
if( $_GET['couleur']=='vert') {
                echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
?

Autant faire :
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
     echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_' . $couleur; . '.css" />';
else
     echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_defaut.css" />';
Nan?
Ça ne revient pas tout à fait au même, car potentiellement on pourrait passer n'importe quelle valeur a 'couleur' et on se retrouverait avec une feuille inexistante :)
Mais dans son code, du coup il pourrait ecrire "vert" en dur directement lol

[edit] > OK avec ton message, bien sur =)


Arno77 >
Tu veux dire que si dans ta page (juste apres <body> par exemple) tu ecrit :

echo $_GET['couleur'];

et que tu accedes a ta pagne par "http://..../page.php?couleur=vert

Ca ne fait rien ?

Posté : 26 janv. 2008, 17:26
par Power Web
Salut, ça sert à quoi de faire ça :
if( $_GET['couleur']=='vert') {
                echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
?

Autant faire :
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
     echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_' . $couleur; . '.css" />';
else
     echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_defaut.css" />';
Nan?
Ça ne revient pas tout à fait au même, car potentiellement on pourrait passer n'importe quelle valeur a 'couleur' et on se retrouverait avec une feuille inexistante :)
Mais dans son code, du coup il pourrait ecrire "vert" en dur directement lol
Oui, c'est ce que j'ai compris après, c'est pourquoi j'ai inséré une simple regex dans le code précédent :)

Posté : 26 janv. 2008, 17:44
par arno77
je fais un

echo 'titi '.$_GET['couleur']. 'toto';

eet j'obtiens a l'affichage titi toto

Posté : 26 janv. 2008, 17:45
par cf357
Quand tu vas sur ta page comme ça :

http://..../mapage.php?couleur=vert

?