Bonjour,
j'ai une question :
j'ai un code php qui de faire un moteur de recherche.
voila le code :

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
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
 
<?php
mysql_connect( "localhost", "root", "" ) ; //connexion à la bdd
mysql_select_db("INFOS") ;
if (isset($_POST['rechercher'])) //si on a validé le formulaire
   {
     $recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); //sécurisation des variables
     $mode = mysql_real_escape_string(htmlspecialchars($_POST['mode']));
     if (isset($_POST['offre'])) $offre=$_POST['offre'];//si on a coché la case
 
     if ($mode == "tous_les_mots")
        {
         $and_ou_or = 'AND'; //on utilisera AND dans la boucle
        }
     else
         {
           $and_ou_or = 'OR'; //on utilisera OR dans la boucle
         }
     if ($mode == "expression_exacte") //si le mode de recherche est par expression exacte
        {
          $selection_recherche = mysql_query("SELECT url,titre,terme,poids,type_offre,resume FROM document,terme WHERE document.code_doc=terme.code_doc AND type_offre='$offre' AND terme LIKE '%$recherche%' group by url ORDER BY poids DESC  ");
        }
      else //si le mode de recherche n'est pas par expression exacte
         {
           $aTab = preg_split('`[\s| : \ , \ ; \ . \ « \ » \%\&\0\1\2\3\4\5\6\7\7\8\9\=\*\@\<\>\;\-\ " \ \ \ / \ { \ } \ - \ # \ < \ > \  _ (  \
	                           )  \  +  \  -\[\]\=\?\!\^\`\¿\_\{\}\|\~\€\‚\ƒ\„\…\†\‡\ˆ\‰\Š\‹\Œ\Ž\‘\’\“\”\•\–\—	\˜\™\š\›\œ\ž\¨\µ\¬\$\©\@\§\ \ ]+`', $recherche);//caractéres spécieux keyword
           $champs1=implode(" ",$aTab); //keyword
 
 
           $motsExclus = array('a','afin','ai','ainsi','ais','ait','alors','après','as','assez','au','aucun','aucune','auprès','auquel','auxquelles',
	                      'auwquels','auraient','aurais','aurait','aurez','auriez','aurions','aurons','auront','aussi','aussitôt','autant','autre',
						  'autres','aux','avaient','avais','avait','avant','avez','aviez','avoir','avons','ayant','beaucoup','car','ce','ceci','cela',
						  'celle','celles','celui','cependant','certes','ces','cet','cette','ceux','chacun','chacune','chaque','chez','cinq','comme',
						  'comment','dans','de','dehors','delà','depuis','des','dessous','dessus','deux','deçà','dix','doit','donc','dont','du','durant',
						  'duquel','dès','déjà','elle','elles','en','encore','enfin','entre','er','est','est-ce','et','etc','eu','eux','eurent','eut','faut',
						  'fur','furent','grâce','hormis','hors','huit','ici','il','ils','je','la','laquels','le','les','lesquels','leur','leurs','lors',
						  'lorsque','lui','là','mais','malgré','me','melle','mes','mien','mienne','miennes','miens','mm','mme','moi','moins','moment','mon',
						  'mr','même','neuf','ni','non-','non','nos','notamment','notre','nôtres','nous','néanmoins','on','ont','ou','oui','où','par','parce',
						  'parfois','parmi','partout','pas','pendant','peu','peut','peut-être','plus','plutôt','pour','pourquoi','près','puis','puisque','quand',
						  'quant','quatre','que','quel','quelle','quelles','quelque','quelquefois','quelques','quels','qui','quoi','quot','sa','sans','sauf','se',
						  'selon','sept','sera','seraient','serai','seraient','serais','serait','seras','serez','seriez','serions','serons','ses','si','sien',
						  'siennes','siens','sitôt','six','soi','soit','sommes','son','sont','sous','souvent','suis','sur','tandis','tant','tes','tienne','tiennes',
						  'tiens','toi','ton','toujours','tous','tout','toute','toutefois','toutes','tois','trop','très','tu','un','une','unes','uns','voici','vos',
						  'votre','vous','vôtres','y','à','ème','ére','étaient','étais','était','étant','étiez','étions','êtes','être','été',"d'","s'","c'","m'","n'",
						  "j'","l'","t'");
 
          if( preg_match_all('`\w{2,}`', $champs1, $result) )
            {
              // Remplacement des mots exclus par rien
              $result[0] = preg_replace('`\b(' . implode($motsExclus, '|') . ')\b`i', '', $result[0]);
             // Suppression des éléments vides avec array_filter()
             $result[0] = array_filter($result[0]);
           }
         $champs11=implode(" ", $result[0]);
 
 
         $mots = explode(" ", $champs11); //séparation des mots reprtésentation sous forme d'un tableau
 
         $nombre_mots = count ($mots); //compte le nombre de mots
         $valeur_requete = '';
         for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
            {
              $valeur_requete .= '' . $and_ou_or . ' terme LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
            }
         $valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
         $selection_recherche = mysql_query("SELECT url,titre,terme,poids,type_offre,resume
         FROM document,terme,titre
         WHERE document.code_doc=terme.code_doc AND type_offre='$offre' AND $valeur_requete group by url ORDER BY poids DESC "); //requête avec le résultat de la boucle dedans
      }
 
 
 
     $nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
	 	 	$somme = array();
            $somme2 = array();
     if ($nombre_resultats == 0) //s'il n'y a pas de résultat
        {
		   echo("<META HTTP-equiv=\"refresh\" content=0;URL=aucun_resultat.php?nombre_resultats=$nombre_resultats&champs1=$champs1>");
 
        }
    else //il y a au moins un résultat
       {?>
<div id="navigationnn1"><!-- c'est la partie au en remplit le contenu-->
  <div id="resultatsite">
     <b>Recherche dans le site</b>
  </div>
 <!-- <div id="text">Si vous cherchez une offre de <b>stage</b> ou d'<b>emploi</b></div>-->
 <form method="post" action="recherche site.php">
 <table width="700" align="center" bgcolor="#333366" style="margin-top:-15px; "  >
       <tr> 
	      <td><span class="Style1">Choisir et lancer maintenant votre recherche</span></td>
       </tr>
	    <tr>
	      <td bgcolor="#F2F2F2"> <p>&nbsp;
          </p>
	        <p>
        <input type="text" name="recherche" VALUE SIZE="31" MAXLENGTH="255" style="margin-bottom:10px;"> 
        <input type="submit" value="Rechercher" name="rechercher" style="margin-bottom:10px;"> 
        <br>
		<select name="mode" style="display:none">
       <option value="expression_exacte"></option>
       <option value="tous_les_mots"></option>
       <option value="un_mot" selected>Au moins un mot</option>
       </select>
 
		Rechercher dans :&nbsp;&nbsp;&nbsp;
        <input type="radio" name="offre" value="stage"> Stage
        <input type="radio" name="offre" value="emploi" checked> Emploi </p>
	        <p>&nbsp;</p></td>
       </tr>
      </table>
	  </form>
<hr  style="border-bottom:solid 1px #000066; margin-top:-20px;width:900px; "></hr>
	   <?php  
        echo '<div style="background-color:#E0E0E0; width:900px; margin-top:-25px; height:25px; text-align:left;">&nbsp;&nbsp;&nbsp;
		      <strong>Site</strong> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			  Nombre de résultats : <strong> ' . $nombre_resultats . '</strong>&nbsp;&nbsp;&nbsp;pour <strong>'.$champs1.'</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><br /><br />'; //nombre de résultats
         while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
              {
                if(!array_key_exists($resultats["url"], $somme))
				{
                $somme[$resultats["url"]] = 0;
                $somme[$resultats["url"]] +=  $resultats["poids"];
				}
 
                if(!array_key_exists($resultats["url"], $somme2))
				{
                $somme2[$resultats["url"]] = 0;
                $somme2[$resultats["url"]] +=  $resultats["poids"] * $resultats["poids"];
				}
 
              }
       }
	   arsort($somme);
 
	foreach ($somme as $url => $poids) 
		 {
		   $somme_carre=$somme2[$url];
		   $racine_sommecarre=sqrt($somme2[$url]);
		   $somme_mot=sqrt($nombre_mots);
		   $rsv=$poids/($somme_mot*$racine_sommecarre);
		   $affichage=mysql_query("select titre,resume,type_offre FROM document WHERE url='$url'"); 
		   $affichage1 = mysql_fetch_array($affichage);
 
		   echo '<p align="left" style="margin-bottom:-60px; font-size=15px; margin-left:18px;"><a href=' .$url. '>'.$affichage1['titre'].'</a>...<p><br>
		   <p><hr  style="border-bottom:solid 1px #000066;width:870px; margin-left:3px; margin-bottom:-50px;"></hr></p><br>
		   <p align="left" style="margin-bottom:-50px; margin-left:35px; margin-top:-30px; margin-right:20px;">'.$affichage1['resume'].'...<p><br>
		   <p align="left" style="margin-bottom:-50px; color:#0F7C91; margin-left:35px;">' . $url . '<p><br><br><br>';
 
       }
  } //fin de if(isset)
 
else //si on n'a pas validé le formulaire, on l'affiche
    {       ?>
	<div id="recherchesite">
<b>Recherche dans le site</b>
  </div>
  <div id="text">Si vous cherchez une offre de <b>stage</b> ou d'<b>emploi</b></div>
  <div id="espace">
 
<form method="post" action="afficher_visiteur.php">
 <table width="700" align="center" bgcolor="#333366"   >
       <tr> 
	      <td><span class="Style1">Choisir et lancer maintenant votre recherche</span></td>
       </tr>
 
	      <td bgcolor="#F2F2F2"> <p>&nbsp;
          </p>
	        <p>
        <input type="text" name="recherche" VALUE SIZE="31" MAXLENGTH="255" style="margin-bottom:10px;"> 
        <input type="submit" value="Rechercher" name="rechercher" style="margin-bottom:10px;"> 
        <br>
		<select name="mode" style="float:left; margin-left:185px; display:none " >
         <option value="expression_exacte">Expression Eexacte</option>
         <option value="tous_les_mots">Tout les mots</option>
         <option value="un_mot" selected>Au moins un mot</option>
       </select>
	   Rechercher dans :
       <input type="radio" name="offre" value="stage"> Stage   
       <input type="radio" name="offre" value="emploi" checked> Emploi </p>
	        <p>&nbsp;</p></td>
       </tr>
 
	   <tr>
      </table>
	  </form>
	  <?php
	      mysql_close(); //déconnexion de la bdd
		  }
		  ?>
ma question :
1-quand je fait la recherche d'une <gras>chaine de mot</gras> elle affichera toujour tout les URL qui ce trouve dans la base et aussi dans le cas au cette mot recherché ne ce trouve pas dans cette URL.
2- quand je fait une recherche d'un seul mot elle affichera<gras> aucun resultat </gras> mais cette mot elle se trouve dans un URL ou plusieur URL.

j'ai fait tout mes solutions mais ça marche pas???????????????????
svp a ce qu'il ya qlq peut me répondre je suis vraiment perturbé svp svp svp je suis bloqué.

Merci d'avance