Moteur de recherche retour des resultat par ordre de pertina
Posté : 16 août 2007, 09:45
Bonjour a tous... je suis completement perdu je n'arrive pas a imaginé comment on peut fair ca...
-commen donner comme ordre a la requete a chaque foi que tu trouve un element tu incremente une varable et de mm pour les autre mot de recherche pour a la fin aficher le top 10 ...
J'ai besoin de vos connaissance ^^
voila une partie de mon code.
-commen donner comme ordre a la requete a chaque foi que tu trouve un element tu incremente une varable et de mm pour les autre mot de recherche pour a la fin aficher le top 10 ...
J'ai besoin de vos connaissance ^^
voila une partie de mon code.
Code : Tout sélectionner
<?php
$type=$_POST['type'];
$rech=$_POST['recherche'];
$rtype=$_POST['type_rech'];
//recuperation des retour a la ligne et des guillemet
$rech= nl2br($rech);
$rech= addslashes($rech);
.............
//on coupe la chaine de caractere a chaque espace
//$mots = explode(" ", $rech);
$mots = preg_split('#[^\S]+#si', $rech);
//on compte le nombre de mot
$long = count($mots);
//initialisation de la variable condition
$condition = "";
$i=0;
if (empty($rech))
{
echo '<DIV id=content>';
echo 'Veuillez entrer une recherche';
include ('rechercher_procedure.php');
exit ();
}
else if($type=="logi" and $rtype=="tous")
{
//echo 'recherche par mot clé (tous) - logiciel ';
for ($i=0; $i<$long;$i++)
{
if($mots[$i]> "2")
{
$condition = $condition .'AND (proc_soft.proc_s_description like \'%'.$mots[$i].'%\' OR pb_soft.pb_s_description like \'%'.$mots[$i].'%\')';
$condition = ltrim($condition,'AND');
$table = '(relation_soft_pb LEFT JOIN proc_soft ON proc_soft.proc_s_num = relation_soft_pb.proc_s_num)LEFT JOIN pb_soft ON relation_soft_pb.pb_s_num = pb_soft.pb_s_soft';
}
}
}
else if($type=="logi" and $rtype=="omoin")
{
// echo 'recherche par mot clé (au moin un) - logiciel ';
for ($i=0; $i<$long;$i++)
{
if($mots[$i]> "2")
{
$condition = $condition .'OR (proc_soft.proc_s_description like \'%'.$mots[$i].'%\' OR pb_soft.pb_s_description like \'%'.$mots[$i].'%\')';
$condition = ltrim($condition,'OR');
$table = '(relation_soft_pb LEFT JOIN proc_soft ON proc_soft.proc_s_num = relation_soft_pb.proc_s_num)LEFT JOIN pb_soft ON relation_soft_pb.pb_s_num = pb_soft.pb_s_soft';
}
}
}
.................
//construction de la requete
$sql = 'Select * from '.$table.' where '.$condition ;
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$data = mysql_query($sql) or die ('Erreur: '.mysql_error());
$total = mysql_num_rows($data);
//si on récupére un résultat on affiche le tableau
if($total)
{
echo '<div id=content>';
echo '<table>';
echo '<tr>';
echo '<td>Num procédure</td>';
echo '<td>Createur</td>';
echo '<td>Description</td>';
echo '</tr>';
echo '<tr>';
while($row = mysql_fetch_array($data))
{
echo '<tr>';
echo '<td>'.$row["proc_s_num"].'</td>';
//selectionner le Nom et le prenom du createur
$sql_nom = 'select * from utilisateur where util_num = '.$row["util_num"];
$res = mysql_query($sql_nom) or die ('Erreur : '.mysql_error());
$nom=mysql_fetch_assoc($res);
echo '<td>'.$nom["util_prenom"].'<br>'.$nom["util_nom"].'</td>';
echo '<td>'.$row["pb_s_description"].'</td>';
echo '</tr>';
}
echo '</tr>';
echo '</table>';
echo '</div>';
}
else
{
echo 'la recherche n\'a donnée aucun résultat';
}
?>