[PHP]Recherche avec plusieurs critéres
Résolu
Emil34
-
sylvainfx Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
sylvainfx Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
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 ^^
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:
- [PHP]Recherche avec plusieurs critéres
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Easy php - Télécharger - Divers Web & Internet
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche photo - Guide
- Je recherche une chanson - Guide
3 réponses
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
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
Je teste ca tout de suite, je pense que ca resoudra mon problème.
Merci