Je reviens vers vous avec une demande d'aide concernant l'utilisation des sessions.
J'ai un formulaire de recherche multicritère type agence immobilière qui renvoit vers une page de résultat. Sur cette page de résultat, on retrouve le même formulaire de recherche pour que les internautes puissent éventuellement modifier certains paramètres de la recherche initiale. On retrouve aussi deux liens permettant de trier les résultats de la recherche par nom de ville ou par budget.
La recherche fonctionne très bien, tous mes critères peuvent être changé sans problème.
Le hic intervient suite à une recherche, lorsque l'on souhaite trier les résultats par ville ou budget. Toutes les données de la recherche et donc les valeurs des POST sont effacées et le tri s'effectue alors sur l'ensemble des résultats de ma bd et non plus sur ceux de la recherche.
Je sais que l'utilisation des sessions me permettrait de garder mes valeurs de POST mais j'avoue avoir un peu de mal à le mettre pratique dans mon exemple.
Voici le code de ma requête de recherche:
session_start();
// mise en session de la valeur du tri
if (isset($_GET['tri'])) {
$tri = $_GET['tri'];
} elseif (isset($_SESSION['tri'])) {
$tri = $_SESSION['tri'];
} else {
$tri = 'id_bien';
}
$_SESSION['tri'] = $tri;
//Prise en compte du type de biens
if ((isset($_POST['maison'])) && (isset($_POST['appart'])) && (isset($_POST['terrain']))) {
$type = " AND type_bien <= 3 ";
} elseif ((isset($_POST['maison'])) && (isset($_POST['appart']))) {
$type = " AND type_bien <= 2 ";
} elseif ((isset($_POST['maison'])) && (isset($_POST['terrain']))) {
$type = " AND (type_bien = 1 OR type_bien = 3) ";
} elseif ((isset($_POST['appart'])) && (isset($_POST['terrain']))) {
$type = " AND type_bien >= 2 ";
} elseif (isset($_POST['maison'])) {
$type = " AND type_bien = 1 ";
} elseif (isset($_POST['appart'])) {
$type = " AND type_bien = 2 ";
} elseif (isset($_POST['terrain'])) {
$type = " AND type_bien = 3 ";
}
//Prise en compte du nombre de pièces
if ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['3p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND nb_piece <= 1 ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['3p'])) && (isset($_POST['4p']))) {
$piece = " AND nb_piece <= 4 ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece <= 2 OR nb_piece >= 4) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['3p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece <= 3 OR nb_piece >= 5) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['3p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece >= 3) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['3p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND nb_piece >= 2 ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['3p']))) {
$piece = " AND nb_piece <= 3 ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['4p']))) {
$piece = " AND (nb_piece <= 2 OR nb_piece = 4) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece <= 2 OR nb_piece >= 5) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['3p'])) && (isset($_POST['4p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece = 3 OR nb_piece = 4) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['3p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece = 3 OR nb_piece >= 5) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece >= 4) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['3p'])) && (isset($_POST['4p']))) {
$piece = " AND (nb_piece = 2 OR nb_piece = 3 OR nb_piece = 4) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 2 OR nb_piece >= 4) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['3p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 2 OR nb_piece = 3 OR nb_piece >= 5) ";
} elseif ((isset($_POST['3p'])) && (isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND nb_piece >= 3 ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['2p']))) {
$piece = " AND nb_piece <= 2 ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['3p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece = 3) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['4p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece = 4) ";
} elseif ((isset($_POST['1p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 1 OR nb_piece >= 5) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['3p']))) {
$piece = " AND (nb_piece = 2 OR nb_piece = 3) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['4p']))) {
$piece = " AND (nb_piece = 2 OR nb_piece = 4) ";
} elseif ((isset($_POST['2p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 2 OR nb_piece >= 5) ";
} elseif ((isset($_POST['3p'])) && (isset($_POST['4p']))) {
$piece = " AND (nb_piece = 3 OR nb_piece = 4) ";
} elseif ((isset($_POST['3p'])) && (isset($_POST['5p']))) {
$piece = " AND (nb_piece = 3 OR nb_piece >= 5) ";
} elseif ((isset($_POST['4p'])) && (isset($_POST['5p']))) {
$piece = " AND nb_piece >= 4 ";
} elseif (isset($_POST['1p'])) {
$piece = " AND nb_piece = 1 ";
} elseif (isset($_POST['2p'])) {
$piece = " AND nb_piece = 2 ";
} elseif (isset($_POST['3p'])) {
$piece = " AND nb_piece = 3 ";
} elseif (isset($_POST['4p'])) {
$piece = " AND nb_piece = 4 ";
} elseif (isset($_POST['5p'])) {
$piece = " AND nb_piece >= 5 ";
}
// Prise en compte du budget
if (($_POST['maxi']) == '1000000+') {
if (isset($_POST['mini'])) {
$budget = " AND prix_bien >=".$_POST['mini'];
}
} else {
if ((isset($_POST['mini'])) && (isset($_POST['maxi']))) {
$budget = " AND prix_bien >=".$_POST['mini']." AND prix_bien <=".$_POST['maxi'];
} elseif (isset($_POST['mini'])) {
$budget = " AND prix_bien >=".$_POST['mini'];
} elseif (isset($_POST['maxi'])) {
$budget = " AND prix_bien <=".$_POST['maxi'];
}
}
// prise en compte de la ville
if (isset($_POST['ville_proche'])) {
if ((isset($_POST['ville'])) && ($_POST['ville'] != 'toutes')) {
// sélection des villes proches de la ville choisie
$query_rs_ville_proche = "SELECT ville_bien, ville_proche1, ville_proche2, ville_proche3, ville_proche4, ville_proche5 FROM tbl_bien WHERE ville_bien='".$_POST['ville']."'";
$rs_ville_proche = mysql_query($query_rs_ville_proche, $conn_rocher) or die(mysql_error());
$row_rs_ville_proche = mysql_fetch_assoc($rs_ville_proche);
$ville = " AND (ville_bien = ".$_POST['ville']." OR ville_bien = ".$row_rs_ville_proche['ville_proche1']." OR ville_bien = ".$row_rs_ville_proche['ville_proche2']."
OR ville_bien = ".$row_rs_ville_proche['ville_proche3']." OR ville_bien = ".$row_rs_ville_proche['ville_proche4']." OR ville_bien = ".$row_rs_ville_proche['ville_proche5'].") ";
}
} else {
if ((isset($_POST['ville'])) && ($_POST['ville'] != 'toutes')) {
$ville = " AND ville_bien = '".$_POST['ville']."'";
}
}
//requête générant les résultats en fonction des critères de recherche
$query_rs_resultat = "SELECT * FROM tbl_bien, tbl_ville WHERE tbl_bien.ville_bien=tbl_ville.id_ville ".$type.$piece.$budget.$ville." ORDER BY ".$tri." ASC";
$rs_resultat = mysql_query($query_rs_resultat, $conn_rocher) or die(mysql_error());
Je ne sais pas si la solution serait de garder en session le résultat de ma recherche ou les valeurs des POST envoyées après la recherche.Ce serait sympa de m'aiguiller un peu parce que là je patauge un peu.
Merci par avance.