Probleme de requete mysql en php

Nataniel -  
 Nataniel -
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. JessayeDeTrouver Messages postés 300 Statut Membre 47
     
    il manque une ligne de code dans ta requète c'est la ligne mysql_result qui manque.
    0
  2. rescue Messages postés 1047 Statut Contributeur 136
     
    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 ";

    @+
    0
  3. le père
     
    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) ) 
    
    0
  4. le père
     
    Autre erreur : il ne faut pas de \ devant les ' dans une chaine entre " "
    $requete = "SELECT * FROM `catalogue` WHERE `navi` = '%$motNavi%' LIMIT 0, 30 ";
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Nataniel
     
    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 :'()
    0
  7. le père
     
    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 ";
    0
  8. graffx Messages postés 120 Date d'inscription   Statut Contributeur Dernière intervention   2 031
     
    exact, une requete pour une recherche il faut utiliser LIKE
    0
  9. Nataniel
     
    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 :)
    0