Moteur recherche

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, J'aurais aime savoir s'il est possible de faire un moteur de recherche qui surligne les resultats (ex:pour retrouver un pdf sur une longue page de pdf). Mes pdf sont stockes dans des repertoires sur le serveur, je cree donc des liens dans mon editeur Merci à vous

Édité par firm1

Merci à tous ; )

+0 -0
Auteur du sujet

Merci pour ta réponse. En fait j'aimerais que quand je tape "rh" dans le moteur de recherche, que quand je clique sur un des résultat, il m'amene sur la page (ca c'est ok) mais aussi qu'il surligne le resultat car si la page comprend 400 lignes, l'internaute aura du mal à trouver le resultat… J'ai reussi à trouver, mais j'ai une erreur. Voici mon code si tu as le temps, voici l'erreur affichée : Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\new\moteur2.php on line 100 Je crois qu'il s'agit d'une erreur au niveau de la requete mais je ne la trouve pas

Merci à toi

  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
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php 
include('header.php');
?>

<div id="moteur">

<form method='post' action='moteur.php' >
<input type='recherche'  id='recherche' name='recherche'>
<input type='submit' value='go' >
</form>
</div>

<section id="actucomplete">
<h1>Résultat de la requête</h1>

<?php
include ('sql.php');
//On determine l'expression a rechercher
if(isset($_GET['recherche']))
{
        $rec = htmlentities($_GET['recherche']);
}
else
{
        $rec = 'php MYSQL';
}
//On determine le type de recherche
if(isset($_GET['type']))
{
        if($_GET['type']=='un')//Un des mots
        {
                $type = 1;
        }
        elseif($_GET['type']=='tout')//Tout les mots
        {
                $type = 2;
        }
        else//L'expression exacte
        {
                $type = 3;
        }
}
else
{
        $type = 1;//type par defaut: L'expression exacte
}
//On determine si on doit surligner les mots dans les resultats
if(!isset($_GET['surligner']) or $_GET['surligner']!='true')
{
        $surligner = false;
}
else
{
        $surligner = true;
}
//On dertermine les identifiants, les noms et les informations des utilisateur
$req = 'SELECT * FROM rubrique WHERE';
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' infos LIKE "%'.$mot.'%" OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' infos LIKE "%'.$mot.'%" AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        $req .= 'infos LIKE "%'.$rec.'%"';
}
//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';
$requete = mysql_query($req);
//Le formulaire de recherche
?>
<form action="" method="get">
Expression &agrave; rechercher: <input type="text" name="recherche" value="<?php echo $rec; ?>" /><br />
Type de recherche: <input type="radio" name="type" value="un"<?php if($type==1){echo 'checked="checked"';} ?> /> Un des mots <input type="radio" name="type" value="tout"<?php if($type==2){echo 'checked="checked"';} ?> /> Tout les mots <input type="radio" name="type" value="exacte"<?php if($type==3){echo 'checked="checked"';} ?> /> Expression exacte<br />
Mettre en gras les mots recherch&eacute;s: <input type="checkbox" name="surligner" value="true" <?php if($surligner){echo 'checked="checked"';} ?> /><br />
<input type="submit" value="Rechercher" />
</form>
<h2>R&eacute;sultats</h2>
<table>
        <tr>

                <th>Résultat</th>
        </tr>
<?php
//On affiche les resultats
while($dnn = mysql_fetch_array($requete))
{
?>
        <tr>

                <td><?php
if($surligner)//Si il faut surligner les mots, on les surligne
{
        if($type==3)
        {
                echo preg_replace('#('.preg_quote($rec).')#i', '<strong>$1</strong>', $dnn['infos']);//On surligne l'expression exacte
        }
        else
        {
                echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '<strong>$1</strong>', $dnn['infos']);//On surligne les mots cles de la recherche
        }
}
else
{
        echo $dnn['infos'];//On ne surligne pas
}
?></td>
        </tr>
<?php
}
?>
</table>
</section>

Édité par danette59

Merci à tous ; )

+0 -0
Staff

Question : est-ce un code que tu fais pour apprendre le PHP ou un code que tu fais pour faire un site public ?

Ça impacte beaucoup la réponse ; parce que dans le second cas il te faut si possible un vrai moteur d'indexation, bien plus performant que des requêtes "like" pour ça (on parle d'un facteur 1 000 à 1 000 000). Soit externalisé via Google ou ses concurrents (qui proposent des services d'indexation à brancher sur ton site), soit via des moteurs à installer sur le serveur comme Lucene.

Auteur du sujet

Il s'agit d'un petit moteur c'est vrai que c'est le plus basique, mais c'est pour un tout petit site merci de l'info SpaceFox est ce que tu peux m'aider à résoudre mon pb de requete stp?

Merci à tous ; )

+0 -0

Tu peut passer un paramètre GET vers la page ou le résultat s'affiche, contenant le mot à surligner ; puis lui appliquer une classe qui sera surlignée en CSS.

« There was a kingdom that was falling so fast that people wouldn't help it, they wouldn't make it last » - Animal Kingdom, Beau

+0 -0

Peux-tu afficher la requête produite juste avant de l'exécuter ?

Attention aux injections SQL, ton script y est vulnérable. Un pirate pourrait entrer du code SQL dans le champ de recherche et afficher/modifier/supprimer toute ta base de données.

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte