[PHP]Recherche avec plusieurs critéres

Résolu/Fermé
Emil34 - 13 mai 2008 à 11:41
sylvainfx Messages postés 4 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 5 août 2021 - 23 janv. 2012 à 01:45
Bonjour a tous,
J'expose mon problème : j'ai créé une page de recherche contenant de multiple information a remplir par l'utilisateur(une dizaine). L'utilisateur n'est pas obligé de remplir tous les champs...il peut connaitre le numero de plan mais pas le numero de rapport par exemple.
Une fois qu'il a saisi toutes les infos qu'il connait, je le renvoi vers une page de résultat.
Voila le code de cette page :


//CONTROLE REPERE
if($_SESSION['repere']=="")
{
$sql = "SELECT Repere FROM bloc";
$result = mysql_query("$sql") or die(mysql_error());
}
else
{
$sql = "SELECT Repere FROM bloc WHERE Repere='$rep'";
$result = mysql_query("$sql") or die(mysql_error());
}



//CONTROLE GEOMETRIE
if($_SESSION['geo']=="")
{
//recupere le resultat de la derniere recherche
$result2=$result;
}
else
{
//Recpere les ancienne donnée pour y rajouter un filtre
while( $row = mysql_fetch_row($result) )
{
$sql2 = "SELECT Repere FROM bloc WHERE Repere='$row[0]' AND Geometrie = '$geo'";
$result2 = mysql_query("$sql2") or die(mysql_error());
while( $row2 = mysql_fetch_row($result2 ) )
{
echo $row2[0];
}
}
}



//CONTROLE NRAPPORT
if ($_SESSION['nrap']=="")
{
//recupere le resultat de la derniere recherche
$result3=$result2;
}
else
{
//Recpere les ancienne donnée pour y rajouter un filtre
while( $row2 = mysql_fetch_row($result2) )
{

$sql3 = "SELECT Repere FROM bloc WHERE Repere='$row2[0]' AND Numderapport = '$nrap'";
$result3 = mysql_query("$sql3") or die(mysql_error());
while( $row3 = mysql_fetch_row($result3 ) )
{
echo $row3[0];
}
}
}



//CONTROLE NUMERO DE PLAN
if ($_SESSION['nplan']=="")
{
//recupere le resultat de la derniere recherche
$result4=$result3;
}
else
{
//Recpere les ancienne donnée pour y rajouter un filtre
while( $row3 = mysql_fetch_row($result3) )
{
$sql4 = "SELECT Repere FROM bloc WHERE Repere='$row3[0]' AND Numplan = '$nplan'";
$result4 = mysql_query("$sql4") or die(mysql_error());
while( $row4 = mysql_fetch_row($result4 ) )
{
echo $row4[0];
}
}
}



//CONTROLE LIEU DE RANGEMENT
if ($_SESSION['rang']=="")
{
//recupere le resultat de la derniere recherche
$result5=$result4;

}
else
{
//Recpere les ancienne donnée pour y rajouter un filtre
while( $row4 = mysql_fetch_row($result4) )
{
$sql5 = "SELECT Repere FROM bloc WHERE Repere='$row4[0]' AND Lieuderangement = '$rang'";
$result5 = mysql_query("$sql5") or die(mysql_error());

while( $row5 = mysql_fetch_row($result5 ) )
{
echo $row5[0];
}
}
}


Cette méthode fonctionne quand l'utilisateur ne saisie qu'une seule donnée...dès qu'il rempli la géometrie et le numero de rapport il ne trouve rien...

Aidez moi s'il vous plait ^^
A voir également:

3 réponses

byakhlefncr Messages postés 260 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
13 mai 2008 à 12:56
Salut,


tu peux utiliser une variable $condition


<?php

$condition = "";
if($_SESSION['repere']!="")
{
if ($condition=="")
{
$condition = "(`repere`=".$_SESSION['repere'].")";
}
else
{
$condition = " AND (`repere`=".$_SESSION['repere'].")";
}
}
if($_SESSION['geo']!="")
{
if ($condition=="")
{
$condition = "(`geo`=".$_SESSION['geo'].")";
}
else
{
$condition = " AND (`geo`=".$_SESSION['geo'].")";
}
}

// ainsi de suite

// à la fin on intègre la condition dans la requête.

if ($condition=="")
{
$sql = "SELECT * FROM `TABLE1`"
}
else
{
$sql = "SELECT * FROM `TABLE1` WHERE ".$condition;
}

$result = mysql_query("$sql") or die(mysql_error());
....
?>



j'espère que s'ataidera.

Bonne chance
4
hmm hmm très interressante ta solution !
Je teste ca tout de suite, je pense que ca resoudra mon problème.
Merci
0
Attention de bien mettre

$condition = $condition ." AND (`Repere`=\"".$_SESSION['repere']."\")";

Sinon c'est parfait ! Encore merci.
0
sylvainfx Messages postés 4 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 5 août 2021
23 janv. 2012 à 01:45
Merci, c'est exactement ce que je cherchai :)
0