développer un moteur de recherche

Nouveau WRInaute
salut,
je veux développer un moteur de recherche pour mon site dzaffaire.com
le problème je sais pas comment faire pour afficher les résultats dans des page (ex: <<ava 1-2-3......7-8 suiv>> ) mai en récupérons les résultats de 2 base de donné regarder dans le code ---la partie ou je sais pas comment faire--
voila le code que je viens de placer :
Code:
<?php
include 'connection.php';
$name=htmlentities($_POST['name']);

// récupére chaque mot
$like = '';
$names = explode(' ', $name);
foreach ( $names as $value ) {
     $like .= ( !empty($like) ) ? ' OR ' : '';
     $like .= "recherche LIKE '%$value %'";

     }
     
     
     
   // On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage =1; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour1 = mysql_query("SELECT COUNT(*) AS nb_messages1 FROM service WHERE $like ");
$retour2 = mysql_query("SELECT COUNT(*) AS nb_messages2 FROM autre WHERE $like ");
$donnees1 = mysql_fetch_array($retour1);
$donnees2 = mysql_fetch_array($retour2);
$totalDesMessages1 = $donnees1['nb_messages1'];
$totalDesMessages2 = $donnees2['nb_messages2'];
$totalDesMessages =$totalDesMessages1+$totalDesMessages2;
echo $totalDesMessages;
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="recherche.php?page=' . $i . '">' . $i . '</a> ';
}
  
     if (isset($_GET['page']))
{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}
 
-----------------------------------la partie ou je sai pa comment faire ---------------------------------
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
     
     $sql =mysql_query("SELECT service FROM service WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
    {
echo '-'.$data['service'].'<br>';
}
$sql =mysql_query("SELECT objet FROM autre WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
    {
echo '*'.$data['objet'].'<br>';
}
?>

merci d'avance
 
WRInaute passionné
Re: develloper un moteur de recherche

Well well well... ton problème viens du fait que tu essayes de récupérer des données de 2 tables (ou bases) différentes.

La première question que tu dois te poser est "Comment organiser ces résultats...?"
- Sont-ils homogènes entre les 2 bases?
- La pertinence des résultats est elle intéressante?

Ensuite, tu pourras ensuite décider d'afficher tes résultats sur 2 colonnes différentes ou alors les un à la suite des autres...

Si la pertinence des résultats n'est pas importante:
while($data = mysql_fetch_assoc($sql))
{
echo '-'.$data['service'].'<br>';
// au lieu de faire ça, tu charges les données dans une array: $array_donnees[]=$data['service'];
}
$sql =mysql_query("SELECT objet FROM autre WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
{
echo '*'.$data['objet'].'<br>';
// au lieu de faire ça, tu continues à charger tes données dans une array: $array_donnees[]=$data['objet'];
}

=> Bien sur cela suppose que tes données sont homogènes entre les 2 bases...
=> Ensuite, tu fait une boucle while sur l'array que tu as chargée

Peux tu donner un exemple des données que tu veux récupérer...?
 
Nouveau WRInaute
Re: develloper un moteur de recherche

Anto1982 a dit:
Well well well... ton problème viens du fait que tu essayes de récupérer des données de 2 tables (ou bases) différentes.

La première question que tu dois te poser est "Comment organiser ces résultats...?"
- Sont-ils homogènes entre les 2 bases?
- La pertinence des résultats est elle intéressante?

Ensuite, tu pourras ensuite décider d'afficher tes résultats sur 2 colonnes différentes ou alors les un à la suite des autres...

Si la pertinence des résultats n'est pas importante:
while($data = mysql_fetch_assoc($sql))
{
echo '-'.$data['service'].'<br>';
// au lieu de faire ça, tu charges les données dans une array: $array_donnees[]=$data['service'];
}
$sql =mysql_query("SELECT objet FROM autre WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
{
echo '*'.$data['objet'].'<br>';
// au lieu de faire ça, tu continues à charger tes données dans une array: $array_donnees[]=$data['objet'];
}

=> Bien sur cela suppose que tes données sont homogènes entre les 2 bases...
=> Ensuite, tu fait une boucle while sur l'array que tu as chargée

Peux tu donner un exemple des données que tu veux récupérer...?

voila un exemple a koi l'air les pages:
http://www.dzaffaire.com/informatique.php
http://www.dzaffaire.com/telephone.php

mais en récupérons de 2 base de donné celle informatique et telephone quand il cherche le mot par exemple vente (pou une Recherche génerale).

pour la pertinence des résultats n'est pas importante et mes 2 base de donné ne sont pas homogène.
merci
 
WRInaute passionné
Dans ce cas, je ne vois qu'une seule solution...

Tu fait comme décris plus haut et tu utilises une array un peu plus grande qui va contenir le plus d'info possible:

exemple:

dans la BDD téléphone tu as les tables a,b,c,d,e,f,g
dans la BDD informatique tu as les tables a,c,f,g

Quand tu fait l'extraction des données, tu utilises une array qui va couvrir les tables a,b,c,d,e,f,g (les champs b,d,e seront vides pour les données provenant de la BDD "informatique"...

Sinon, retravaille la structure de ta base... C'est ce qui serait le mieux. Ca te permettra plus tard d'évoluer plus facilement, de pouvoir trier tes résultats par pertinence, etc...
 
Discussions similaires
Haut