Probleme de requete mysql en php

Bonjour,
j'ai dans l'idee de creer un traducteur Na'vi <-> Francais, mais lorsque je lance la recherche (par une methode POST), rien ne s'affiche, ni erreur ni resultat de recherche :/ voici mon code

<?php
//recuperation des variables POST
$motNavi = $_POST['motnavi'];

//connection à la BDD
mysql_connect("SSSSSSSSS", "LOGIN", "PASSWORD") /*effacer*/or die ("echec connection");
mysql_select_db("NAMEBDD") /*effacer*/or die ("marche po");
//suite du programme

//Execution de la recherche
$recherche = "SELECT * FROM `catalogue` WHERE `navi` = \'%$motNavi%\' LIMIT 0, 30 "or die(mysql_error());

while ($donnees = mysql_fetch_array($recherche) ) 
{
	?>
	<font color="#000000"><?php echo $motNavi ; ?> ce traduit par <?php echo $donnees['francais']; ?></font><br />
	<?php
}

mysql_close();

?>


Voila et lorsque je dégage la boucle (juste le WHILE et les {}) j'obtiens le résultat suivant :

"kaltxì (donc ma variable $motNavi passe bien)se traduit par (et là cela n' affiche rien donc $donnees['francais'] ne retourne rien, meme pas d'erreur)"
Configuration: Windows XP
Firefox 3.5.7

8 réponses

  1. il manque une ligne de code dans ta requète c'est la ligne mysql_result qui manque.
    1. Contributeur
      Bonjour,

      J'ai un doute sur la syntaxe :
      $recherche = "SELECT * FROM `catalogue` WHERE `navi` = \'%$motNavi%\' LIMIT 0, 30 "or die(mysql_error());

      essai ça à la place histoire de vérifier :
      $recherche = "SELECT * FROM catalogue WHERE navi = $motNavi LIMIT 0, 30 ";

      @+
      1. Bonjour

        Il te manque le mysql_query :
        $requete = "SELECT * FROM `catalogue` WHERE `navi` = \'%$motNavi%\' LIMIT 0, 30 ";
        $recherche = mysql_query($requete) or die(mysql_error());
        while ($donnees = mysql_fetch_array($recherche) ) 
        
        1. Autre erreur : il ne faut pas de \ devant les ' dans une chaine entre " "
          $requete = "SELECT * FROM `catalogue` WHERE `navi` = '%$motNavi%' LIMIT 0, 30 ";
          1. J'ai essayer toute vos solution mais c'est le meme delire :'( a croire que ma base est vide lol (pourtant je vous assure que non et que toute mes variable sont juste :'()
            1. dans ton WHERE, il faut utiliser LIKE pour la recherche, car = cherche une égalité exacte
              $requete = "SELECT * FROM `catalogue` WHERE `navi` LIKE '%$motNavi%' LIMIT 0, 30 ";
              1. Contributeur
                exact, une requete pour une recherche il faut utiliser LIKE
                1. Merci beaucoup à vous tous :) problème résolut
                  J'avais aussi une autre erreur que vous ne pouviez pas voir ^^ : "LIMIT 0, 30" c'est bien...si le mot rechercher est dans les 30 premier résultat ...
                  Quoi qu'il en soi merci bcp encore :)