erreur dans mon affichage de la base de donnée
Hors ligneHadjiphp Le 30/04/2009 à 13:34 Profil de Hadjiphp Configuration de Hadjiphp

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\=\*\@\<\>\;\-\ " \ \ \ / \ { \ } \ - \ # \ < \ > \  _ (  \
                             )  \  +  \  -\[\]\=\?\!\^\`\¿\_\{\}\|\~\€\&#8218;\&#402;\&#8222;\&#8230;\&#8224;\&#8225;\&#710;\&#8240;\&#352;\&#8249;\&#338;\&#381;\&#8216;\&#8217;\&#8220;\&#8221;\&#8226;\&#8211;\&#8212;     \&#732;\&#8482;\&#353;\&#8250;\&#339;\&#382;\¨\µ\¬\$\©\@\§\ \ ]+`', $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.
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels