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 :

Mauvaise variable de session et affichage page par page


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut Mauvaise variable de session et affichage page par page
    Bonjour,
    j'ai fait 3 pages pour interroger une base de données :
    accueil : formulaire
    résultat : liste abrégée des réponses
    détail : détail d'une réponse.

    l'affichage de la page résultats se fait sur plusieurs pages.
    Mon problème est que les variables de session issues de cette page résultat sont toujours les derniers résultats de la liste.
    la page "détail" ne donne donc que les résultats qui concernent la dernière ligne, même si je sélectionne autre chose.

    J'ai vu cela en faisant
    print_r($_SESSION) ;


    Pour définir ces variables de session, j'ai écrit ma requête puis utilisé WHILE et j'ai mis alors la définition des variables, juste avant l'affichage des résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ($data = mysql_fetch_array($req1)) 
    	{
    $_SESSION['auteur_resultat']=stripslashes(trim($data['auteur']));
    $_SESSION['titre_resultat']=stripslashes(trim($data['titre']));
    $_SESSION['clef_resultat']=stripslashes(trim($data['clef']));
     
     // on affiches les résultats dans la table
     
    echo '<form action="ressources_resultats.php" method="post" id="formulaire">Référence :<input type=\"text" name="clef" size="4" value="'.$_SESSION['clef_resultat'].'">';
     
    echo '<span class="description">',$_SESSION['titre_resultat'],'</span>';
    il y a un <form> pour recupérer ensuite la sélection de la ligne et la passer à la page suivante, mais je n'ai pas mis tout le code pour ne pas surcharger la page.

    est-ce que quelqu'un a une idée de ce qui peut poser problème ? pourquoi $_SESSION['clef_resultat'] prend d'office la valeur de la dernière ligne de mon tableau ?


    Merci par avance pour votre aide,

    Caroline

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    C'est un peu logique.
    A chaque tour de ta boucle while, tu écrases la variable de session précédemment affectée.

    Tu peux corriger de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $_SESSION['auteur_resultat']= array();
    ...
    while ($data = mysql_fetch_array($req1)) 
    	{
    $_SESSION['auteur_resultat'][]=stripslashes(trim($data['auteur']));
    ...
    Tu vas te retrouver avec du code un peu imbuvable mais bon...

  3. #3
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    merci, je vais essayer avec cela;
    tu dis que le code va être imbuvable et je te crois. Tu penses qu'il y a un moyen plus propre d'arriver au même résultat ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Dans un premier temps, tu ne devrais pas avoir à faire stripslashes et trim sur des données sortant d'une base de données.

    Pour éviter le stripslashes, utilise mysql_real_escape_string à l'insertion à la place de addslashes.
    Ensuite les données devraient être "trimées" avant d'être enregistrées.

    Si c'est trop tard et que ta base est peuplée, c'est dommage
    Dans ce cas, tu n'as plus qu'à faire des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $data['auteur'] = stripslashes( trim( $data['auteur'];
    ...
    C'est pas très grave, c'est juste du code inutile.

    Ensuite pour ranger en session, j'imagine que ces données représentent quelque chose (des textes ou livres j'imagine ?)

    Donc tu peux faire quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $_SESSION['texte'] = array();
    while ($data = mysql_fetch_array($req1)) 
    	{
             $_SESSION['texte'][] = $data;
    Ensuite tu pourras récupérer tes données par un simple foreach( $_SESSION['texte'] as $data )

  5. #5
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    Oui, les données sont bien des livres, merci, je vais voir ça demain à tête reposée.
    concernant stripslashes & trim, après de multiples lectures j'en étais venue à la conclusion qu'il faut tout intégrer dans une base de données sans aucun caractère particulier, mais qu'il faut en revanche ajouter ce qui est nécessaire quand on utilise des données issues de la base de données. Je vais revoir tout cela.

Discussions similaires

  1. Affichage ipconfig /displaydns page par page? windows7
    Par destructive.flame dans le forum Windows
    Réponses: 1
    Dernier message: 28/02/2014, 08h00
  2. [MySQL] Session dans un affichage page par page
    Par destindestin dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/04/2013, 11h45
  3. [MySQL] Affichage du résultat page par page (pagination)
    Par marcito dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/07/2007, 14h53
  4. [Tableaux] PB liens apres affichage page par page
    Par x2thez dans le forum Langage
    Réponses: 16
    Dernier message: 15/03/2006, 16h58
  5. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22

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