Petit nouveau ! |
6 Messages
31 janv. 2006, 23:00
En réalité je ne sais pas trop, disons qu'actuellement sur nos annuaires le moteur présent (la requete) est celle ci dessous !
<?php
if (!isset($_GET['limit'])) { $limit = "20"; }else{ $limit = "".$_GET['limit'].""; }
if (!isset($_GET['debut'])) { $debut = "0"; }else{ $debut = "".$_GET['debut'].""; }
if (!isset($_GET['key'])) { $asked = "".$_POST['key'].""; }elseif(!isset($_POST['key'])){ $asked = "".$_GET['key'].""; }
// Si un/des mot(s) clef(s) sont entre(s), on commence la recherche
if (!empty($asked))
{
$asked = strip_tags($asked); // Supprime les tags HTML et PHP
$asked = strtolower($asked); // Passe la chaine en minuscule
$asked = cleanString($asked); // Supprime les caracteres non alpha-numeriques
$asked = removeAccents($asked); // Supprime les accents
$asked = CheckValidName($asked); // Supprime mots inutiles
$asked = trim($asked); // Supprime les espaces en debut et fin de chaine
$db = mysql_connect($sql_host,$sql_user,$sql_pass);
mysql_select_db($sql_bdd,$db);
$sql = "SELECT id, poid, titre, url, description, MATCH (titre , url , description , clee) AGAINST ('".$asked."') AS score FROM ".$mysql_prefix."liensMembre WHERE MATCH (titre , url , description , clee) AGAINST ('".$asked."') AND valide='1' AND user='".$_GET['log']."' LIMIT ".$debut.", ".$limit."";
$result = mysql_query($sql);
$sql3 = "SELECT id, MATCH (titre , url , description , clee) AGAINST ('".$asked."') AS score FROM ".$mysql_prefix."liensMembre WHERE MATCH (titre , url , description , clee) AGAINST ('".$asked."') AND valide='1' AND user='".$_GET['log']."'";
$result2 = mysql_query($sql3);
$result3 = mysql_query($sql3);
echo '<table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">';
echo '<tr><td height="45" valign="bottom"><strong>Résultat de votre recherche</strong></td></tr>';
echo '<tr><td>';
if($debut == "0")
{
$nb = $debut+1;
if(mysql_num_rows($result3) == "0")
{
echo '0-0';
}
elseif(mysql_num_rows($result3) < $limit)
{
echo ''.$nb.'-'.mysql_num_rows($result3).'';
}
else
{
echo ''.$nb.'-'.$limit.'';
}
}
elseif($debut <> "0")
{
$debut1 = $debut+1;
if(mysql_num_rows($result3) <> $limit)
{
echo ''.$debut1.'-'.mysql_num_rows($result3).'';
}
else
{
$limit2 = $limit+$limit+1;
echo ''.$debut1.'-'.$limit2.'';
}
}
echo ' sur '.mysql_num_rows($result3).' résultats contenant <strong>'.$_POST['key'].'</strong>';
echo '</td></tr>';
echo '<tr><td> </td></tr>';
echo '<tr><td width="74%" valign="top"><table width="100%" border="0" cellspacing="4" cellpadding="0">';
echo '<tr><td valign="top">';
$nrows = mysql_num_rows($result2);
$flag = 1;
// Si aucun resultats n'est trouve, on retourne un message d'erreur
if(mysql_num_rows($result2) == 0)
{
echo "<span class=\"txt_rouge\">Aucun résultat contenant <strong>".$_POST['key']."</strong> n'a pu être trouvé.</span><br>";
}
elseif(strlen($asked) < 4)
{
// Si le mot clef fait moins de 3 caracteres, la recherche est stoppe
echo "<span class=\"txt_rouge\">Veuillez saisir un mot clé de 4 caractères minimum</span>";
}
else
{
while($row = mysql_fetch_array($result))
{
$titre = highlight($row['titre'], $asked);
$description = highlight($row['description'], $asked);
$url = highlight($row['url'], $asked);
echo '<table width="97%" border="0" cellspacing="1" cellpadding="0">';
echo '<tr><td><img src="'.$urlSite.'/annuaire/template/'.$themeAnnuaire.'/imgs/ico_site.gif" border="0"> <a href="'.$row['url'].'" target="_blank"><strong><span class="titre_site_annuaire">'.stripslashes($titre).'</span></strong></a></td></tr>';
echo '<tr><td>'.stripslashes($description).'</td></tr>';
echo '<tr><td><span class="url_poid__site_annuaire">'.$url.' - Poids : '.$row['poid'].' Ko</span></td></tr>';
echo '</table><br>';
}
mysql_free_result($result);
// Affichages des resultats pages par pages
$nombre = ceil($nrows/$limit);
echo "<center>";
if(isset($_GET['key'])) { $parPages = "".$_GET['key'].""; }elseif(isset($_POST['key'])){ $parPages = "".$_POST['key'].""; }
if($debut > 0)
{
echo "<a href=?debut=".($debut-$debut)."&limit=".($limit-$debut)."&key=".$parPages."&log=".$_GET['log'].">Précédents | </a> ";
}
if ($nombre > 1)
{
for($i=1; $i<=$nombre; $i++)
{
echo "<a href=?debut=".(($i-1)*$limit)."&limit=".($limit+$limit)."&key=".$parPages."&log=".$_GET['log']."> ".$i." </a> ";
}
}
if(($debut+$limit) < $nrows)
{
echo "<a href=?debut=".($debut+$limit)."&limit=".($limit+$limit)."&key=".$parPages."&log=".$_GET['log']."> | Suivants </a>";
}
echo "</center>";
}
}
elseif(empty($_POST['key']) OR empty($_GET['key']))
{
// Si aucun mots clefs n'est saisi
header("Location: ".$_SERVER['HTTP_REFERER']."");
}
echo '</td></tr></table></td>';
echo '<td width="26%" valign="top"></td></tr>';
echo '</table></td></tr></table></td></tr></table>';
?>
Ce moteur fonctionne très bien mais quand le meme site est inscrit dans plusieurs categories celui ci sort autant de fois qu'il est inscrit lors d'une requete le concernant ...
merci de tenter de m'aider...