"c'est" ce verbe avec l'accent ne fonctionne pas d

Eléphant du PHP | 271 Messages

03 déc. 2006, 19:32

Bonjour à tous,

Lorsque je tape un message dans mon formulaire et que j'utilise le verbe "c'est" j'ai le message d'erreur suivant :

Erreur SQL !INSERT INTO table_actus (id, titre, article, dater) VALUES('', '1ère journée','Il y a de la neige est le temps est splendide. Soleil, neige et farniente. Les vacances se passent très bien et les enfants sont ravis. Ce soir, c'est raclette au restaurant.','mardi 9 janvier')
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 'est raclette au restaurant.','mardi 9 janvier')' at line 2

Comment dois je faire pour que cela n'arive pas ?

Ci - dessous le fichier qui traite le formulaire .
<?php
 require('config.php'); 
/* on récupére les formulaire */
if(isset ($_POST['titre']))  $titre=$_POST['titre'];
else       $titre=""; 
 
if(isset ($_POST['article']))  $article=$_POST['article'];
else       $article="";
 
if(isset ($_POST['date']))  $date=$_POST['date'];
else       $date="";
 
 /* on vérifie s'ils sont vide */
 {
if (empty($titre) OR empty($article) OR empty($date))
 {
 echo ' tous les champs doivent être renseignés ';
 }
else 
 {/* connection */
mysql_connect($localhost,$login,$mot) OR die("Erreur !<br/ >" .mysql_error());  
mysql_select_db($dbName) OR die("Erreur !<br />" .mysql_error()); 

/* on insére dans la table, puis les champs les variables */
$sql = "INSERT INTO table_actus (id, titre, article, dater)
VALUES('', '$titre','$article','$date')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
{
echo "<p align=\"center\"> <a href=\"javascript:history.go(-1);\">Entrez un nouvel article</a></p>";
}
mysql_close();// on ferme la connexion
}
}
?>
Merci d'avance de m'aider.
Patience et obstination sont des qualités !

Invité
Invité n'ayant pas de compte PHPfrance

03 déc. 2006, 19:35

splendide. Soleil, neige et farniente. Les vacances se passent très bien et les enfants sont ravis. Ce soir, c\'est raclette au

ViPHP
ViPHP | 3607 Messages

03 déc. 2006, 19:38

Euh... essaye d'utiliser un autre verbe, du style:
"ce soir il y a de la raclette au restaurant"


:langue:
Sinon plus sérieusement, tu dois "échapper" tes apostrophes, qu'elle viennent du verbe être ou d'ailleurs...
Pour ce faire, tu peux utiliser addslashes, ou mieux:
mysql_real_escape_string, qui protègera également les commentaires, et d'autres trucs que je ne connais pas... mais tout cela en fonction de base de donnée, donc toujours pile juste :wink:

ViPHP
ViPHP | 1961 Messages

03 déc. 2006, 19:46

Bonsoir,

Le caractère apostrophe est un caractère "délimiteur de chaine" tout comme le guillemet.

Pour pouvoir les insérer dans une requête il faut les "protéger".
Tu as plusieurs façons de faire :

- Dobler le caractère 'c''est un message';
- Utiliser l'antislash 'c\'est un message';
- Changer le délimiteur "c'est un message";
- Utiliser les fonctions fournies par PHP comme
- mysql_real_escape_string();
- addslashes();
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1776 Messages

03 déc. 2006, 20:47

+1 à mysql_real_escape_string() , à mettre sur chaque variable php qui correspond avec la requête sql :wink:

Eléphant du PHP | 271 Messages

04 déc. 2006, 00:19

euh... tout compte fait je vais prendre une fondue...


Merci à tous de l'aide.
Patience et obstination sont des qualités !

ViPHP
ViPHP | 3607 Messages

04 déc. 2006, 00:49

ben eux pourquoi? t'aime pas la raclette...?
faut persévérer!!!
montre nous ce que t'a essayer et dis nous ce qui ne marhce pas!!

ViPHP
ViPHP | 1961 Messages

04 déc. 2006, 00:55

ben eux pourquoi? t'aime pas la raclette...?
faut persévérer!!!
montre nous ce que t'a essayer et dis nous ce qui ne marhce pas!!
Il a marqué le sujet comme résolu, je suppose que c'est réglé.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

04 déc. 2006, 19:42

Bonsoir à tous,

J'ai réglé mon problème de la façon suivante :
<?php
 require('config.php'); 
/* on récupére les formulaire */
if(isset ($_POST['titre']))  $titre=addslashes($_POST['titre']);
else       $titre=""; 
 
if(isset ($_POST['article']))  $article=addslashes($_POST['article']);
else       $article="";
 
if(isset ($_POST['date']))  $date=addslashes($_POST['date']);
else       $date="";
J'aurai bien aimé utiliser :
mysql_real_escape_string();
mais je n'ai compris où l'écrire malgré mes recherches dans le manuel de référence.

Encore merci à tous de l'aide et du temps que vous passez pour nous amateurs et débutants.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2006, 21:00

J'aurai bien aimé utiliser :
mysql_real_escape_string();
mais je n'ai compris où l'écrire malgré mes recherches dans le manuel de référence.
suffit de passer la variable POST en paramètre de la fonction :
$titre = mysql_real_escape_string($_POST['titre']);
tu peux donc faire :
$titre = (isset ($_POST['titre']))  ? mysql_real_escape_string($_POST['titre']) : "";
Pour la syntaxe regarde CECI

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute