Petit problème avec WHERE

Petit problème avec WHERE - PHP - Programmation

Marsh Posté le 07-10-2005 à 19:07:39    

Salut!
 
J'essay d'afficher des champs avec WHERE mais sa me dit :
 

Citation :

Unknown table 'news_numero_3_avec_le_sujet_test' in where clause


 
Voila mon code :
 

Code :
  1. <?php
  2. include('config.php');
  3. $nom_de_page = explode('/',$_SERVER['REQUEST_URI']);
  4. $nom_de_page = $nom_de_page[1];
  5. echo $nom_de_page;
  6. $q = mysql_query('SELECT id,pseudo,message FROM messages WHERE id_page='.$nom_de_page.' ORDER BY id DESC') or die(mysql_error());
  7. while($r = mysql_fetch_array($q))
  8. {
  9. echo $r['pseudo'].'<br />';
  10. }
  11. ?>


 
Et l'echo m'affiche :
 
news_numero_3_avec_le_sujet_test.html mais le WHERE ne prend pas en compte le .html :-(
 
Auriez vous la solution ? :lol:


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 07-10-2005 à 19:07:39   

Reply

Marsh Posté le 07-10-2005 à 19:15:03    

1. Pas la bonne cat
2. Relire la doc de mysql, en particulier la partie sur "comment on écrit une chaine de caractères sous mysql" et celle sur l'utilisation du point dans une requête, c'est instructif :D

Reply

Marsh Posté le 07-10-2005 à 19:16:24    

naceroth a écrit :

1. Pas la bonne cat


 
bah la je ne comprend pas c'est bien du PHP non ? :(
 
edit :
mysql_query('SELECT id,pseudo,message FROM messages WHERE id_page="'.$nom_de_page.'" ORDER BY id DESC') or die(mysql_error());
 
Les champs de type string doivent être mis entre quotes wink
... sinon là mySQL interprétait comme "si l'id_page vaut le champs html de la table news_numero_3_avec_le_sujet_test"
 
hihi


Message édité par Orission le 07-10-2005 à 19:22:03

---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 07-10-2005 à 19:23:46    

Where est autant du PHP que moi pape. Tu aurais exactement le même problème avec ta requête en Java, C ou autre, elle est mal écrite et c'est mysql qui la refuse :)

Reply

Marsh Posté le 07-10-2005 à 23:13:51    

Il est peut-être possible de faire de la façon suivante (si je ne me suis pas trop planté).
En décomposant un chouilla pour être plus claire
 

Code :
  1. // connection à La base de données MySql
  2. // remplacer $MySQL_Host| $MySQL_User | $MySQL_Passw | $MySQL_Db avec les valeurs apropriées
  3. mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw" ) or die("Impossible de se connecter" );
  4. mysql_selectdb("$MySQL_Db" ) or die("cette base de donnees n'existe pas" );
  5. // On construit la requête
  6. $sql= "SELECT id,pseudo,message FROM messages WHERE id_page='$nom_de_page' ORDER BY id DESC";
  7. // On envoie la requête
  8. $q=mysql_query($sql);

Reply

Marsh Posté le 08-10-2005 à 10:51:10    

Il manque sans doute les apostrophes autour du nom de la page, parce qu'il s'agit peut-être d'une chaine de caractères et non pas d'un nombre (souvent les champs ID sont des nombres, mais les noms de page sont souvent des chaines de caractères). L'ennui c'est que les apostrophes sont utilisées pour entourer la commande, mais une solution, dans ce cas, consiste à remplacer les apostrophes de PHP par des guillemets (donc c'est en partie une question PHP, et pas seulement une question MySql), ce qui donne :

$q = mysql_query("SELECT id,pseudo,message FROM messages WHERE id_page='".$nom_de_page."' ORDER BY id DESC" ) or die(mysql_error());


Edit : Excuse-moi -TrAsHeR-, je n'avais pas vu que tu avais déjà trouvé la bonne réponse.


Message édité par olivthill le 08-10-2005 à 10:55:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed