JeuWeb - Crée ton jeu par navigateur
[Résolu] Erreur de syntaxe SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Erreur de syntaxe SQL (/showthread.php?tid=2077)

Pages : 1 2


[Résolu] Erreur de syntaxe SQL - TiliN - 28-04-2008

Bonjour, ça fait un moment que je ne vous ai pas rendu visite ceci pour le fait que je ne codais plus par manque de temps et d'envie je dois vous avouer Tongue

Bref j'ai un petit problème de synthaxe sql :

Citation :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'font-size: 10px;">Edité le 28-04-08 à 20:46:47 par test.
" WHERE id = " ' at line 1

voici le message en question que j'affiche par un echo :
Citation :Non programmée pour le moment xD

développement en local jusqu'à la sortie de la v0.1b

héhé


edit


Edité le 28-04-08 à 20:46:47 par test.

et le code incriminée :

Code PHP :
<?php 
$time
=time();
$suplement = '<div style = "font-size: 10px;">Edité le '.date('d-m-y \à H\:i\:s\ ', $time).' par '.$_SESSION['pseudo'].'.</div>';
echo
$suplement;
$message= ''.$_POST['new'].'<br /><br /><br />'.$suplement.'';
$message = nl2br($message);
echo
'<br />'.$message.'';
$sujet = mysql_real_escape_string($_POST['sujet']);
query('UPDATE news SET objet = "'.$sujet.'", message = "'.$message.'" WHERE id = "'.$_POST['id'].'" LIMIT 1') or die (mysql_error());
echo
'News corrigée.<br />';

echo
$message ;

voilà tous les echo ne sont là que pour voir si il n'y avait pas d'erreur dans le message lui même, mais voilà, enfin bon je suis sûre que c'est une erreur toute bête et je m'en remet à vos connaissance d'expert Smile

merci d'avance


RE: Erreur de synthaxe sql - Ruz - 28-04-2008

le " du style sur le div... je parierais ^^

Citation :$time=time();
$suplement = '<div style = "font-size: 10px;">Edité le '.date('d-m-y \à H\:i\Confused\ ', $time).' par '.$_SESSION['pseudo'].'.</div>';
echo $suplement;
$message= ''.$_POST['new'].'<br /><br /><br />'.$suplement.'';
$message = nl2br($message);
echo '<br />'.$message.'';
$sujet = mysql_real_escape_string($_POST['sujet']);
query('UPDATE news SET objet = \''.$sujet.'\', message = \''.$message.'\' WHERE id = \''.$_POST['id'].'\' LIMIT 1') or die (mysql_error());
echo 'News corrigée.<br />';

echo $message ;

ca irait pas mieux?

remarque perso: les balises HTML n'ont rien à faire dans ta base de données.
1. ca prend de la place pour rien
2. c'est source d'erreurs
=> prévois deux champs supplémentaires pour ces infos (genre edition_pseudo et edition_time) si t'y tiens vraiment, ou n'importe quel autre système...

et supplement prends 2 "p" ^^


RE: Erreur de synthaxe sql - TiliN - 28-04-2008

je prend bonne note de tes remarques Smile

cependant snouf :
Citation :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'à la sortie de la v0.1b

héhé


edit
<' at line 1



RE: Erreur de synthaxe sql - TiliN - 28-04-2008

et ce que je ne comprend pas c'est que si je modifie

Code PHP :
<?php 
$message
= nl2br($message);
par
Code PHP :
<?php 
$message
= mysql_real_escape_string(nl2br($message));

là plus de message d'erreur, il m'est inscrit news corrigée mais en réalité, rien n'est changé :/
en effet les modif n'ont pas été prises en compte :/


RE: Erreur de synthaxe sql - TiliN - 28-04-2008




RE: Erreur de synthaxe sql - Ruz - 28-04-2008

Citation :$time=time();
$upmessage= ''.$_POST['new'].'<br /><br /><br /><div style = "font-size: 10px;">Edité le '.date('d-m-y \à H\:i\Confused\ ', $time).' par '.$_SESSION['pseudo'].'.</div>';
$upmessage = nl2br($upmessage);
echo $upmessage ;
$sujet = $_POST['sujet'];
$queryrelatenews = 'UPDATE news SET objet = "'.$sujet.'", message = \''.$upmessage.'\' WHERE id = "'.$_POST['id'].'" LIMIT 1';
query($queryrelatenews) or die (mysql_error());
echo 'News corrigée.<br /><br /><br />';

je le fais comme si c'était pour moi:

$time=time();
$upmessage= $_POST['new'].'<br /><br /><br /><div style = "font-size: 10px;">Edité le '.date('d-m-y \à H\:i\Confused\ ', $time).' par '.$_SESSION['pseudo'].'.</div>';
echo nl2br($upmessage) ;
$sujet = $_POST['sujet'];
$queryrelatenews = 'UPDATE `news` SET `objet` = \''.addslashes($sujet).'\', `message` = \''.addslashes($upmessage).'\' WHERE `id` = \''.$_POST['id'].'\' LIMIT 1';
query($queryrelatenews) or die ('<p class="error">[erreur] : '.mysql_error().'<br />Requete : '.$queryrelatenews.'</p>');
echo '<p>News corrigée.</p>';

essaye avec ca, juste pour voir ^^


RE: Erreur de synthaxe sql - TiliN - 28-04-2008

idem, rien n'est modifié .... :/
je ne comprend pas

edit j'ajoute la structure de la table :
Code PHP :
<?php 
--
--
Structure de la table `news`
--

CREATE TABLE `news` (
`
id` int(11) NOT NULL auto_increment,
`
pseudoe` varchar(20) NOT NULL default '',
`
ide` int(11) NOT NULL default '0',
`
objet` text NOT NULL,
`
message` text NOT NULL,
`
time` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

--
--
Contenu de la table `news`
--

INSERT INTO `news` (`id`, `pseudoe`, `ide`, `objet`, `message`, `time`) VALUES
(17, 'test', 1, 'OUVERTURE !!!', 'Ouverture du jeu non prévu, cependant, il sera développé et testé complètement en local.<br />\r\nSur ce ....', 1209412190);



RE: Erreur de synthaxe sql - Ruz - 28-04-2008

rajoute un peu ca à la fin:

echo '<p>'.$queryrelatenews.'</p>';

qu'on voit la requete ^^

ou mieux:

Citation :$time=time();
$upmessage= $_POST['new'].'<br /><br /><br /><div style = "font-size: 10px;">Edité le '.date('d-m-y \à H\:i\Confused\ ', $time).' par '.$_SESSION['pseudo'].'.</div>';
echo nl2br($upmessage) ;
$sujet = $_POST['sujet'];
$queryrelatenews = 'UPDATE `news` SET `objet` = \''.addslashes($sujet).'\', `message` = \''.addslashes($upmessage).'\' WHERE `id` = \''.$_POST['id'].'\' LIMIT 1';
query($queryrelatenews) or die ('<p class="error">[erreur] : '.mysql_error().'<br />Requete : '.$queryrelatenews.'</p>');
if(mysql_affected_rows()==1){echo '<p>News corrigée.</p>';}
else{echo '<p>'.$queryrelatenews.'</p>'; }



RE: Erreur de synthaxe sql - Belsion - 29-04-2008

Quand je vois les erreurs et ton code, il y a plusieurs choses qui me choquent:

1° faire un échappement des apostrophes et guillemets à la fois dans ton objet et dans ton message (cf les addslashes de Ruz, même si je préfères htmlspecialchars(), mais c'est parce que je ne stocke pas de code html)

2° dans ton premier message d'erreur, il y avait " WHERE id='' ". Est-ce que dans $_POST['id'] tu renvoies bien l'id de ta news à modifié? A priori non.


RE: Erreur de synthaxe sql - Ruz - 29-04-2008

le $_POST["id"] existe bien (input hidden), maintenant, est-ce le bon ID???

sinon, l'échappement des apostrophes est tout à fait l'inverse de mon habitude, d'où mes tatonnements ^^

M'enfin, si il me poste la requete, on verra deja bcp mieux ^^