|
bonjour voila j'ai une question je débute avec php et mysql. j'ai un moteur de recherche dans la base de donnée, j'ai réussi a faire ça mais j'ai une question au niveau de l'affichage. je vous donne le code aprés j'explique : Code :
?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 ($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 FROM stage WHERE terme LIKE '%$recherche%' ORDER BY id 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
       echo ("$champs1"); print"<br><br>";
    Â
$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]);
       echo ("$champs11"); print"<br><br>";
$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
FROM stage
WHERE $valeur_requete  ORDER BY id 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
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 de résultats: ' . $nombre_resultats . ':<br /><br />'; //nombre de résultats
while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
{
echo '<strong>Terme:</strong> ' . $resultats['terme'] . '<br />
<strong>URL:</strong> ' . $resultats['url'] . '<br />
<strong>Résume:</strong> ' . $resultats['titre'] . '<br /><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 />
Votre mode de recherche :
<select name="mode">
<option value="un_mot">Au moins un mot</option>
</select>
<input type="submit" value="Rechercher" name="rechercher" />
</form>
<?php
}
mysql_close(); //déconnexion de la bdd
?>
voici l'affichage : nombre de résultats: 3: Terme: recherche URL: http://www.emploitic.com/Résume: emploitic | emploi en alg eacute rie recrutement en alg eacute rie | offre d emploi en alg eacute rie Terme: emploi URL: http://www.emploitic.com/Résume: emploitic | emploi en alg eacute rie recrutement en alg eacute rie | offre d emploi en alg eacute rie Terme: recherche URL: annuaire.php Résume: université des sciences et de la technologie houari boumediene usthb algerie recommencer normalement elle affiche une seul fois: URL: annuaire.php URL: http://www.emploitic.com/merci de me répondre. merci d'avance.  |