pd insertion dans bdd avec caracteres accentués

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 19:07

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2005, 19:08

il s'enregistre pas du tout ou il s'enregistre sous un mauvais format ?

Mammouth du PHP | 19672 Messages

18 mai 2005, 19:09

Fais donc voir le bout de code qui envoie le texte vers la base, on verra plus rapidement s'il y a une coquille
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 19:15

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");

Mammouth du PHP | 19672 Messages

18 mai 2005, 19:17

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 19:39

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

Mammouth du PHP | 19672 Messages

18 mai 2005, 19:48

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à.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 20:56

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2005, 21:03

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

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 21:19

Comment l'utiliser dans la requete ?

Merci

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 21:27

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2005, 21:30

exactement ;)

ricardo
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 21:41

Comment limiter le nombre de caractere par ligne dans mon champs texte multiligne.
Souci d'affichage .

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2005, 21:56

regarde du coté des propriétés de la balise textarea, je pense notamment à "cols"

exemple : http://perso.wanadoo.fr/bernard.quevill ... xtarea.htm