IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

moteur de recherche ()


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut moteur de recherche ()
    Bonjour,
    j'ai crée un petit moteur de recherche a partir d'un autre script

    j'ai pu bien le modifier est l'adopté a mon site j'ai juste un petit souci rien de grave :p ^^'

    quand je laisse la case de recherche vide est que je clique sur recherche il m'affiche tout le contenu de la table alors qu'il doit rien affiché

    pourtant j'ai précisé que si la case est vide il affiche 'rien'

    voila le script qui affiche le résultat


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
    if ($nombre_resultats == 0) //s'il n'y a pas de résultat
    {
    echo 'aucun resultat.<a href="recherche.php">recommencer</a>';
    }
    else //il y a au moins un résultat
    {
    echo '' . $nombre_resultats . ' Fiche(s) trouvée(s)<br /><br />'; //nombre de résultats
    while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
    {
    echo '» ' . $resultats['titre'] . '<br />';
    }
    echo '<a href="recherche.php">recommencer</a>';
    }?>

    mes test
    ****
    if(empty($_POST['recherche'])){
    die('rien');
    }
    ****
    elseif (empty($_POST['rechercher']))
    {
    echo 'vide';
    }
    ****
    if(empty($_POST['recherche']) == '') // ca veut rien dire je crois mais j'ai trouvé dans le manuel
    {
    echo 'rien';
    }
    ****


    Merci d'avance a tout ceux qui m'aideront

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 79
    Points : 152
    Points
    152
    Par défaut
    En fait c'est simplement que ta requête doit renvoyer toute la table. Donc effectivement le script que tu nous montres va t'afficher les résultats de la requête.

    C'est ta requête qui n'est pas correcte vraisemblablement et qui devrait ne renvoyer aucun résultat quand le paramètre n'est pas fourni.

    On ne peut donc pas t'aider sans voir la requête.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    voila le script au complet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("canada");
     
     
     
    if (isset($_POST['rechercher'])) //si on a validé le formulaire
    {
    $recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); //sécurisation des variables
     //si le mode de recherche n'est pas par expression exacte
    $selection_recherche = mysql_query("SELECT * FROM mpiii WHERE titre LIKE '%$recherche%' ORDER BY id DESC");
    $mots = explode(" ", $recherche); //séparation des mots
    $where = "";
    foreach($mots as $mot) {
       $conditions[] = " titre LIKE '%" . $mot . "%'"; 
    }
    if (is_array($conditions)) {
       $where = "WHERE " . implode(' OR ',  $conditions) . " ";
    }
    $sql = "SELECT * FROM mpiii " . $where  . "ORDER BY id DESC";
    $selection_recherche = mysql_query($sql);
     
     
    $nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
    if ($nombre_resultats == 0) //s'il n'y a pas de résultat
    {
    echo 'aucun resultat.<a href="recherche.php">recommencer</a>';
    }
     
     
     
    else //il y a au moins un résultat
    {
    echo '' . $nombre_resultats . ' Fiche(s) trouvée(s)<br /><br />'; //nombre de résultats
    while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
    {
    echo '» ' . $resultats['titre'] . '<br />';
    }
    echo '<a href="recherche.php">recommencer</a>';
    }
    }
    else //si on n'a pas validé le formulaire, on l'affiche
    {
     
    ?>
    <form method="post" action="recherche.php">
    Votre recherche :
    <input type="text" name="recherche" />
    <br />
     
    <input type="submit" value="Rechercher" name="rechercher" />
    </form>
    <?php
    }
    mysql_close(); //déconnexion de la bdd
    ?>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Points : 68
    Points
    68
    Par défaut
    Ou est-ce que tu as mis ton test empty ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
    if ($nombre_resultats == 0) //s'il n'y a pas de résultat
    {
    echo 'aucun resultat.<a href="recherche.php">recommencer</a>';
    }
    else //il y a au moins un résultat
    {
    echo '' . $nombre_resultats . ' Fiche(s) trouvée(s)<br /><br />'; //nombre de résultats
    while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
    {
    echo '» ' . $resultats['titre'] . '<br />';
    }
    echo '<a href="recherche.php">recommencer</a>';
    }?>

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 79
    Points : 152
    Points
    152
    Par défaut
    Le problème c'est qu'effectivement ta requête renvoie toute la table quand on ne remplit rien.

    Essaie de remplacer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['rechercher']))
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['rechercher']) and trim($_POST['rechercher']) !== "")

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['rechercher']) and trim($_POST['rechercher']) !== "")
    fonctionne pas


    j'ai réglé le problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['rechercher']) && !empty($_POST['recherche']))
    quand je laisse le champs vide rien ne se passe

    en tout cas merci pour les réponses x)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  2. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 15h07
  3. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo