Page 1 sur 1
pd insertion dans bdd avec caracteres accentués
Posté : 18 mai 2005, 19:07
par ricardo
Bonsoir a tous,
Je possède un champs de formulaire texte.
Quand je mets un caractere avec un accent (é) impossible de faire l'enregistrement dans ma table.
Merci pour votre aide
Posté : 18 mai 2005, 19:08
par ouckileou
il s'enregistre pas du tout ou il s'enregistre sous un mauvais format ?
Posté : 18 mai 2005, 19:09
par Cyrano
Fais donc voir le bout de code qui envoie le texte vers la base, on verra plus rapidement s'il y a une coquille
Posté : 18 mai 2005, 19:15
par ricardo
Il s'enregistre pas du tout :
mysql_query("INSERT INTO annonce (choix, annonce, lieu, telephone, datesaisie, id_utilisateur)".
" VALUES ('$choix', '$annonce', '$lieu', '$telephone', NOW(),'$id_utilisateur') ")
or die("Impossible d'insérer le résultat de l'annonce");
Posté : 18 mai 2005, 19:17
par Cyrano
Fais afficher la requête et essaye de l'exécuter directement dans PHPMyAdmin. reviens nous avec le retour: soit ça marche et il y a un os ailleurs, soit ça marche pas et tu auras un message explicite.
Posté : 18 mai 2005, 19:39
par ricardo
J'ai fais une insertion dans ma table, aucun problème je comprends plus rien.
Dans PhpMyAdmin, dans ma table annonce y'a une colonne
Interclassement avec la valeur latin1_swedish_ci
Merci
Posté : 18 mai 2005, 19:48
par Cyrano
Interclassement avec la valeur latin1_swedish_ci
ÇA n'empêchera rien, mais tu peux éditer les propriétés et changer pour latin_1 tout court.
Là, il est dans la version par défaut.
Si ça marche en direct, le problème est en amont: tu vas rajouter un petit truc dans la commande de requête:
mysql_query("INSERT INTO annonce (choix, annonce, lieu, telephone, datesaisie, id_utilisateur)".
" VALUES ('$choix', '$annonce', '$lieu', '$telephone', NOW(),'$id_utilisateur') ")
or die("Impossible d'insérer le résultat de l'annonce, Erreur MySQl numéro : ". mysql_errno() ."; message : ". mysql_error());
Au moins tu seras fixé à ce niveau là.
Posté : 18 mai 2005, 20:56
par ricardo
Voila mon annonce : d'une
Voila mon message d'erreur
1064; message : Erreur de syntaxe près de 'une', 'zaE', 'ZEDZ', NOW(),'2')' à la ligne 1
Apparamment c'est l'apostrophe qui pose souci.
Que faire ?
Posté : 18 mai 2005, 21:03
par ouckileou
il faut que tu échappes l'apostrophe avec addslashes()
addslashes va rajouter un \ devant les caractères susceptibles de poser des problèmes dans ta requête
pour les enlever à l'affichage il y a la fonction inverse stripslashes()
addslashes et stripslashes sont des fonctions PHP
doc :
http://fr2.php.net/manual/fr/function.addslashes.php
http://fr2.php.net/stripslashes
Posté : 18 mai 2005, 21:19
par ricardo
Comment l'utiliser dans la requete ?
Merci
Posté : 18 mai 2005, 21:27
par ricardo
C'est bon trouver :
$annonce = addslashes ($_POST['annonce']);
Si j'ai bien compris pour afficher le contenu de mon champs annonce je doit appliquer stripslashes() .
Merci
Posté : 18 mai 2005, 21:30
par ouckileou
exactement

Posté : 18 mai 2005, 21:41
par ricardo
Comment limiter le nombre de caractere par ligne dans mon champs texte multiligne.
Souci d'affichage .
Merci
Posté : 18 mai 2005, 21:56
par ouckileou
regarde du coté des propriétés de la balise textarea, je pense notamment à "cols"
exemple :
http://perso.wanadoo.fr/bernard.quevill ... xtarea.htm