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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Bug affichage résultat suite à recherche par mot sur 2 tabl

par Stegue » 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 ";
}

par Stegue » 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 % ?

par Stegue » 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;
   }

par Truc » 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;
}

par Stegue » 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;
   }

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

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