Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/12/2012, 17h16   #1
Alain92110
Invité de passage
 
Inscription : novembre 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 17
Points : 1
Points : 1
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
Alain92110 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 19h04   #2
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 051
Points : 1 426
Points : 1 426
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 :
1
2
3
4
5
 
<?php
$lieu = (isset($_SESSION['lieu'])) ? $_SESSION['lieu'] : '';
if ($lieu !="") echo "il y a dejas des données" ;
?>
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 16h24   #3
Alain92110
Invité de passage
 
Inscription : novembre 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 17
Points : 1
Points : 1
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 :
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 :
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
Alain92110 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 17h56   #4
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 051
Points : 1 426
Points : 1 426
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 :
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
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 11h09   #5
Alain92110
Invité de passage
 
Inscription : novembre 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 17
Points : 1
Points : 1
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
Alain92110 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 16h37   #6
christele_r
Membre Expert
 
Avatar de christele_r
 
Femme Christele Rubneau
Inscription : novembre 2009
Messages : 1 051
Détails du profil
Informations personnelles :
Nom : Femme Christele Rubneau
Âge : 40
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 1 051
Points : 1 426
Points : 1 426
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
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h56.


 
 
 
 
Partenaires

Hébergement Web