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>