Recherche multi critéres
Posté : 13 févr. 2017, 16:14
Bonjour,
Je suis débutant dans le PHP et je souhaite faire un formulaire de recherche dans table "oiseau" qui contient trois colonnes "numero", "sexe", "annee".
Le problème est que je n'arrive pas à construire ma requête sql multicritère à partir du formulaire.
Merci pour votre aide.
Je suis débutant dans le PHP et je souhaite faire un formulaire de recherche dans table "oiseau" qui contient trois colonnes "numero", "sexe", "annee".
Le problème est que je n'arrive pas à construire ma requête sql multicritère à partir du formulaire.
Merci pour votre aide.
<html>
<head>
</head>
<body>
<? php
$i=0;
if($annee>0) {
$choix[$i++] = "annee ";
switch($annee){
case 1:
$choix[$i++] = "2016";
break;
case 2:
$choix[$i++] = "2015";
break;
case 3:
$choix[$i++] = "2014";
break;
case 4:
$choix[$i++] = "2013";
break;
}
}
if($sexe){
$choix[$i++] = "sexe = '";
$choix[$i++] = $sexe."' ";
}
// on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
if(isset($_POST['requete']) && $_POST['requete'] != NULL)
{
// on crée une variable $requete pour faciliter l'écriture de la requête SQL, mais aussi pour empêcher les éventuels malins qui utiliseraient du PHP ou du JS, avec la fonction htmlspecialchars().
$requete = htmlspecialchars($_POST['requete']);
$req_rech = "SELECT numero, sexe, annee FROM oiseau WHERE numero LIKE '%$requete%' ORDER BY id DESC";
$query = mysqli_query($base, $req_rech) or die (mysqli_error($base)); // la requête, que vous devez maintenant comprendre ;)
$nb_resultats = mysqli_num_rows($query); // on utilise la fonction mysqli_num_rows pour compter les résultats pour vérifier par après
// si le nombre de résultats est supérieur à 0, on continue
if($nb_resultats != 0)
{
// maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
?>
<h3><p style="text-align: center">Résultats de votre recherche.</p></h3>
<p style="color: red; text-align: center">Nous avons trouvé <? echo $nb_resultats; // on affiche le nombre de résultats
if($nb_resultats > 1) { echo ' résultats'; } else { echo ' résultat'; } // on vérifie le nombre de résultats pour orthographier correctement.
?>
dans notre base de données. Voici la liste que nous avons trouvées :<br/>
<br/>
<?
// début du tableau
echo '<table bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les titres des colonnes
echo '<tr>';
echo '<td bgcolor="#669999" align="center"><b><u>Numero</u></b></td>';
echo '<td bgcolor="#669999" align="center"><b><u>Sexe</u></b></td>';
echo '<td bgcolor="#669999" align="center"><b><u>Année</u></b></td>';
echo '</tr>'."\n";
while($donnees = mysqli_fetch_array($query))
{
echo '<tr>';
echo '<td bgcolor="#CCCCCC" align="center"><i><b>'.$donnees['numero'].'</b></td>';
echo '<td bgcolor="#CCCCCC" align="center"><i>'.$donnees['sexe'].'</i></td>';
echo '<td bgcolor="#CCCCCC" align="center"><i>'.$donnees['annee'].'</i></td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";// fin de la boucle
} // Fini d'afficher les résultats ! Maintenant, nous allons afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire.
else
{ // de nouveau, un peu de HTML
?>
<div align="center">
<p><h3>Pas de résultats</h3></p>
<p style="color: red; text-align: center">Nous n'avons trouvé aucun résultat pour votre requête "<? echo $_POST['requete']; ?>". <a href="test.php">Réessayez</a></p>
</div>
<?
}// Fini d'afficher l'erreur ^^
unset($nb_resultats);
mysqli_free_result($query);
mysqli_close($base); // on ferme mysql, on n'en a plus besoin
}
else
{ // et voilà le formulaire, en HTML de nouveau !
?>
<p style="color: red; text-align: center">Tapez le numéro de la bague : <br /></p>
<div align="center">
<form action="test.php" method="Post">
<input type="text" name="requete" size="10"><br />
<p>Male <input type="radio" name="sexe" value="M" <?php if($requete==1){if($sexe=="male"){echo " checked";}} ?>>
Femelle <input type="radio" name="sexe" value="F" <?php if($requete==1){if($sexe=="femelle"){echo " checked";}} ?>>
</p>
<p>Annee <select name="annee" size="1">
<option value="0">choisir</option>
<option <?php if($flag==1 && $annee==1){echo " selected ";}?> value="1">2016</option>
<option <?php if($flag==1 && $annee==2){echo " selected ";}?> value="2">2015</option>
<option <?php if($flag==1 && $annee==3){echo " selected ";}?> value="3">2014</option>
<option <?php if($flag==1 && $annee==4){echo " selected ";}?> value="3">2013</option>
</select></p>
<input type="submit" value="Ok">
</form>
</div>
<?
}
// et voilà, c'est fini !
?>
</body>
</html>