Code : Tout sélectionner
<?php include ("config.inc.php"); ?>
<form name="search2" method="post" action="index.php?pag=result">
<table width="238" border="0" align="left">
<tr>
<td width="135"><label for="budget">Select budget :</label></td>
<td width="258"><select name="budget">
<option value="*" selected>budget</option>
<?php
$sql_budget = "SELECT * FROM matable_budget ORDER BY budget asc";
$result_budget = mysql_query($sql_budget);
while (list($id_budget,$budget )= mysql_fetch_row ($result_budget))
{
echo ("<option value=\"$id_budget\">$budget</option>");
}
?>
</select></td>
</tr>
<tr>
<td class="formulaire"><label for="secteur">select secteur :</label></td>
<td><select name="secteur">
<option value="*" selected>secteur</option>
<?php
$sql_secteur = "SELECT * FROM matable_secteur ORDER BY secteur asc";
$result_secteur = mysql_query($sql_secteur);
while (list($id_secteur,$secteur )= mysql_fetch_row ($result_secteur))
{
echo ("<option value=\"$id_secteur\">$secteur</option>");
}
?>
</select></td>
</tr>
<tr>
<td class="formulaire"><label for="type">select type :</label></td>
<td><select name="type">
<option value="*" selected>type</option>
<?php
$sql_type = "SELECT * FROM matable_type ORDER BY type asc";
$result_type = mysql_query($sql_type);
while (list($id_type,$type )= mysql_fetch_row ($result_type))
{
echo ("<option value=\"$id_type\">$type</option>");
}
?>
</select></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="search2" value="search" /></td>
</tr>
</table>
</form>
Code : Tout sélectionner
<?php include ("config.inc.php");
/* code ébauché ou je suis bloqué */
if ($budget = "*") {$budget ="";}
if ($secteur = "*") {$secteur ="";}
if ($type = "*") {$type ="";}
$sql_result = "SELECT * FROM matable WHERE budget = '".$budget."' AND secteur = '".$secteur."' AND type = '".$type."'";
echo $sql_result ;
if ($result_result == 0)
echo "Pas résultats pour cette recherche<br>";
else
{
while($nouv = mysql_fetch_assoc($result_result))
{
echo $nouv['titre'] ;
}
}
?>
Code : Tout sélectionner
<?php
include ("config.inc.php");
/* Construction du query pour chaque option */
if ($budget = "*") {$budget_query ="";} else {$budget_query = "budget = '".$budget."'";}
if ($secteur = "*") {$secteur_query ="";} else {$secteur_query = "secteur = '".$secteur."'";}
if ($type = "*") {$type_query ="";} else {$type_query = "type = '".$type."'";}
/* Construction des conditions AND */
if (!empty($budget_query) && !empty($secteur_query)) {$and1 = " AND ";} else {$and1 = "";}
if (!empty($secteur_query) && !empty($type_query)) {$and2 = " AND ";} else {$and2 = "";}
if (!empty($budget_query) && !empty($type_query)) {$and1 = " AND ";}
/* Construction de la requête */
$sql_result = "SELECT * FROM matable WHERE ".$budget_query.$and1.$secteur_query.$and2.$type_query;
/* La suite du code ... */
?>
Code : Tout sélectionner
<?php
include ("config.inc.php");
/* Construction d'une liste de query avec chaque option valide */
$query_list = array();
if ($budget != "*") {$query_list[] = "budget = '".$budget."'";}
if ($secteur != "*") {$query_list[] = "secteur = '".$secteur."'";}
if ($type != "*") {$query_list[] = "type = '".$type."'";}
/* Si la liste n'est pas vide */
if (!empty($query_list)) {
/* Construction du query texte avec les conditions AND */
$query_text = implode(" AND ", $query_list);
/* Construction de la requête */
$sql_result = "SELECT * FROM matable WHERE ".$query_text;
}
/* La suite du code ... */
?>
Code : Tout sélectionner
<?php
include ("config.inc.php");
/* Construction du query pour chaque option */
if ($budget = "*") {$budget_query ="";} else {$budget_query = "budget = '".$budget."'";}
if ($secteur = "*") {$secteur_query ="";} else {$secteur_query = "secteur = '".$secteur."'";}
if ($type = "*") {$type_query ="";} else {$type_query = "type = '".$type."'";}
/* Construction des conditions AND */
if (!empty($budget_query) && !empty($secteur_query)) {$and1 = " AND ";} else {$and1 = "";}
if (!empty($secteur_query) && !empty($type_query)) {$and2 = " AND ";} else {$and2 = "";}
if (!empty($budget_query) && !empty($type_query)) {$and1 = " AND ";}
/* Construction de la requête */
$sql_result = "SELECT * FROM matable WHERE ".$budget_query.$and1.$secteur_query.$and2.$type_query;
/* La suite du code ... */
?>
Code : Tout sélectionner
<?php
include ("config.inc.php");
/* Construction du query pour chaque option */
$filtre=array();
if ($budget = "*") {$budget_query ="";} else {$filtre[] = "budget = '".$budget."'";}
if ($secteur = "*") {$secteur_query ="";} else {$filtre[] = "secteur = '".$secteur."'";}
if ($type = "*") {$type_query ="";} else {$filtre[] = "type = '".$type."'";}
/* Construction de la requête */
$sql_result = "SELECT * FROM matable WHERE ".implode (' AND ',$filtre);
/* La suite du code ... */
?>
Bein oui steph29, nous sommes bien d'accord sur le principe d'optimisation (voir ma seconde proposition), mais je ne pense pas que ce soit prudent de faire le "implode()" directement sur la requête sans s'assurer au préalable que l'array contient bien des valeurs...optimisation possible:Code : Tout sélectionner
<?php include ("config.inc.php"); /* Construction du query pour chaque option */ $filtre=array(); if ($budget = "*") {$budget_query ="";} else {$filtre[] = "budget = '".$budget."'";} if ($secteur = "*") {$secteur_query ="";} else {$filtre[] = "secteur = '".$secteur."'";} if ($type = "*") {$type_query ="";} else {$filtre[] = "type = '".$type."'";} /* Construction de la requête */ $sql_result = "SELECT * FROM matable WHERE ".implode (' AND ',$filtre); /* La suite du code ... */ ?>
Bein... nonPS: pour ta deuxieme soluce, rassure moi tu as edite ton post?
Code : Tout sélectionner
<?php
include ("config.inc.php");
/* Construction du query pour chaque option */
/* l' * à été changer en 0 car lors des tests ça marcher pas */
$filtre=array();
if ($budget = "0") {$budget_query ="";} else {$filtre[] = "budget = '".$budget."'";}
if ($secteur = "0") {$secteur_query ="";} else {$filtre[] = "secteur = '".$secteur."'";}
if ($type = "0") {$type_query ="";} else {$filtre[] = "type = '".$type."'";}
/* Construction de la requête */
$sql_result = "SELECT * FROM matable WHERE ".implode (' AND ',$filtre);
/* La suite du code ... */
?>
Code : Tout sélectionner
$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."'";}
if (!empty($query_list)) {
if(isset($_SESSION['query_text']))
{
$query_text = $_SESSION['query_text'] ;
echo 'session existe';
}
else {
$_SESSION['query_text'] = $query_text ;
$query_text = implode(" AND ", $query_list);
echo 'pas de session';
}
$sql_result = "SELECT * FROM matble WHERE ".$query_text ;
/* La suite du code ... */
?> Au fait, je ne sais pas trop, mais là, à première vue, je dirais que tu tentes de mémoriser des données dans une session alors qu'elles n'ont pas été encore déclaréesça marche mais pas ma tentative de session !!! peut être à cause de la valeur de $query_text ?Code : Tout sélectionner
$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."'";} if (!empty($query_list)) { if(isset($_SESSION['query_text'])) { $query_text = $_SESSION['query_text'] ; echo 'session existe'; } else { $_SESSION['query_text'] = $query_text ; $query_text = implode(" AND ", $query_list); echo 'pas de session'; } $sql_result = "SELECT * FROM matble WHERE ".$query_text ; /* La suite du code ... */ ?>![]()
![]()
<?php
// 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 :
if (!empty($query_list)) {
// Si une session "query_text" existe, on recupere sa valeur,
// sinon on utilise celle issue de la variable "$query_list"
if(isset($_SESSION['query_text'])) {
$query_text = $_SESSION['query_text'] ;
} else {
$query_text = implode(" AND ", $query_list);
$_SESSION['query_text'] = $query_text ;
}
$sql_result = "SELECT * FROM matble WHERE ".$query_text ;
/* La suite du code ... */
}
/* Le reste du code... */
?>
Bon, je pense que là ça devrait fonctionner, mais comme je ne sais pas ce qu'il y a avant, ni ce qui se passe après, je ne peux rien assurer... <?php
$query_text = '';
// 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 {
// 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);
$_SESSION['query_text'] = $query_text;
}
}
// Si la variable "$query_text" n'est pa vide, alors on lance la requete
if (!empty($query_text)) {
$sql_result = "SELECT * FROM matble WHERE ".$query_text;
/* La suite du code ... */
}
?>
Test les deux pistes et dis-nous celle qui a le comportement le plus adapté à ce que tu cherches à faire...unset($_SESSION['query_text'] );
car la 1ere fois c'était ok mais aprés on pouvais plus changer le tri une fois que la session était créer.