recuperer une variable passé dans un lien

Eléphant du PHP | 130 Messages

26 janv. 2008, 12:20

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

Eléphant du PHP | 291 Messages

26 janv. 2008, 13:11

Essaie exactement ça :

Code : Tout sélectionner

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

Eléphant du PHP | 130 Messages

26 janv. 2008, 14:48

ca ne change rien

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

Eléphant du PHP | 291 Messages

26 janv. 2008, 15:07

Qu'est-ce que tu appelles "probleme dans ton code" ?

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

Eléphant du PHP | 130 Messages

26 janv. 2008, 15:59

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>

Eléphant du PHP | 291 Messages

26 janv. 2008, 16:16

Il faut que tu mettes ton code entre les balises <head> et </head> ;)

Eléphant du PHP | 130 Messages

26 janv. 2008, 16:24

même comme ça cela ne marche pas

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 janv. 2008, 17:08

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 61 Messages

26 janv. 2008, 17:17

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?
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Eléphant du PHP | 130 Messages

26 janv. 2008, 17:19

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

Eléphant du PHP | 61 Messages

26 janv. 2008, 17:24

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 ;)
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Eléphant du PHP | 291 Messages

26 janv. 2008, 17:25

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 ?
Modifié en dernier par cf357 le 26 janv. 2008, 17:26, modifié 1 fois.

Eléphant du PHP | 61 Messages

26 janv. 2008, 17:26

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 :)
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Eléphant du PHP | 130 Messages

26 janv. 2008, 17:44

je fais un

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

eet j'obtiens a l'affichage titi toto

Eléphant du PHP | 291 Messages

26 janv. 2008, 17:45

Quand tu vas sur ta page comme ça :

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

?