Php Moteur de recherche : classer les données de résultats

Fermé
loutry - 12 août 2014 à 13:51
 loutry - 13 août 2014 à 08:11
Bonjour à tous,
je me permets de revenir sur le forum pour solliciter votre aide.
J'ai cherché sur la toile une fonction Moteur de recherche que j'ai trouvé et qui fonctionne pas mal.
aujourd'hui, j'aimerais la compléter car elle manque de pertinence.
pour se faire, j'aimerai classer mes données.

Pour le moment, j'ai dans mon moteur 2 récupérations de données dans la même table t_pkmn : le nom et le type.


function resultat_recherche($search)
{
$ou="";
$search = preg_split('/[\s]+/',$search);

$total_resultat = count($search);
foreach($search as$key=>$searches)
{
$ou .= "nomfr LIKE '%$searches%' OR type1 LIKE '%$searches%'";
if($key !=($total_resultat-1))
{
$ou .= "AND";
}
}
$query = mysql_query("SELECT * FROM t_pkmn WHERE $ou ORDER BY id_pkmn ASC");
$rows = mysql_num_rows($query);
if($rows)
{ ?>

[...]
// ici pas de souci (je pense)
<?php
while($row = mysql_fetch_assoc($query))
{
echo "<tr>";
echo "<td>#".$row['id_pkmn']."</td>";

} else echo "Pas de résultat pour votre recherche ".$searches;

}
?>


Et ici le code de ma feuille de résultat

<?php
if(isset($_POST['submit']))
{
$search = mysql_real_escape_string(htmlentities(trim($_POST['search'])));
if(empty($search))
{
$error[] = "<img src='images/structure/valid_wrong.png' alt=''>";
}
if(empty($error))
{
echo "<fieldset>";
resultat_recherche($search);
echo "</fieldset>";
}
else
{

foreach($error as $errors){
echo $errors."<br />";
}
}
}
?>

Ma demande serait :
Peut-on dans ma feuille de résultat mettre en premier les noms et dans une seconde partie les types ?
Sachant par exemple que le mot feu peut être compris soit dans le nom ou dans le type.
je ne sais pas si je suis assez clair :s


Merci par avance pour votre aide.
Bon aprem
A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 12/08/2014 à 14:57
Bonjour,

Le plus simple serait d'appeler ta recherche en deux fois, en modifiant ses paramètres d'appel :
function resultat_recherche($search)
// [...]
  $ou .= "nomfr LIKE '%$searches%' OR type1 LIKE '%$searches%'";
// [...]

   echo "<fieldset>";
    resultat_recherche($search);
   echo "</fieldset>"; 

Devient :
function resultat_recherche($search, $column)
// [...]
  $ou .= " $column LIKE '%$searches%' ";
// [...]

   echo "<fieldset>";
    resultat_recherche($search, 'nomfr');
   echo "</fieldset>";
   echo "<fieldset>";
    resultat_recherche($search, 'type1');
   echo "</fieldset>"; 


Xavier
1
Ecoute, c'est parfait.
c'est bien ce que je cherchais.
Je te remercie Xavier :)
0