Page 1 sur 1

Erreur de syntax dans une requete sql

Posté : 30 juil. 2007, 17:57
par Invité
Bonjours a tous,

voila mon bon de code :
function view_com($mod,$nid)
{
	include('modules/news/index.php');
	lire($nid);
	
	$sql = mysql_query("SELECT * FROM comment WHERE nid = " . $nid . " AND mod = ".$mod."   ") or die(mysql_error()) ;
	while(list($id,$mod,$nid,$pseudo,$mail,$message,$timestamp) = mysql_fetch_array($sql))
		{
			$pseudo = stripslashes($pseudo);
			$message = stripslashes($message);
			$date = date('d/m/Y à H\hi', $timestamp);
			
			echo "<table style=\"width:610px\">\n"
						."<tr><hr>\n"
							."<td><b>".$pseudo."</b> <span style=\"font-size:9px\"> Posté le ".$date."</span></td>\n"
						."</tr>\n"
						
						."<tr>\n"
							."<td><span style=\"font-size:14px\"> " .$message. "</span></td>\n"
						."</tr>	\n"
					."</table>\n"
					."<hr>\n";
				
		}
}
Et cela m'indique une erreur :
Erreur de syntaxe près de '= news' à la ligne 1

Merci de votre aide car la je suis bloqué

Posté : 30 juil. 2007, 17:59
par alex29260
je ne m'étais pas logué

Posté : 30 juil. 2007, 18:00
par Ryle
Je suppose que puisque "news" n'apparait pas dans ta requête, cela doit être contenu par l'une de tes variable, et comme toute chaine de caractère en SQL, elle devrait être délimitée par... par... aller, à toi de trouver ;)

Prend l'habitude de mettre tes requêtes dans des variables et de les afficher lorsqu'elles ne fonctionne pas, l'erreur te sautera beaucoup plus facilement aux yeux :)

Posté : 30 juil. 2007, 18:27
par alex29260
merci de la rapidité de ta reponse
	$sql = "SELECT * FROM comment WHERE nid = ".$nid." AND mod = '".$mod."' ";
	$sql2 = mysql_query($sql) or die($sql) ;
	while(list($id,$mod,$nid,$pseudo,$mail,$message,$timestamp) = mysql_fetch_array($sql2))
J'ai ajouter des guillemets simples mais le problème persiste.
La requete qui s'affiche est celle la :

SELECT * FROM comment WHERE nid = 9 AND mod = 'news'

Posté : 30 juil. 2007, 18:33
par Ryle
Conserve le mysql_error() dans le or die() (ce qui ne t'empêche pas d'afficher également la requête sql :)), cela te permet de connaitre la nature du problème, car à priori, là c'est plus un problème de syntaxe :)

Tu as bien les colonnes nommées "nid" de type numérique (int, tinyint, float..) et "mod" de type chaine (char, varchar, text..) dans ta table comment ?

Posté : 30 juil. 2007, 18:37
par alex29260
le 'nid' est de type int(11) et le 'mod' est de type text.

Comment on fait pour mettre la requette et l'erreur en meme temps dans le die() ?

Merci encore

Posté : 30 juil. 2007, 18:41
par Sékiltoyai
Bah la fonction die(), tu lui passes une chaine de caractères, donc, au lieu de lui donner le résultat de mysql_error(), tu lui donnes la concaténation de ta requète et de mysql_error(), par exemple :
die('Erreur : ' . mysql_error() . "\n" . 'Requète : ' . $ta_requete);

Posté : 30 juil. 2007, 18:48
par alex29260
Merci Sékiltoyai, je n'avais pas mis les points.

Posté : 30 juil. 2007, 19:06
par alex29260
information supplementaire :

les variables transites à travers les liens de cette facon :
http://127.0.0.1:8080/alex29260/index.p ... news&nid=9

Cela ne pose pas de probleme?

Posté : 30 juil. 2007, 21:01
par alex29260
J'ai resolu mon probleme en remplacant mod par module dans la requete.

Merci quand meme pour votre aide et la rapidité de vos reponses.

EDIT : n'étant pas logué quand j'ai créé le post je ne peux pas le renomer pour mettre en resolu. Si un admin pouvait le faire ... merci

Posté : 30 juil. 2007, 22:05
par Truc
EDIT : n'étant pas logué quand j'ai créé le post je ne peux pas le renomer pour mettre en resolu. Si un admin pouvait le faire ... merci
Un bouton est prévu pour ça tu ne dois pas l'éditer. Cependant tu dois tout de même être inscrit pour le faire alors incris toi :wink:

Posté : 30 juil. 2007, 22:58
par alex29260

Cependant tu dois tout de même être inscrit pour le faire alors incris toi :wink:
Mais je suis inscris seulement je n'étais pas connecté quand j'ai créé le topic.

Posté : 30 juil. 2007, 23:13
par Truc
Mais je suis inscris seulement je n'étais pas connecté quand j'ai créé le topic.
Ha comment ça se fait alors que je n'ai pas reçu ton chèque ? :twisted:

:wink: