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

Eléphant du PHP | 113 Messages

21 mars 2006, 23:09

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();
?>

Eléphant du PHP | 113 Messages

21 mars 2006, 23:24

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;
   }

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 mars 2006, 00:39

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;
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 113 Messages

22 mars 2006, 08:29

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;
   }

Eléphant du PHP | 113 Messages

22 mars 2006, 08:35

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 % ?

Eléphant du PHP | 113 Messages

22 mars 2006, 22:10

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 ";
}