Insérer un texte dans une BDD en PHP
Résolu/Fermé
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
-
21 juil. 2012 à 14:33
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 23 juil. 2012 à 09:30
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 23 juil. 2012 à 09:30
A voir également:
- Insérer un texte dans une BDD en PHP
- Insérer une vidéo dans powerpoint - Guide
- Insérer une image dans word sans bouger le texte - Guide
- Insérer signature word - Guide
- Transcription audio en texte word gratuit - Guide
- Insérer liste déroulante excel - Guide
6 réponses
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
21 juil. 2012 à 15:52
21 juil. 2012 à 15:52
up
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
21 juil. 2012 à 18:21
21 juil. 2012 à 18:21
up2
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
21 juil. 2012 à 20:49
21 juil. 2012 à 20:49
up3
rjl
Messages postés
543
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
25 mai 2019
49
21 juil. 2012 à 22:35
21 juil. 2012 à 22:35
Bonsoir,
Je ne suis que débutant mais l'absence de réponse m'incite à faire une ou deux observations :
Je suis surpris du nombre de quote et apostrophes... Doivent-elles être appareillées (une quote pour une quote et des apostrophes se répondant aux bons endroits ?
J'ai cru comprendre qu'en temps normal cette INSERT fonctionnait (en l'absence de " ou ' dans les variables) ;
Ainsi, (default,\''.$pseudo.'\',\''.$texte.'\',current_date,current_time(0))');
C'est une bonne chose car entre les apostrophes echappée ou non, la lecture n'est pas facile ?
Je ne connaissait pas la fonction UTF8_decode() et à vrai dire me serait perso plus intéresssé à UTF8_encode() pour passer en utf8 !
Pour autant, je suis allé sur le net et j'ai trouvé un message publié chez alsacreation qui traite de la fonction UTF8_decode() et du maintient des apostrophes... Peut-être une piste intéressante ? Je te laisse poursuivre car tu es à l'évidence plus pointu que moi.
Bonne chance... RJL2721
UTF8_decode() pour afficher de l'UTF8 - Alsacreations
forum.alsacreations.com/topic-17-59722-1-UTF8decode-pour-affich...
9 messages - 3 auteurs - 12 janv.
-Après utilisation de utf8_decode tous les caractères accentués sont bien affichés mais pas les "oe" de oeuf par exemple et les apostrophes.
Je ne suis que débutant mais l'absence de réponse m'incite à faire une ou deux observations :
Je suis surpris du nombre de quote et apostrophes... Doivent-elles être appareillées (une quote pour une quote et des apostrophes se répondant aux bons endroits ?
J'ai cru comprendre qu'en temps normal cette INSERT fonctionnait (en l'absence de " ou ' dans les variables) ;
Ainsi, (default,\''.$pseudo.'\',\''.$texte.'\',current_date,current_time(0))');
C'est une bonne chose car entre les apostrophes echappée ou non, la lecture n'est pas facile ?
Je ne connaissait pas la fonction UTF8_decode() et à vrai dire me serait perso plus intéresssé à UTF8_encode() pour passer en utf8 !
Pour autant, je suis allé sur le net et j'ai trouvé un message publié chez alsacreation qui traite de la fonction UTF8_decode() et du maintient des apostrophes... Peut-être une piste intéressante ? Je te laisse poursuivre car tu es à l'évidence plus pointu que moi.
Bonne chance... RJL2721
UTF8_decode() pour afficher de l'UTF8 - Alsacreations
forum.alsacreations.com/topic-17-59722-1-UTF8decode-pour-affich...
9 messages - 3 auteurs - 12 janv.
-Après utilisation de utf8_decode tous les caractères accentués sont bien affichés mais pas les "oe" de oeuf par exemple et les apostrophes.
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
21 juil. 2012 à 23:41
21 juil. 2012 à 23:41
En fait, j'ai mis autant de côtes car : il faut que les variables soient entre côtes : \'XXX\'
Mais il faut dire au langage qu'il s'agit d'une variable et non pas d'une chaîne : '.$xxx.'
Ce qui donne au total : \''.$xxx.'\'
Si on peut faire plus simple, je suis preneur, mais là n'est pas la question.
Il me faut en fait une fonction PHP qui prenne une variable, et renvoie une transformation : tout les ' deviennent \'\'
Je cherche aussi une fonction qui transforme les retour-chariots en balise <br />
Mais il faut dire au langage qu'il s'agit d'une variable et non pas d'une chaîne : '.$xxx.'
Ce qui donne au total : \''.$xxx.'\'
Si on peut faire plus simple, je suis preneur, mais là n'est pas la question.
Il me faut en fait une fonction PHP qui prenne une variable, et renvoie une transformation : tout les ' deviennent \'\'
Je cherche aussi une fonction qui transforme les retour-chariots en balise <br />
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
rjl
Messages postés
543
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
25 mai 2019
49
22 juil. 2012 à 14:31
22 juil. 2012 à 14:31
J'insiste (sans doute bêtement !).
Mon observation principale portait sur la fonction UTF8_decode().
Tu dis l'utiliser pour deux variables, mais si l'une des deux contient une quote ou apostrophe : la requête ne fonctionne pas !
Par cette fonction, vérifie que l'apostrophe ne devienne pas un point d'interrogation ?
je cite "http://www.cylman.com/php-probleme-avec-le-caractere-apostrophe-arrondie-transforme-en-point-interrogation-par-utf8-decode_qr17.html" :
Problème avec le caractère ' apostrophe (arrondie) transformé en ? par utf8_decode
Le caractère ' est un caractère unicode sur 3 bits qui n'a pas d'équivalent en ISO-8859. Il est parfois associé sur les claviers à la touche Shif-4, que les rédacteurs utilisent. Lorsque les données sont stockées en utf8 cela ne pose aucun problème. Mais pour les afficher en ISO-8859, la fonction utf8_decode le remplace par un joli ?
Il faut utiliser iconv qui convertira avec l'élément équivalent.
Par exemple :
function cleanText($intext) {
$intext=str_replace('<![CDATA[','',$intext);
$intext=str_replace(']]>','',$intext);
if (function_exists('iconv')) {
$intext = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $intext);
}
if(detectUTF8($intext))
return "".purge_iso88591(utf8_decode($intext))."";
else
return "".purge_iso88591($intext)."";
}
A tout hasard ! RJL2722
Mon observation principale portait sur la fonction UTF8_decode().
Tu dis l'utiliser pour deux variables, mais si l'une des deux contient une quote ou apostrophe : la requête ne fonctionne pas !
Par cette fonction, vérifie que l'apostrophe ne devienne pas un point d'interrogation ?
je cite "http://www.cylman.com/php-probleme-avec-le-caractere-apostrophe-arrondie-transforme-en-point-interrogation-par-utf8-decode_qr17.html" :
Problème avec le caractère ' apostrophe (arrondie) transformé en ? par utf8_decode
Le caractère ' est un caractère unicode sur 3 bits qui n'a pas d'équivalent en ISO-8859. Il est parfois associé sur les claviers à la touche Shif-4, que les rédacteurs utilisent. Lorsque les données sont stockées en utf8 cela ne pose aucun problème. Mais pour les afficher en ISO-8859, la fonction utf8_decode le remplace par un joli ?
Il faut utiliser iconv qui convertira avec l'élément équivalent.
Par exemple :
function cleanText($intext) {
$intext=str_replace('<![CDATA[','',$intext);
$intext=str_replace(']]>','',$intext);
if (function_exists('iconv')) {
$intext = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $intext);
}
if(detectUTF8($intext))
return "".purge_iso88591(utf8_decode($intext))."";
else
return "".purge_iso88591($intext)."";
}
A tout hasard ! RJL2722
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
Modifié par XecK le 22/07/2012 à 14:54
Modifié par XecK le 22/07/2012 à 14:54
Je comprend, mais je trouve ça plutôt étrange puisque après l'utilisation d'utf8_decode, soit ça marche parfaitement, doit il y a une apostrophe et le script s'arrête... Or je peut mettre des ? donc mes variables et cela marche tout de même...
Ceci étant dis, ton exemple str_replace que je vais utiliser je pense : j'avais oublier l'existence de cette fonction mais ce sera parfais dans mon cas...
Je te remercie donc chaleureusement.
Ceci étant dis, ton exemple str_replace que je vais utiliser je pense : j'avais oublier l'existence de cette fonction mais ce sera parfais dans mon cas...
Je te remercie donc chaleureusement.
XecK
Messages postés
386
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
26 août 2016
54
22 juil. 2012 à 15:25
22 juil. 2012 à 15:25
Au final, j'ai juste sorti mes variables de ma requête :
$result = $bdd->prepare('INSERT INTO Commentaire values (default, :pseudo , :texte ,current_date,current_time(0))');
$result->execute(array('pseudo' => $pseudo,'texte' => $texte));
Mais il ne faut pas oublier les espaces autour de :pseudo et :texte, sinon ça marche pas (j'avais fais comme ça à l'origine)
$result = $bdd->prepare('INSERT INTO Commentaire values (default, :pseudo , :texte ,current_date,current_time(0))');
$result->execute(array('pseudo' => $pseudo,'texte' => $texte));
Mais il ne faut pas oublier les espaces autour de :pseudo et :texte, sinon ça marche pas (j'avais fais comme ça à l'origine)
rjl
Messages postés
543
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
25 mai 2019
49
23 juil. 2012 à 09:30
23 juil. 2012 à 09:30
Donc le problème est réglé... ce qui est l'essentiel.
Merci d'avoir communiqué le pourquoi et la correction
RJL2723
Merci d'avoir communiqué le pourquoi et la correction
RJL2723