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
|
<?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
$recherche=strtolower($recherche);
$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 document.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','0','1','2','3','4','5','6','7','8','9','é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="SELECT url,titre,terme,poids,type_offre,resume
FROM document,terme
WHERE document.code_doc=terme.code_doc AND document.type_offre='$offre' AND $valeur_requete group by url ORDER BY poids DESC ";
$selection_recherche = mysql_query($selection); //requête avec le résultat de la boucle dedans
} //fin else
$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>
</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> </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;">
<strong>Site</strong>
Nombre de résultats : <strong> ' . $nombre_resultats . '</strong> pour <strong>'.$champs1.'</strong> </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="select titre,resume,type_offre FROM document WHERE url='$url'";
$affichage1=mysql_query($affichage);
$affichage2 = mysql_fetch_array($affichage1);
echo '<p align="left" style="margin-bottom:-60px; font-size=20px; margin-left:18px;"><a href=' .$url. '>'.$affichage2['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;">'.$affichage2['resume'].'...<p><br>
<p align="left" style="margin-bottom:-50px; color:#0F7C91; margin-left:35px;">' . $url . '<p><br><br><br>';
}
}//fin else
?> |
Partager