Page 1 sur 1

Bug affichage résultat suite à recherche par mot sur 2 tabl

Posté : 21 mars 2006, 23:09
par Stegue
Bonjour,
La recherche par mot clé dans la table citation fonctionne.
la ou les citations contenants ce mot clé apparaissent bien dans ma page résultat mais j'aimerai afficher, en plus, le nom et prénom de l'auteur de cette citation. mais là, ça ne veut pas ?
<?
$Host="mysql4.8"; 
$Login="xxxxxxxx";
$Password="xxxxxxx";
$Base="citation";
mysql_connect($Host,$Login,$Password) or die("<p align='justify' class='bodytext'><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><strong>Connexion Au Serveur Impossible : Le serveur est surchargé veuillez revenir plus tard.</strong></font></p>");
mysql_select_db($Base);
$Recherche = $_POST['Recherche'];
if(isset($_POST["Recherche"]))
{
   $Recherche = $_POST["Recherche"];

}
if($Recherche=="")
{
echo "Vous devez taper une recherche.";
exit;
}
$requete = mysql_query("SELECT citateurs_celebres.nom, citateurs_celebres.prenom, citations_celebres.citation FROM citateurs_celebres LEFT JOIN citations_celebres ON citateurs_celebres.id = citations_celebres.numcitateur WHERE citation LIKE '%$Recherche%'");
if(mysql_num_rows($requete) == 0)
echo 'Aucun résultas ne correspond aux termes de votre recherche.';

while($B = mysql_fetch_array($requete))
 echo "$B[citation]<br />";
 echo "$B[nom]";
 echo "$B[prenom]";
mysql_close();
?>

Posté : 21 mars 2006, 23:24
par Stegue
En faisant ça, ça marche mais si plusieurs citations sont trouvées avec le mot clé, ça m'affiche bien la 1ere citation suivi du nom de son auteur. mais, ensuite que les noms d'auteurs, SANS leurs citations.
$i = true;
while($B = mysql_fetch_array($requete))
 {
      if($i)
      {
         echo $B['citation']."<br />";
      }
	  echo $B['prenom']." ";
      echo $B['nom']."<br />";
	  
      $i = false;
   }

Posté : 22 mars 2006, 00:39
par Truc
Parceque tu demandes qu'un seul affichage :wink:
while($B = mysql_fetch_array($requete))
{
   if($i)
   {
      echo $B['prenom']." ";
      echo $B['nom']."<br />";
   }
   echo $B['citation']."<br />";
   $i = false;
}

Posté : 22 mars 2006, 08:29
par Stegue
En enlevant:
$i = true; 
Je n'ai plus que les noms et prenoms à s'afficher:
while($B = mysql_fetch_array($requete))
{
      if($i)
      {
         echo $B['citation']."<br />";
      }
      echo $B['prenom']." ";
      echo $B['nom']."<br />";
      
      $i = false;
   }

Posté : 22 mars 2006, 08:35
par Stegue
Désolé, j'avais mal compris. Comme ça, ça marche mieux. :wink:
while($B = mysql_fetch_array($requete))
{
      $i = true;
      {
         echo $B['citation']."<br />";
      }
      echo $B['prenom']." ";
      echo $B['nom']."<br />";
      
      $i = false;
   }
Mais j'ai un autre soucis avec cette recherche. J'ai fais le choix d'un moteur de recherche simple, mais y-t-il un astuce pour que le visiteur ne soit pas obligé de remplacer l'espace entre 2 mots à rechercher par un % ?

Posté : 22 mars 2006, 22:10
par Stegue
J'avance petit à petit. Maintenant la recherche gère les espaces et le multi-mots.
Mais, y'a un truc bizarre. Je n'ai pas le même résultat en fonction de l'ordre des mots recherchés.
$Recherche = $_POST['Recherche'];

// séparer les mots clés
$tab = explode(" ",$Recherche);

if(isset($_POST["Recherche"]))
{
   $Recherche = $_POST["Recherche"];

}
if($Recherche=="")
{
echo "Vous devez taper une recherche.";
exit;
}
for($i=0;$i<count($tab);$i++){ 
$requete = mysql_query("SELECT citateurs_celebres.nom, citateurs_celebres.prenom, citations_celebres.citation FROM citateurs_celebres LEFT JOIN citations_celebres ON citateurs_celebres.id = citations_celebres.numcitateur WHERE citation LIKE '%$tab[$i]%'");
if($i!=count($tab)-1) $requete .= " AND ";
}