IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Session : récupération des variables dans la page en cours


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 35
    Points
    35
    Par défaut Session : récupération des variables dans la page en cours
    Bonjour,

    Je ne sais pas si je poste au bon endroit car je suis débutante mais il s'agit d'un problème de session.
    Voici le souci :
    J'ai un formulaire où je demande des couleurs (de texte et de fond) pour les sauvegarder dans des variables de session.
    Il y a un lien vers une autre page qui utilise ces variables de session et cela fonctionne

    Mon problème est que je voudrais que quand je valide le formulaire (et que je mets à jour donc les variables de session) et que je reste dans la page courante, les nouvelles variables de session soient prises en compte, mais cela ne fonctionne pas. Il me faut charger une autre page puis recharger la page en question pour voir la mise à jour des variables de session.
    Je ne comprends pas pourquoi. Pourriez-vous m'aider à comprendre ce qui ne va pas ?

    Le code pour la page du formulaire qui met à jour les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
    	$couleurTexte = 'black';
    	$couleurFond='white';
     
    	//On récupère les variables de session si elles existent
    	session_start();
    	if(isset($_SESSION['couleurFond'])){
    		$couleurFond = $_SESSION['couleurFond'];
    	}
    	if(isset($_SESSION['couleurTexte'])){
    		$couleurTexte = $_SESSION['couleurTexte'];
    	}
     
    ?>
    <!Doctype html>
    <html>
    	<head>
    		<meta charset = 'UTF-8'/>
    		<style type="text/css">
    			<?php 
    				echo 'h1,h2{background-color : '.$couleurFond.'; color : '.$couleurTexte.';}';
    			?>
    		</style>
    	</head>
    	<body>
    		<h1>Livre - chapitre 12 : Les sessions</h1>
    		<h2>Exercice 7</h2>
    			<?php
    				echo <<<_ENONCE
    				Reprendre l’exercice 1 en enregistrant les préférences du visiteur dans des variables de session 
    				pour afficher toutes les pages du site avec ses couleurs préférées.
    				Ex 1 :
    				Créer un formulaire de saisie des deux codes couleur préférés du visiteur
    				du site pour la couleur de fond et le texte de la page. 
    				Les enregistrer dans deux cookies valables deux mois. 
    				À l’ouverture de la page d’accueil, récupérer ces valeurs et créer un style utilisant ces données.
    _ENONCE
     
    			?>
     
    			<p>Formulaire :</p>
    			<setfield><legend>Vos préférences</legend>
    				<form method = 'post' action = '#' >
     
    					<label for = 'couleurFondHtml'>Couleur du fond : </label><input type = 'text' name = 'couleurFond' <?php echo "value=$couleurFond"; ?> id ='couleurFondHtml' /><br />
    					<label for = 'couleurTexteHtml'>Couleur du texte : </label><input type = 'texte' name = 'couleurTexte' <?php echo 'value='.$couleurTexte; ?> id = 'couleurTexteHtml'/><br />
    					<input type = 'reset' value = 'Anciennes valeurs' />
    					<input type = 'submit' value = 'Enregistrer' />
    				</form>
    			</setfield>
     
    			<?php
    				//Si le formulaire a été renseigné
    				if(isset($_POST['couleurFond']) && isset($_POST['couleurTexte'])){				
     
    					//On enregistre les variables de session avec les champs du formulaire
    					$_SESSION['couleurFond'] = $_POST['couleurFond'];
    					$_SESSION['couleurTexte'] = $_POST['couleurTexte'];
    				}
    		?>
     
    			<p><a href='livreChap12Ex7b.php'>Lien vers une autre page</a></p>
     
    	</body>
    </html>
    Le code de la page qui se contente de récupérer les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <!Doctype html>
    <html>
    	<head>
    		<meta charset = 'UTF-8'/>
    	</head>
    	<body>
    		<h1>Livre - chapitre 12 : Les sessions</h1>
    		<h2>Exercice 7</h2>
    			<?php
    				echo <<<_ENONCE
    				Reprendre l’exercice 1 en enregistrant les préférences du visiteur dans des variables de session 
    				pour afficher toutes les pages du site avec ses couleurs préférées.
    				Ex 1 :
    				Créer un formulaire de saisie des deux codes couleur préférés du visiteur
    				du site pour la couleur de fond et le texte de la page. 
    				Les enregistrer dans deux cookies valables deux mois. 
    				À l’ouverture de la page d’accueil, récupérer ces valeurs et créer un style utilisant ces données.
    _ENONCE
    			?>
    			<h3>Page récupérant les variables de session :</h3>
     
     
    			<?php
     
    				session_start();
     
    				//On récupère les variables de session si elles existent
    				if(isset($_SESSION['couleurFond'])){
    					$couleurFond = $_SESSION['couleurFond'];
    				}
    				if(isset($_SESSION['couleurTexte'])){
    					$couleurTexte = $_SESSION['couleurTexte'];
    				}
     
    				echo '<p>Couleurs du texte : '.$couleurTexte.'</p>';
    				echo '<p>Couleurs du fond : '.$couleurFond.'</p>';
    			?>
    			<p><a href='livreChap12Ex7.php'>Lien vers Préférences</a></p>
    	</body>
    </html>
    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans ton deuxième code, le session_start() doit être en première ligne, avant tout envoi HTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    session_start();
    ?>
    <!Doctype html>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 35
    Points
    35
    Par défaut
    Bonjour et merci,

    J'ai modifié et mis le démarrage de session en première ligne dans le deuxième code, cependant cela ne change rien car mon deuxième code fonctionnait déjà.

    Ce qui ne fonctionne pas est dans le premier code : je voudrais qu'en cliquant sur le bouton "Enregistrer", cela me ré-affiche la même page de formulaire mais avec les nouvelles valeurs des variables de session. Or cela n'est pas le cas, j'obtiens bien la même page de formulaire mais avec les anciennes valeurs des variables de session.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut que ton test sur le formulaire soit effectué avant l'affichage alors en toute logique.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 35
    Points
    35
    Par défaut
    Oui c'est ce que je crois avoir fait... Je récupère bien ces variables avant l'affichage du formulaire... C'est pour cela que je ne comprends pas pourquoi ça ne fonctionne pas.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu vois bien que ton traitement de $_POST est tout à la fin du script ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 35
    Points
    35
    Par défaut
    Ah oui je ne m'étais préoccupée que des $_SESSION.
    J'ai déplacé le traitement des $_POST et effectivement ça fonctionne.

    Merci pour l'aide et aussi pour les cours et tutoriels PHP !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/04/2011, 12h15
  2. Récupération de variable dans la page modification
    Par marjoryy dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/08/2009, 12h39
  3. Réponses: 5
    Dernier message: 30/06/2009, 23h21
  4. Passer des variables dans une page pop up
    Par philippef dans le forum Langage
    Réponses: 5
    Dernier message: 15/07/2008, 20h38
  5. récupération des variables système dans pl/sql
    Par neqrouzbr dans le forum PL/SQL
    Réponses: 2
    Dernier message: 28/03/2007, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo