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 :

Supprimer variable de session après l'avoir affichée


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Points : 24
    Points
    24
    Par défaut Supprimer variable de session après l'avoir affichée
    Bonjour à tous,

    Je peine à comprendre d’où vient mon problème, je vous explique :

    Je tente d'afficher une alerte lorsque ma requete sql a été correctement effectuée par ma fonction dans ma classe.
    Je stock donc ma variable dans une session juste avant ma redirection avec header().
    J'ai ensuite une fonction qui s'occupe d'afficher mon message d'erreur.

    Mon problème, c'est que la variable de session créée, est automatiquement supprimée avant même d’être affrichée.

    Voila ma fonction qui initialise ma var de session

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	public function UpdateCandidat($idCandidat) {
     
    		global $key, $nomImage;
            [...........] // je coupe, c'est trop long
           			$_SESSION['MsgSuccess'] = 'Modifications enregistrées avec succès';
    			header('Location:'.PAGE_CANDIDAT_EDIT);
    }

    Ensuite ma fonction qui affiche le message :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function errorBox(){
    	if(isset($_SESSION['MsgError'])) :
    		echo '<div class="notification-box notification-box-warning"><p>'.$_SESSION['MsgError'].'<p><a class="notification-close notification-close-warning" href="#">x</a></div>';
    		unset($_SESSION['MsgError']);
    	elseif(isset($_SESSION['MsgSuccess'])):
    		echo '<div class="notification-box notification-box-success"><p>'.$_SESSION['MsgSuccess'].'<p><a class="notification-close notification-close-success" href="#">x</a></div>';
    		unset($_SESSION['MsgSuccess']);
    	elseif(isset($_SESSION['MsgInfos'])):
    		echo '<div class="notification-box notification-box-info"><p>'.$_SESSION['MsgInfos'].'<p><a class="notification-close notification-close-info" href="#">x</a></div>';
    		unset($_SESSION['MsgInfos']);
    	endif;
    }

    Puis l'appel de ma fonction
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="erreur"><?php errorBox();?></div>

    La variable $_SESSION[''MsgSuccess'] ne s'affiche pas, sauf si je supprime le unset($_SESSION[''MsgSuccess']) qui est censé supprimer ma variable après l'avoir affichée.

    Merci pour votre aide, j'ai passé la journée dessus !

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    Citation Envoyé par Augustule Voir le message
    La variable $_SESSION[''MsgSuccess'] ne s'affiche pas
    Oui si vous essayez d'afficher une variable $mess et non la session
    echo '<div class="notification-box notification-box-success"><p>'.$mess.'<p>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<div class="notification-box notification-box-success"><p>'.$_SESSION['MsgSuccess'].'<p>
    $moi= ( !== ) ? : ;

  3. #3
    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
    Est-ce que tu utilises des fonctions de bufferisation ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    papajoker, oui désolé c'était le reste d'un test que j'avais fait. Je corrige.

    sabotage, non

  5. #5
    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
    Ajoute un après ta redirection.

    Si ça fonctionne c'est que ton code après la redirection est mal conditionné.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Effectivement ça fonctionne avec exit();

    Qu'est ce que serait mal conditionné, la fonction errorBox() ?

  7. #7
    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
    Ca signifie que le code après le header() est executé et que le unset() doit en faire partie.

    Disons que soit tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (toto) {
        header()
    }
    else {
        reste de la page
    }
    Soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (toto) {
        header();
        exit();
    }
    reste de la page
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/04/2009, 11h46
  2. Supprimer variable de session
    Par oclone dans le forum ASP.NET
    Réponses: 1
    Dernier message: 27/10/2008, 16h55
  3. Réponses: 4
    Dernier message: 10/09/2008, 14h27
  4. Réponses: 9
    Dernier message: 02/09/2007, 21h39
  5. Supprimer une variable de SESSION
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2006, 15h29

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