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 :

Variable session dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut Variable session dans une boucle
    Bonjour,

    j'ai besoin d'un petit conseil.

    J'ai une page index.php, dans laquelle, est en include une page listing.php.

    Cette page listing.php, liste grace à une boucle while, une série de lignes issues d'une base de données.

    Lorque je clique sur une ligne, un lien href crée par onclick une iframe avec plusieurs onglets.
    Chacun des onglets étant une page php différente.

    Jusque là, pas de problème majeur.

    J'ai besoin de conserver au travers toutes ces pages, la référence/identifiant de la ligne sur laquelle j'ai cliqué dans ma page listing.php.

    Je ne peux pas utiliser une variable get car je la perd à chaque changement d'onglet/page.
    Je ne peux pas utiliser non plus de variable post car ma liste n'est pas un formulaire.

    J'ai donc pensé à une variable de session

    Mon problème, que je vous soumet, est comment faire pour créer cette variable de session qui stockera la référence/identifiant au moment du clique sur la ligne.
    Jusque là tous mes essais, n'ont rien donné, si ce n'est que comme il s'agit d'une boucle, la variable de session qui est créée, conserve la référence de la dernière ligne.


    Si quelqu'un a une idée, je suis preneur.

    Avec mes remerciements

    Alain

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'ais mal compris, ou tu veux stoquer les reference/identifiant
    il suffit que l'un des PHP appelé par le javascript reçoive en GET ces deux données et les mettent en session !
    ainsi tout les PHP auront l'info !

    Mais il faut faire cela avec soins pour ne pas écraser la valeur de session
    par exemple en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $lieu = (isset($_SESSION['lieu'])) ? $_SESSION['lieu'] : '';
    if ($lieu !="") echo "il y a dejas des données" ;
    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut Pb Variable session dans une boucle
    Bonjour,

    Merci pour ta réponse,
    L'idée est bonne, je la retiens, cependant, sauf si je n'ai pas tout compris ni tout essayé encore, elle m'oblige à diverses manipulations de variables mais le résultat est là.

    Je te mets un exemple de mon code, pour que tu visualises mieux mon problème.

    J'ai une page index.php dans laquelle en include une page listing.php.
    Cette page listing.php est une liste d'annonces issues d'une base de données.
    Je récupère cette liste avec une boucle while.
    Dans cette boucle, je veux capturer la référence de cette annonce et la garder pour traitement sur toutes mes autres pages PHP.

    En suivant ton exemple, voici comment je l'envoie en GET.

    listing.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    if(isset($_GET['Ref']))             { $Ref          = $_GET['Ref']; } else { $Ref= "";}
        while ($row = mysql_fetch_array($result))
        {
         ...
         echo "    <a href='#' onclick='ouverture_fenetre(\"modif_annonce.php?Ref=$row[Numero_Annonce]\");' >";
         echo "    <img src='Images/Outils/modifier.png'  title='Modifier l'annonce'  border='0' alt='Modifier l'annonce' style='cursor:pointer' width='25' />";          
         echo "    </a>"; 
        }  
    ?>
    Sur la page modif_annonce.php, je récupère bien la variable GET $Ref, mais je veux également la récupérer sur les autres pages PHP ce qui n'est pas possible avec GET.

    Aussi je la copie dans une autre variable de session que je vais pouvoir récupérer dans les autres pages.

    modif_annonce.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    session_start();
    header("refresh: 1 url=modif_annonce.php" );
    if(isset($_GET['Ref'])) {$Ref = $_GET['Ref']; }  else { $Ref= "";}                          // Je récupère ma variable GET
     
    if(isset($_SESSION['Ref_Session'])) { $Ref_Session = $_SESSION['Ref_Session']; } else { $Ref_Session= "";} // Je déclare ma variable de session
    if (isset($_GET['Ref'])) {$_SESSION['Ref_Session']=$Ref ;}    // Je transfère la valeur de la variable GET dans la variable de session
     
    ?>
    Le souci est que la variable de session n'est prise en compte au chargement, je suis donc obligé de faire un refresh, mais ce n'est pas important.


    Avec mes remerciements pour ton conseil
    Cordialement
    Alain

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bien sur, tu conçoit mal les choses.

    1) Le session_start(); doit étre en premiére ligne du PHP principal
    2) il faut ne charger la session qu'une fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($Ref !="") {
        $_SESSION['Ref_Session']=$Ref ;
        $Ref_Session=$Ref;
    }
    3) Ne pas employer header("refresh: 1 url=modif_annonce.php" );Bref réfléchis a ce qui se passe lors des chagements de page.
    A++
    Christele
    Dernière modification par grunk ; 28/12/2012 à 08h48. Motif: Balises code :)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut Variable session dans une boucle
    Bonjour Christèle,

    Je viens d'essayer ta dernière solution, malheureusement elle ne fonctionne pas.
    Lorsque je change de page, la variable est bien transmise, mais lorsque je veux revenir sur la page modif_annonce.php. La variable session a disparu, écrasée par $Ref qui se retrouve à vide.

    Sinon, session_start est bien au début de la page.
    Et le Refresh, en fait ne sert à rien.

    Merci en tous cas pour ton aide.
    Cordialement
    Alain

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Donc tu n'appliques pas ce que je te demande, a savoir que lorsque la session est chargée on n' y touche plus ! surtout si $Ref =="")

    Tu ne semble pas comprendre ces mécanismes

    A++
    Christele

Discussions similaires

  1. Variables de session dans une boucle for
    Par lavande4 dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2008, 14h33
  2. [Syntaxe] Variable locale dans une boucle for
    Par Kaeguri dans le forum C++
    Réponses: 3
    Dernier message: 04/05/2007, 09h09
  3. variable session dans une requête
    Par foxofx dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 22h26
  4. [XSLT] Réutiliser une variable définie dans une boucle
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/10/2006, 16h49

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