Php, problèmes de caractères spéciaux
Résolu/Fermé
dracucharles
Messages postés
58
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
13 novembre 2009
-
22 mai 2008 à 14:30
dracucharles Messages postés 58 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 13 novembre 2009 - 22 mai 2008 à 15:36
dracucharles Messages postés 58 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 13 novembre 2009 - 22 mai 2008 à 15:36
Bonjour,
j'ai un gestionnaire de news où lorsque que je souhaite rentrer une nouvelle news, je dois saisir son titre et son contenu.
Mais mon problème est que lorsque que je met des simple côtes ( ' ) dans le titre (ex: c'est un test) mon enregistrement dans la base ne se fait pas. J'aimerais savoir s'il y a une fonction en php pour ne plus avoir ce problème.
J'utilise déjà htmlspecialchars() et stripslashes().
Mon problème survient lorsque je fais ma requête:
J'ai toujours le message (insertion échouée) lorsque j'utilise des simples côtes, mais mon enregistrement se fait correctement avec du texte "normal".
J'espère que j'ai été assez clair, merci de votre aide
j'ai un gestionnaire de news où lorsque que je souhaite rentrer une nouvelle news, je dois saisir son titre et son contenu.
Mais mon problème est que lorsque que je met des simple côtes ( ' ) dans le titre (ex: c'est un test) mon enregistrement dans la base ne se fait pas. J'aimerais savoir s'il y a une fonction en php pour ne plus avoir ce problème.
J'utilise déjà htmlspecialchars() et stripslashes().
Mon problème survient lorsque je fais ma requête:
$requete = mysql_query("insert into news(titre, contenu, date_msg, nom_photo) values('{$titre}','{$contenu}','{$date}','nouvelle');") or die("L'insertion a échoué");
J'ai toujours le message (insertion échouée) lorsque j'utilise des simples côtes, mais mon enregistrement se fait correctement avec du texte "normal".
J'espère que j'ai été assez clair, merci de votre aide
A voir également:
- Php, problèmes de caractères spéciaux
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caractères ascii - Guide
- Easy php - Télécharger - Divers Web & Internet
7 réponses
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
22 mai 2008 à 14:40
22 mai 2008 à 14:40
il faut mettre des \ avant chaque apostrophes pour ne pas qu'elles soient interprété
la fonction stripslashes() permet de virer les \, elle s'utilise donc quand tu récupère des info de ta base
pour insérer des info et donc mètre les \ devant les apostrophes c'est la fonction addslashes($chaine)
la fonction stripslashes() permet de virer les \, elle s'utilise donc quand tu récupère des info de ta base
pour insérer des info et donc mètre les \ devant les apostrophes c'est la fonction addslashes($chaine)
ixce
Messages postés
51
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
17 décembre 2008
3
22 mai 2008 à 14:42
22 mai 2008 à 14:42
et en mettant toi meme un \[guillemet] au lieu de guillemet tout seul devant, ca marche pas?
epsiloneIB
Messages postés
133
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
13 septembre 2009
8
22 mai 2008 à 14:51
22 mai 2008 à 14:51
Bonjour,
Voici un exemple, essaye de te baser sur et ça va marcher :
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO person (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";mysql_close($con)
?>
Epsilone
Voici un exemple, essaye de te baser sur et ça va marcher :
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO person (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";mysql_close($con)
?>
Epsilone
dracucharles
Messages postés
58
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
13 novembre 2009
6
22 mai 2008 à 14:53
22 mai 2008 à 14:53
En fait je fais ça pour des personnes "non informaticiennes", donc ils écrivent leur texte et hop la news est fait.
J'ai utilisé addslashes(), ça marche très bien pour le contenu de ma news, mais pas pour le titre. Pourtant j'utilise bien addslashes et htmlspecialchars(). L'insertion échoue encore si je met une ' ou une " dans le titre. :/
J'ai utilisé addslashes(), ça marche très bien pour le contenu de ma news, mais pas pour le titre. Pourtant j'utilise bien addslashes et htmlspecialchars(). L'insertion échoue encore si je met une ' ou une " dans le titre. :/
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
22 mai 2008 à 14:56
22 mai 2008 à 14:56
Faudrai que tu écrive ta requête dans une variable et que tu fasse un echo de cette variable, qu'on voie exactement la requête qu'il est en train de tenter d'exécuter, on sera fixé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Nieli
Messages postés
83
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
23 avril 2009
6
22 mai 2008 à 14:53
22 mai 2008 à 14:53
mysql_real_escape_string($var) :/ ?
dracucharles
Messages postés
58
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
13 novembre 2009
6
22 mai 2008 à 15:13
22 mai 2008 à 15:13
Voilà les traitements correspondants aux titres des news:
//autres traitements pour le reste du formulaire ...
ensuite la requête:
$requete = mysql_query("insert into news(titre, contenu, date_msg, nom_photo) values('{$titre}','{$contenu}','{$date}','nouvelle');") or die("L'insertion a échoué");
Pour afficher ce que fait ma requête, j'ai fais echo $requete; mais rien ne s'est affiché.
$titre=($_POST['titre']); //$titre=addslashes($titre); $titre=mysql_real_escape_string($titre); $titre=htmlspecialchars($_POST['titre']);
//autres traitements pour le reste du formulaire ...
ensuite la requête:
$requete = mysql_query("insert into news(titre, contenu, date_msg, nom_photo) values('{$titre}','{$contenu}','{$date}','nouvelle');") or die("L'insertion a échoué");
Pour afficher ce que fait ma requête, j'ai fais echo $requete; mais rien ne s'est affiché.
Nieli
Messages postés
83
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
23 avril 2009
6
22 mai 2008 à 15:19
22 mai 2008 à 15:19
Fait plutot
$requete = "insert into news(titre, contenu, date_msg, nom_photo) values('{$titre}','{$contenu}','{$date}','nouvelle');";
echo $requete;
pour voir si la requete est juste, poste la si besoin
$requete = "insert into news(titre, contenu, date_msg, nom_photo) values('{$titre}','{$contenu}','{$date}','nouvelle');";
echo $requete;
pour voir si la requete est juste, poste la si besoin
Nieli
Messages postés
83
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
23 avril 2009
6
>
Nieli
Messages postés
83
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
23 avril 2009
22 mai 2008 à 15:20
22 mai 2008 à 15:20
Remarque
$titre=mysql_real_escape_string($titre);
$titre=htmlspecialchars($_POST['titre']);
le mysql_real_escape_string ne sert a rien la :/
$titre=mysql_real_escape_string($titre);
$titre=htmlspecialchars($_POST['titre']);
le mysql_real_escape_string ne sert a rien la :/
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
>
Nieli
Messages postés
83
Date d'inscription
dimanche 10 février 2008
Statut
Membre
Dernière intervention
23 avril 2009
22 mai 2008 à 15:27
22 mai 2008 à 15:27
oui la tu écrase ton $titre
donc forcement tes etapes addslashes ou mysql_real_escape_string servent a rien, c'est la le probleme
donc forcement tes etapes addslashes ou mysql_real_escape_string servent a rien, c'est la le probleme
dracucharles
Messages postés
58
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
13 novembre 2009
6
22 mai 2008 à 15:36
22 mai 2008 à 15:36
oui voilà le problème :s
Donc au final j'ai ça:
et j'ai bien mes ' dans le titre et dans le contenu des news.
Merci beaucoup pour votre aide.
Donc au final j'ai ça:
$titre=($_POST['titre']); $titre=htmlspecialchars($_POST['titre']); $titre=addslashes($titre);
et j'ai bien mes ' dans le titre et dans le contenu des news.
Merci beaucoup pour votre aide.