Problème formulaire de recherche
2318Ali
-
2318Ali -
2318Ali -
Bonjour,
J'ai une galerie d'images à réaliser. Pour ce faire j'ai donc une base de données avec plusieurs tables faite avec phpmyadmin.
A partir de là j'ai essayé de faire un formulaire dynamique de recherche simple par mot-clé.
A priori ça marche puisque j'obtiens des résultats qui s'affichent grâce aux 'echo', mais par contre le mysql_num_rows ne les prend pas en compte et indique qu'il n'y a aucun résultat, notamment pour les requêtes concernant l'auteur et le lieu.
J'avoue que je débute en php et mysql, et je ne vois pas où est le problème.
Pouvez-vous m'aider svp? C'est asse urgent, je l'avoue.
Merci d'avance.
Voilà le code du formulaire:
<form method="post" action="traitement_recherche_simple.php">
<input type="text" name="mot_cle" size="60" maxlength="50"/>
<input type="submit" value="Rechercher"/>
</form>
et celui de mon fichier de traitement:
<?php
$mot_cle=$_POST['mot_cle'];
include_once("connexion_base.php");
$connexion=mysql_connect($host,$user,$password);
$base=mysql_select_db("galerie_image",$connexion);
//on définit la variable mot-clé
$mot_cle=($_POST['mot_cle']);
$mot_cle=utf8_encode($mot_cle);
$mot_cle=utf8_decode($mot_cle);
if (($mot_cle == "")||($mot_cle == "%")) {
//Si aucun mot clé n'a été saisi, le script demande à l'utilisateur de bien vouloir préciser un mot clé
echo "Veuillez entrer un mot clé s'il vous plaît.";}
else {
// On selectionne les enregistrements contenant le mot clé quand il correspond au titre de l'image ou au lieu représenté.
$requete_simple="SELECT titre_image, rue FROM images, lieux WHERE lieux.id_lieu=images.id_lieu AND rue LIKE('%".$mot_cle."%') OR titre_image LIKE('%".$mot_cle."%')";
$resultat_simple=mysql_query($requete_simple);
while($enregistrements=mysql_fetch_array($resultat_simple))
{
$titre= $enregistrements['titre_image'];
$lieu=$enregistrements['rue'];
echo "$titre -- $lieu </BR>";
}
$nombre_image=mysql_num_rows($resultat_simple);
//sélection des enregistrements pour un mot-clé correspondant au nom de l'auteur de la photographie
$requete_simple2="SELECT titre_image, nom_auteur FROM images, auteurs, photographier WHERE photographier.id_image=images.id_image AND photographier.id_auteur=auteurs.id_auteur AND nom_auteur LIKE('%".$mot_cle."%')";
$resultat_simple2=mysql_query($requete_simple2);
while($enregistrements=mysql_fetch_array($resultat_simple2))
{
$titre= $enregistrements['titre_image'];
$nom_auteur= $enregistrements['nom_auteur'];
echo "$titre -- $nom_auteur </BR>";
}
$nombre_image=mysql_num_rows($resultat_simple2);
//sélection des enregistrements pour un mot-clé correspondant au sujet de la photographie
$requete_simple3="SELECT titre_image FROM images, lier, sujets WHERE lier.id_image=images.id_image AND lier.id_sujet=sujets.id_sujet AND sujet LIKE('%".$mot_cle."%')";
$resultat_simple3=mysql_query($requete_simple3);
while($enregistrements=mysql_fetch_array($resultat_simple3))
{
$titre= $enregistrements['titre_image'];
$sujet= $enregistrements['sujet'];
echo "$titre </BR>";
}
$nombre_image=mysql_num_rows($resultat_simple3);
// Si aucun enegistrement n'est retourné,
// on affiche un message adéquat
if ($nombre_image == "0") {
echo "<p>Aucun résultat ne correspond à votre recherche, essayez de nouveau avec la recherche avancée.</p>";
}
// Si un seul enregistrement est trouvé, on affiche un message au singulier
elseif($nombre_image == "1") {
echo "<p> Il y a une image correspondant à votre recherche</p>";}
// Dans le cas contraire le message est au pluriel...
else {echo "<p>Il y a $nombre_image image(s) correspondant à votre recherche</p>";}
}
if(!$resultat_simple)
{
echo mysql_error()."<br>";
}
mysql_close($connexion);
?>
J'ai une galerie d'images à réaliser. Pour ce faire j'ai donc une base de données avec plusieurs tables faite avec phpmyadmin.
A partir de là j'ai essayé de faire un formulaire dynamique de recherche simple par mot-clé.
A priori ça marche puisque j'obtiens des résultats qui s'affichent grâce aux 'echo', mais par contre le mysql_num_rows ne les prend pas en compte et indique qu'il n'y a aucun résultat, notamment pour les requêtes concernant l'auteur et le lieu.
J'avoue que je débute en php et mysql, et je ne vois pas où est le problème.
Pouvez-vous m'aider svp? C'est asse urgent, je l'avoue.
Merci d'avance.
Voilà le code du formulaire:
<form method="post" action="traitement_recherche_simple.php">
<input type="text" name="mot_cle" size="60" maxlength="50"/>
<input type="submit" value="Rechercher"/>
</form>
et celui de mon fichier de traitement:
<?php
$mot_cle=$_POST['mot_cle'];
include_once("connexion_base.php");
$connexion=mysql_connect($host,$user,$password);
$base=mysql_select_db("galerie_image",$connexion);
//on définit la variable mot-clé
$mot_cle=($_POST['mot_cle']);
$mot_cle=utf8_encode($mot_cle);
$mot_cle=utf8_decode($mot_cle);
if (($mot_cle == "")||($mot_cle == "%")) {
//Si aucun mot clé n'a été saisi, le script demande à l'utilisateur de bien vouloir préciser un mot clé
echo "Veuillez entrer un mot clé s'il vous plaît.";}
else {
// On selectionne les enregistrements contenant le mot clé quand il correspond au titre de l'image ou au lieu représenté.
$requete_simple="SELECT titre_image, rue FROM images, lieux WHERE lieux.id_lieu=images.id_lieu AND rue LIKE('%".$mot_cle."%') OR titre_image LIKE('%".$mot_cle."%')";
$resultat_simple=mysql_query($requete_simple);
while($enregistrements=mysql_fetch_array($resultat_simple))
{
$titre= $enregistrements['titre_image'];
$lieu=$enregistrements['rue'];
echo "$titre -- $lieu </BR>";
}
$nombre_image=mysql_num_rows($resultat_simple);
//sélection des enregistrements pour un mot-clé correspondant au nom de l'auteur de la photographie
$requete_simple2="SELECT titre_image, nom_auteur FROM images, auteurs, photographier WHERE photographier.id_image=images.id_image AND photographier.id_auteur=auteurs.id_auteur AND nom_auteur LIKE('%".$mot_cle."%')";
$resultat_simple2=mysql_query($requete_simple2);
while($enregistrements=mysql_fetch_array($resultat_simple2))
{
$titre= $enregistrements['titre_image'];
$nom_auteur= $enregistrements['nom_auteur'];
echo "$titre -- $nom_auteur </BR>";
}
$nombre_image=mysql_num_rows($resultat_simple2);
//sélection des enregistrements pour un mot-clé correspondant au sujet de la photographie
$requete_simple3="SELECT titre_image FROM images, lier, sujets WHERE lier.id_image=images.id_image AND lier.id_sujet=sujets.id_sujet AND sujet LIKE('%".$mot_cle."%')";
$resultat_simple3=mysql_query($requete_simple3);
while($enregistrements=mysql_fetch_array($resultat_simple3))
{
$titre= $enregistrements['titre_image'];
$sujet= $enregistrements['sujet'];
echo "$titre </BR>";
}
$nombre_image=mysql_num_rows($resultat_simple3);
// Si aucun enegistrement n'est retourné,
// on affiche un message adéquat
if ($nombre_image == "0") {
echo "<p>Aucun résultat ne correspond à votre recherche, essayez de nouveau avec la recherche avancée.</p>";
}
// Si un seul enregistrement est trouvé, on affiche un message au singulier
elseif($nombre_image == "1") {
echo "<p> Il y a une image correspondant à votre recherche</p>";}
// Dans le cas contraire le message est au pluriel...
else {echo "<p>Il y a $nombre_image image(s) correspondant à votre recherche</p>";}
}
if(!$resultat_simple)
{
echo mysql_error()."<br>";
}
mysql_close($connexion);
?>
A voir également:
- Problème formulaire de recherche
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Formulaire de reclamation instagram - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
4 réponses
bonjour,
il me semble que la variable $nombre_image est :
initialisée avec
$nombre_image=mysql_num_rows($resultat_simple);
puis écrasée par $nombre_image=mysql_num_rows($resultat_simple2);
et de nouveau écrasée par $nombre_image=mysql_num_rows($resultat_simple3);
donc par le nombre de titre et sujet.
nombre pour lieu et auteur ont disparus
il me semble que la variable $nombre_image est :
initialisée avec
$nombre_image=mysql_num_rows($resultat_simple);
puis écrasée par $nombre_image=mysql_num_rows($resultat_simple2);
et de nouveau écrasée par $nombre_image=mysql_num_rows($resultat_simple3);
donc par le nombre de titre et sujet.
nombre pour lieu et auteur ont disparus
Bonjour,
Merci beaucoup pour cette remarque.
Mon script fonctionne trés bien maintenant; tout est résolu.
Merci.
Merci beaucoup pour cette remarque.
Mon script fonctionne trés bien maintenant; tout est résolu.
Merci.