Bonjour,
Ma requête fonctionne uniquement lorsque 3 champs (sur 4 au total) possèdent une valeur, mais dans le cas ou 3 champs possèdent une valeur il me donne toute les données correspondantes présente dans la table.
Mais ce n'est pas ce que je veux, il me faudrait une requête croisée me permettant de faire des recherches sur 1, 2, 3 ou 4 champs tout en m'affichant la totalité de ma table si je ne remplis aucun champ.
Merci à tous !
if($lieu == 'no' AND $nomroche == 'no' AND $cartegeologique == 'no' AND $natureroche == 'no')
{
$result = $bdd->prepare('SELECT * FROM rochesvosges');
$result->execute();
}
elseif($nomroche=="no")
{
$result = $bdd->prepare('SELECT * FROM rochesvosges where lieu = :lieu
AND cartegeologique = :cartegeologique AND natureroche = :natureroche
OR (cartegeologique = :cartegeologique AND natureroche = :natureroche)');
$result->execute(array(':lieu'=>$lieu, ':cartegeologique'=>$cartegeologique, ':natureroche'=>$natureroche));
}
elseif($lieu=="no")
{
$result = $bdd->prepare('SELECT * FROM rochesvosges where cartegeologique = :cartegeologique
AND nomroche = :nomroche AND natureroche = :natureroche
OR (nomroche = :nomroche AND natureroche = :natureroche)');
$result->execute(array(':nomroche'=>$nomroche, ':cartegeologique'=>$cartegeologique, ':natureroche'=>$natureroche));
}
elseif($cartegeologique=="no")
{
$result = $bdd->prepare('SELECT * FROM rochesvosges where natureroche = :natureroche
AND lieu = :lieu AND nomroche = :nomroche
OR (lieu = :lieu AND nomroche = :nomroche)');
$result->execute(array(':nomroche'=>$nomroche, ':lieu'=>$lieu, ':natureroche'=>$natureroche));
}
elseif($natureroche=="no")
{
$result = $bdd->prepare('SELECT * FROM rochesvosges where nomroche = :nomroche
AND lieu = :lieu AND cartegeologique = :cartegeologique
OR (lieu = :lieu AND cartegeologique = :cartegeologique)');
$result->execute(array(':nomroche'=>$nomroche, ':lieu'=>$lieu, ':cartegeologique'=>$cartegeologique));
}
else
{
$result = $bdd->prepare('SELECT * FROM rochesvosges where lieu = :lieu and nomroche = :nomroche and cartegeologique = :cartegeologique and natureroche = :natureroche');
$result->execute(array(':lieu' => $lieu, ':nomroche' => $nomroche, ':cartegeologique' => $cartegeologique, ':natureroche' => $natureroche));
}
Ma requête fonctionne uniquement lorsque 3 champs (sur 4 au total) possèdent une valeur, mais dans le cas ou 3 champs possèdent une valeur il me donne toute les données correspondantes présente dans la table.
Mais ce n'est pas ce que je veux, il me faudrait une requête croisée me permettant de faire des recherches sur 1, 2, 3 ou 4 champs tout en m'affichant la totalité de ma table si je ne remplis aucun champ.
Merci à tous !