Mes données de session s'effacent au retour d'une page

Mes données de session s'effacent au retour d'une page - PHP - Programmation

Marsh Posté le 08-03-2005 à 16:21:20    

SAlut a tous,
 
j'ai un petit prob quand je sauves certaine données en variables de session. Je vai sessayer d'etre clair....
 
j'effectuer une recherche dans ma table SQL via un Formulaire et envoyer a un script qui génère la requete SQL suivant les critère du Formulaire.
je sauvegarde cette requete ds une variable de session: "$_SESSION['sql']"
ensuite ce script affiche les résultat de la recherche ds un tableau avec un lien vers le détail de chaque recherche
 
qd je clique sur ce lien, un autre script affiche le détail et avec un lien de retour vers la page de résultat de recherche, pour refaire la liste mais il me dit que la variable $_SESSION['sql'] n'existe pas :(
 
Vous comprenez ? :)
 
ma question est: pourquoi s'efface-t-elle ?
 
merci d'avance pour vos commentaires...
 
Fred

Reply

Marsh Posté le 08-03-2005 à 16:21:20   

Reply

Marsh Posté le 08-03-2005 à 16:23:34    

as-tu mis

Code :
  1. session_start()

au début de chaque page qui utilise des variables de session?

Reply

Marsh Posté le 08-03-2005 à 16:24:33    

session_start(); sur toutes les pages ou doivent être transmies les infos de session


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 08-03-2005 à 16:28:39    

un bout de ton code stp

Reply

Marsh Posté le 08-03-2005 à 17:36:53    

Voila le code des page inpliquées
 
Mon formulaire: (ya pas de session_start(); pcq il est en include ds la page index)
 
<html>
<body bgcolor="#ccccff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
 
<?
// un vide les variable pour une nouvelle recherche
unset ($_SESSION['rech_sexe']);
unset ($_SESSION['rech_pays']);
unset ($_SESSION['rech_min']);
unset ($_SESSION['rech_max']);
unset ($_SESSION['rech_yeux']);
unset ($_SESSION['rech_cheveux']);  
 
?>
<font size="+2">Recherche Simplifiée </font>
 
<form name="recherche_form" action="view_result.php?action=new&id=1" method="post">
je recherche:
 <input type="radio" name="sexe" value="homme"checked> un homme
 <input type="radio" name="sexe" value="femme"> une femme<br><br>
 
entre  
<select name="age_min">
       <option value="18"> 18</option>
       <option value="20"> 20</option>
       <option value="25"> 25</option>
       <option value="30"> 30</option>
       <option value="35"> 35</option>
       <option value="40"> 40</option>
       <option value="45"> 45</option>
       <option value="50"> 50</option>
      </select>
et
<select name="age_max">
       <option value="20"> 20</option>
       <option value="25"> 25</option>
       <option value="30"> 30</option>
       <option value="35"> 35</option>
       <option value="40"> 40</option>
       <option value="45"> 45</option>
       <option value="50"> 50</option>
       <option value="55"> 55</option>
       <option value="65"> 65</option>
      </select>
ans    
<br><br>
En <select name="pays">
       <option value="Belgique"> Belgique</option>
       <option value="France"> France</option>
      </select>
<br><br>
   <input type="submit" value="rechercher">
<br><br>
<a href="base.php?id=3.php">Recherche détaillée...</a>
</form>
 
</body>
</html>
----------------------------------------------------------
 
La page qui affiche les résultat des la recherche:
**************************************************
<html>
<body>
 
<?
session_start();
include ('FRAME_haut_page.inc.php');  
?>
<table summary="" width=100% border="1">
 <tr>
<!-- COLONNE GAUCHE -->
  <td width=20%>colone gauche</td>
<!-- PRINCIPALE -->
  <td width=60%>
<?
//si c'est une recherche postée on on cherche les résultats
 if ($_GET['action'] == "new" )
 {
  if ($_GET['id'] == 1 || $_GET['id'] == 2)
  { // on affiche les résultat de la recherche
   // 1 pour SIMPLE - 2 pour DETAILLEE
   $id = $_GET['id'];
   switch ($id)
   {
    case 1:
     include ('PROC_recherche_S.php');
     include ('FUNC_view_recherche.php');
     break;
    case 2:
     include ('PROC_recherche_D.php');
     include ('FUNC_view_recherche.php');
     break;
   }
  }
 }
else  
//Sinon c'est le retour sur la requete déja faite...
 
if ($_GET['action'] == "old" )
{
// **************************************
// C'est ICI que ca FOIRE !!!
//***************************************
 
$sql = $_SESSION['sql'];
 
include ('connect_base.php');
 
include ('FUNC_view_recherche.php');
}
 
?>  </td>
<!-- COLONNE DROITE -->
  <td width=20%></td>
 </tr>
</table>
<? include ('FRAME_bas_page.inc.php'); ?>
 
 
</body>
</noframes>
</frameset>
</html>
-----------------------------------------------------------
 
La page qui affiche les détail de l'élément rechercher:
*******************************************************
 
<html>
<body>
 
<?
session_start();
include ('FRAME_haut_page.inc.php'); ?>
 
<table summary="" width=100% border="1">
 <tr>
<!-- COLONNE GAUCHE -->
  <td width=20%>colone gauche</td>
<!-- PRINCIPALE -->
  <td width=70%>
<?
$membre = $_GET['id']; // on prende le nick donner par la "FUNC_view_result.txt"
include ('FUNC_affiche_fiche.php');
affiche_fiche($membre);
 
?>  </td>
<!-- COLONNE DROITE -->
  <td width=10%></td>
 </tr>
</table>
<? include ('FRAME_bas_page.inc.php'); ?>
 
 
</body>
</html>
----------------------------------------------------------
 
Voila je sais pas si vous comprenez tout.....
J'espère que si :)

Reply

Marsh Posté le 08-03-2005 à 23:54:25    

session_start doit etre placé avant toute autre balise, genre <html> et <body>


Message édité par Djebel1 le 08-03-2005 à 23:56:23
Reply

Marsh Posté le 09-03-2005 à 13:26:03    

Djebel1 a écrit :

session_start doit etre placé avant toute autre balise, genre <html> et <body>


 
j'ai essayer mais ca ne fonctionne toujours pas :(
la variable se perd quand meme :'(

Reply

Marsh Posté le 09-03-2005 à 16:46:26    

Fredux_lg a écrit :

j'ai essayer mais ca ne fonctionne toujours pas :(
la variable se perd quand meme :'(


tu l'initialises où $_SESSION['sql'] ?? montre le code

Reply

Marsh Posté le 09-03-2005 à 17:17:08    

soju a écrit :

tu l'initialises où $_SESSION['sql'] ?? montre le code


 
dans ma procedure de recherche (en INCLUDE ds la page qui affiche les résultats):
 
<?php
 
include ('connect_base.php');
 
$search_sexe = $_SESSION['rech_sexe']=$_POST['sexe'];
$search_pays = $_SESSION['rech_pays']=$_POST['pays'];
$search_age_min = $_SESSION['rech_min']=2005 - $_POST['age_min']+1;
$search_age_max = $_SESSION['rech_max']=2005 - $_POST['age_max']-1;
 
// on crée la requête SQL  
$sql = "SELECT nickname, city, country, language_1, language_2, language_3, ideal_relation, pic_1  
  FROM tbl_membres  
  WHERE sexe LIKE '$search_sexe'  
  AND country LIKE '$search_pays'  
  AND birth_year <= '$search_age_min'  
  AND birth_year >= '$search_age_max'";  
 
$_SESSION['sql'] = $sql; //on sauve la requete en SESSION
 
include ('FUNC_view_recherche.php');
?>
 
c pas pcq j'utilise des INCLUDE de petites procécures que la variable se perd ?  
je ne crois pas vu ke c'est juste comme si le code compris dans ces procédures était tapé tel quel... non ?
 

Reply

Marsh Posté le 09-03-2005 à 17:29:22    

verifie que ton register_globals est a off, car dans le cas contraire ta variable $sql est la même que $_SESSION['sql'] ce qui peut poser quelques problèmes...
et un peu de debug : ajoute un print_r($_SESSION); dans tes pages.

Reply

Marsh Posté le 09-03-2005 à 17:29:22   

Reply

Marsh Posté le 09-03-2005 à 21:13:52    

soju a écrit :

verifie que ton register_globals est a off, car dans le cas contraire ta variable $sql est la même que $_SESSION['sql'] ce qui peut poser quelques problèmes...
et un peu de debug : ajoute un print_r($_SESSION); dans tes pages.


 
je suis un peu novice la dedans, ca s'initialise ou "register_global a off"  ?
pardon pour cette question de newbie   :D

Reply

Marsh Posté le 14-03-2005 à 15:42:53    

Dans ton httpd.conf (arretez moi si je dis une connerie...)

Reply

Marsh Posté le 14-03-2005 à 17:26:09    

Jotunheim a écrit :

Dans ton httpd.conf (arretez moi si je dis une connerie...)


 
Rate, httpd.conf c'est la config d'apache.
 
La config de php4 (donc register_globals) se trouve dans php4.ini

Reply

Marsh Posté le 14-03-2005 à 17:27:32    

php.ini ...


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed