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] Difficulté de compréhesion de l'utilisation de la variable $_SESSION [PHP 5.6]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Par défaut [session] Difficulté de compréhesion de l'utilisation de la variable $_SESSION
    Bonjour, c'est la première fois que je poste un message car je n'aime pas "demander" et "déranger" pour des questions qui vont certainement vous paraître enfantines mais tant pis je tente ma chance.
    Je vous explique mon problème qui somme toute paraît assez simple mais que je n'arrive pas à résoudre.
    J'ai 3 fichiers (je vous mettrai les codes juste après):
    1) un fichier d'accueil (index.php) contenant un formulaire de recherche d'ingrédient
    2) un fichier affichant le résultat de la recherche (recherche_ing.php)
    3) un fichier d'ajout d'un ingrédient non trouvé (ajout_ing.php)

    Mon but est de récupérer la valeur contenue dans index.php (nommée Id_ing) sur la page ajout_ing.php si l'ingrédient n'a pas été trouvé.
    Sachant que sur la page recherche_ing.php j'arrive bien à récupérer la valeur de Id_ing (vérifié par un écho).
    J'ai donc créé une variable $_SESSION que j'ai mise en début de fichier recherche_ing.php et dès que j'essaie de réutiliser cette donnée dans ajout_ing.php il génère le message d'erreur suivant:
    Undefined variable: _SESSION in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test\ajout_ing.php on line 2
    Je me trompe très certainement dans la syntaxe mais je ne vois pas où est mon erreur.
    Merci de m'aiguiller.
    Cordialement,
    Christophe

    Code des pages
    Index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <header>
    <title>Bienvenue sur le site</title>
    </header>
    <body>
    <form name= "ingredient" method = "post" action="recherche_ing.php">
     Tapez le nom d'un ingrédient :<input type = "text" name ="Id_ing" />
     <input type = "submit" name = "Valid" value = "Valider">
    <br>
    </form>
    </html>
    recherche_ing.php
    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
     
    <?php
    session_start();
    $id = $_POST['Id_ing'];
    $_SESSION ['Id_ing'] = $id;
    echo $id;
     
    try
    {
    $bdr= new PDO('mysql:host=localhost;dbname=recettes;charset=utf8', 'root', '');
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    $requete = $bdr->prepare('SELECT lib_ing from ingredients where lib_ing LIKE ?');
    $requete->execute(array("$id%"));
     
    $nbresult = $requete->rowcount();
    echo '<br>';
    if ($nbresult == 0) {
    	echo "ingrédient non trouvé. Voulez-vous rajouter cet ingrédient à la liste?";
    	?>
    <form name = "ajout_ing" method= "post" action= "ajout_ing.php">
    <input type = "submit"  value = "Oui" name ="ajout_ing"/>
    </form>
    <form name = "retour" method= "post" action= "index.php">
    <input type = "submit" value = "Non" />
     
    <?php	
    }
    else 
    {	
    while($donnees = $requete->fetch())
    {
    	echo '<li>'. $donnees['lib_ing'];
     
    }
    }
    ?>
    ajout_ing.php

    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
     
    <?php
    $id= $_SESSION['Id_ing'];
    echo $id;
    /*try
    {
    $bdr= new PDO('mysql:host=localhost;dbname=recettes;charset=utf8', 'root', '');
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    $requete=$bdr->prepare ("insert into 'ingredients' values  '','?'");
    $requete->execute(array($id));
    echo "ingrédient ajouté avec succès";
    */
    ?>
    <form name= "retour" action = "index.php">
    <input type = "submit" value = "retour" /> 
    </form>

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Pour pouvoir utiliser la variable globale $_SESSION, il faut commencer par démarrer la session.
    Pour cela, il faut utiliser la fonction session_start()

    Attention, cette fonction doit être présente le plus haut possible dans le code et avant le moindre output !
    Il faut également appeler session_start() dans tous les fichiers. Donc si tous tes fichiers sont séparés et ne chargent pas un fichier commun (par exemple config.php ou autre), alors il faudra écrire session_start() en haut de chaque fichier.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Par défaut Merci!!!
    Merci c'est çà que je n'avais pas compris je n'avais effectivement pas mis l'instruction session_start() en début de fichier ajout_ing.
    Encore merci de votre réactivité!!
    Bonne journée à tous!!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/04/2014, 10h17
  2. Difficulter d'implémenter un JTable utilisant un model
    Par coolanso dans le forum Composants
    Réponses: 1
    Dernier message: 14/03/2011, 21h42
  3. Réponses: 4
    Dernier message: 13/03/2007, 13h19
  4. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 12h23
  5. Réponses: 4
    Dernier message: 05/06/2002, 15h35

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