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 :

Boucle Foreach + sessions


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Boucle Foreach + sessions
    Bonjour toutes et à tous.

    Voilà mon souci (ça à l'air simple mais je n'y arrive pas) :

    La page 1 affiche 20 urls via un array() qui contient les liens (récupération classique par un foreach) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach($url as $cle=>$valeur)
    {
    $_SESSION['cle'] = $cle;
    $_SESSION['valeur'] = $valeur;
     
    echo "<a href='$valeur'>$valeur</a>";
    }


    Un clic sur un des liens et la page 2 voulue s' affiche. Ca, ça fonctionne.

    Mon problème : je voudrais "récupérer" la valeur du lien cliqué ou sa clé
    (qui sont des variables) sur la page 2.

    Mais :

    - la boucle foreach va jusqu'à la fin de sa lecture
    - et l' URL récupérée (et sa clé) est toujours le dernier de la liste (quel que soit le lien cliqué).

    Comment faire pour récupérer les variables par SESSION en page 2 quand on clique sur un lien de la page 1, en ciblant les bonnes variables ?

    Y-a-t-il une soluce dans mon cas ou c'est mission impossible ?

    Merci pour toute aide éventuelle, car je cela fait 2 jours que je suis dessus !


    Sabine.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 36
    Points : 30
    Points
    30
    Par défaut
    2 jours dessus ?

    Dans ta boucle foreach, a chaque fois tu dis que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['cle'] = $cle;
    $_SESSION['valeur'] = $valeur;
    Donc ton tableau $_SESSION ne contient jamais que 2 valeurs :
    $_SESSION['cle'] et $_SESSION['valeur']


    Pour "récupérer" la valeur du lien cliqué, 2 solutions:

    1°) $_SERVER['PHP_SELF'] contient l'URL. C'est le lien en question non?

    2°)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach($url as $cle=>$valeur)
    {
    $_SESSION['URL'][$cle] = $valeur;
     
    echo '<a href="'.$valeur.'&cle='.$cle.'>'.$valeur.'&cle='.$cle.'</a>';
    }
    Dans ta page 2,
    sera la clé de l'url, que tu pourras récupérer dans la session via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url_sur_laquelle_jai_clique = $_SESSION['URL'][ $_GET['cle'] ]

    Mais c'est du code pour apprendre, il n'est pas du tout sécurisé (j'imagine que tu n'es pas encore concerné par la sécurité).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci Doonge d'avoir pris le temps de réfléchir à mon pb... 2 jours car je ne suis pas très à l'aise en php !


    1/J'ai compris votre réponse et cela marche. Mais Je ne souhaiterai pas que la deuxième donnée soit envoyée en paramètre dans l'URL mais récupérée en variable de session dans la deuxième page avec session_start(); et echo $_SESSION['cle'];

    2/ A un autre endroit du site j'ai un foreach qui est simplifié comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foreach($var as $valeur)
    {
     
    $_SESSION['valeur0'] = $valeur['0'];
    $_SESSION['valeur1'] = $valeur['1'];
    $_SESSION['valeur2'] = $valeur['2'];
     
     
    echo "<a href='$valeur0'>$valeur0</a>";
    }

    La valeur0 permet de construire mon url et là encore comment faire pour récupérer en deuxième page les 2 autres variables (sans transmission en paramètre dans l'url). Je précise que la valeur2 est un texte de news de plusieurs lignes.

    Dans ce cas, est-ce encore possible ? Car là encore cela me retourne toujours en deuxième page les dernières variables de la liste quelque soit le lien cliqué.

    Merci encore Doonge pour ton aide précieuse...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 36
    Points : 30
    Points
    30
    Par défaut
    Ne surestime pas la valeur de mon aide, mais je suis enchanté de pouvoir t'aider.

    J'ai l'impression que tu mélanges beaucoup les "clés" et les "valeurs" dans ton esprit.

    Si tu imagines un local avec des casiers, les clés c'est le numéro des casiers (ou leur nom), tandis que la valeur c'est leur contenu.

    Je dis cela car dans votre code, je vois que vous utilisez la variable $valeur0, alors qu'elle n'existe pas ?
    Je vois qu'il existe $_SESSION['valeur0'], je vois qu'il existe $var, voire $valeur['0'] dans votre foreach, mais c'est tout : je ne vois pas de $valeur0.




    Concernant le 1°), et je crois que je vais peut-être couper court à vos espoirs, ou vos illusions, mais à votre niveau vous ne devriez pas encore penser qu'il est possible que votre session (disons ce qui est contenu dans la variable $_SESSION) puisse deviner magiquement quel est le lien sur lequel on clique.

    Lorsque je clique sur un lien quelque part, le site ne va pas "deviner" que "ah tiens c'est le lien n°5 que j'avais proposé sur la page précédente".

    Le but des sessions, et de la variable $_SESSION, c'est de vous permettre de garder en mémoire des informations sur un utilisateur qui visite votre site pendant un petit moment (par exemple s'il donne son nom au début, vous pouvez le conserver jusqu'à la fin de la session).
    C'est VOUS qui décidez de garder en mémoire ce que vous trouvez, c'est VOUS qui mettez des élements dans le casier $_SESSION pour y piocher plus tard.

    Le programme ne décide pas tout seul ce qu'il enlève, ce qu'il ajoute, ce qu'il garde dans $_SESSION. Si vous décidez d'ajouter des URL dans $_SESSION, le programme ne va pas comprendre que vous voulez qu'il supprime tout seul les "mauvaises" URL.




    Vu ce que je vois, je vous conseille d'expliquer ce que vous voulez faire, plutôt que demander ce qui ne va pas dans votre code, parce que je pense que c'est la façon dont vous vous y prenez qui est mauvaise, donc tout votre code est "mauvais" et ne vous permettra pas de faire ce que vous voulez.



    Si ce que vous voulez faire c'est savoir l'URL sur laquelle l'utilisateur a cliqué, je vous conseille de vous intéresser à la variable "automatique" $_SERVER

    http://php.net/manual/fr/reserved.variables.server.php

    C'est une variable qui se construit toute seule, et qui contient des choses utiles comme par exemple :

    $_SERVER['REQUEST_URI'] qui est "le lien sur lequel on a cliqué"
    (et qui vaut généralement $_SERVER['SERVER_ADDR'] . $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'] )

    $_SERVER['REQUEST_TIME'] qui donne "à quel moment" on a cliqué.

    $_SERVER['HTTP_USER_AGENT'] qui est la signature du navigateur qu'on utilise pour aller sur le site.

Discussions similaires

  1. [C# VS 2005] Collection et boucle foreach
    Par SDragon dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/07/2006, 19h43
  2. [C# 1.1]Boucles foreach imbriquees
    Par Nip dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/04/2006, 16h35
  3. boucle sur session
    Par sam01 dans le forum Langage
    Réponses: 6
    Dernier message: 21/03/2006, 17h31
  4. [Tableaux] la boucle foreach
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 09/03/2006, 17h29
  5. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20

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