Mes données de session s'effacent au retour d'une page - PHP - Programmation
Marsh Posté le 08-03-2005 à 16:23:34
as-tu mis
Code :
|
au début de chaque page qui utilise des variables de session?
Marsh Posté le 08-03-2005 à 16:24:33
session_start(); sur toutes les pages ou doivent être transmies les infos de session
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
Marsh Posté le 08-03-2005 à 23:54:25
session_start doit etre placé avant toute autre balise, genre <html> et <body>
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
Marsh Posté le 09-03-2005 à 16:46:26
Fredux_lg a écrit : j'ai essayer mais ca ne fonctionne toujours pas |
tu l'initialises où $_SESSION['sql'] ?? montre le code
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 ?
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.
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... |
je suis un peu novice la dedans, ca s'initialise ou "register_global a off" ?
pardon pour cette question de newbie
Marsh Posté le 14-03-2005 à 15:42:53
Dans ton httpd.conf (arretez moi si je dis une connerie...)
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
Marsh Posté le 14-03-2005 à 17:27:32
php.ini ...
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