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