par
FredoMkb » 17 mai 2008, 12:05
Bonjour Spirit
Bonjour FredoMkb, pour le test j'ai simplifié au maximum le code de ma page:
Oui, c'est bien, mais, justement, du coup il est bien difficile de voir si le problème vient exactement du code que nous avons imaginé ensemble ou si, au contraire, il y a quelque chose quelque part ailleurs dans ta page qui produit ce dysfonctionnement...
Bon, je ne dis pas de publier ici la totalité du code de ta page (ça peut être bien long et pas tout n'est forcément pertinent pour la question qui nous occupe), mais au moins les parties directement concernées avec le traitement que nous tentons de réaliser...
Mais quant on revois url de la page: [...] la session reviens vide.

Bon, là c'est en effet bien bizarre car, normalement, même si aucune autre information n'est envoyée par le formulaire, au moins la session devrait, elle, avoir en mémoire les valeurs de la dernière requête... et elle devraient être récupérables même en rechargeant simplement la page...
Bon, tentons de voir tout ça depuis le début...
Voici donc un formulaire Html très basique, basé sur les infos que tu sembles utiliser :
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>Votre Choix</legend>
<select name="id_budget" id="id_budget">
<option value="0" selected="selected">Choisissez un Budget</option>
<option value="budget01">Budget 01</option>
<option value="budget02">Budget 02</option>
<option value="budget03">Budget 03</option>
</select>
<span> </span>
<select name="id_secteur" id="id_secteur">
<option value="0" selected="selected">Choisissez un Secteur</option>
<option value="secteur01">Secteur 01</option>
<option value="secteur02">Secteur 02</option>
<option value="secteur03">Secteur 03</option>
</select>
<span> </span>
<select name="id_type" id="id_type">
<option value="0" selected="selected">Choisissez un Type</option>
<option value="type01">Type 01</option>
<option value="type02">Type 02</option>
<option value="type03">Type 03</option>
</select>
<span> </span>
<input type="submit" name="choix" value="Valider" />
</fieldset>
</form>
Bon, pas grand chose à dire, c'est assez simple et clair j'espère...
Voici maintenant le code Php que j'ai placé avant la toute première balise Html de la page, et qui fait tout le travail de récupération des valeurs du formulaire, la construction de la requête et la mémorisation de la session :
<?php
// On efface la session pour pouvoir recommencer
if (isset($_GET['reset']) && $_GET['reset']) {
session_start();
session_unset();
session_destroy();
}
// Valeurs initiales
$budget = "0";
$secteur = "0";
$type = "0";
$query_text = '';
// On recupere les valeurs issues du formulaire
if (isset($_POST['choix']) && !empty($_POST['choix'])) {
$budget = $_POST['id_budget'];
$secteur = $_POST['id_secteur'];
$type = $_POST['id_type'];
}
// On demarre la session
session_start();
// Si une session "query_text" existe et qu'elle n'est pas vide, on recupere sa valeur,
if(isset($_SESSION['query_text']) && !empty($_SESSION['query_text'])) {
$query_text = $_SESSION['query_text'] ;
} else {
// Sinon, construction de la liste des query valides
$query_list = array();
if ($budget != "0") {$query_list[] = "id_budget = '".$budget."'";}
if ($secteur != "0") {$query_list[] = "id_secteur = '".$secteur."'";}
if ($type != "0") {$query_list[] = "id_type = '".$type."'";}
// Si la liste n'est pas vide on utilise ses valeurs
if (!empty($query_list)) { $query_text = implode(" AND ", $query_list); }
}
// Si la variable "$query_text" n'est pas vide, alors on lance la requete
if (!empty($query_text)) {
$_SESSION['query_text'] = $query_text;
$sql_result = "SELECT * FROM matbl WHERE ".$query_text;
// ... la suite du code ...
}
// ... le reste du code ...
?>
Bon, ce code, en l'état, n'a pas grande utilité, mais son fonctionnement correspond exactement à ce que tu cherches (il me semble du moins

)... puisqu'il conserve en session les valeurs de la dernière requête construite, même lorsqu'on recharge simplement la page...
Voilà... si tu veux tester son fonctionnement,
voici un formulaire de test, et si tu veux voir le code en entier,
voici le même formulaire au format ".zip"...
J'espère que ceci pourra t'aider à y voir plus clair, et n'hésites pas à regarder attentivement le reste du code de ta page, le problème peut se trouver ailleurs que là où on test pour le moment...
Courage... à+
