Problème d' enregistrement

Eléphant du PHP | 121 Messages

05 mai 2011, 21:46

Bonjour à tous.

Lorsque j'enregistre un texte dans ma base de donnée, j'ai les caractères avec les accents qui sont transformés.
pratique parce qu`une fois le baton étant plier devient très petit et est alors facile a ranger.

En cette occasion nous avons décider de vous faire une offre spéciale ,
Voici mon code d'enregistrement:
$titre = $_POST['titre'];
$titre = convenregi($_POST['titre']);
$texte = $_POST['texte'];
$texte = convenregi($_POST['texte']);
$auteur = convenregi($_POST['auteur']);
$texte2 = $_POST['texte2'];
$texte2 = convenregi($_POST['texte2']);
$video = $_POST['video'];
$video = convenregi($_POST['video']);
$lienvideop = $_POST['lienvideop'];
$lienvideop = convenregi($_POST['lienvideop']);
$lienvideo = $_POST['lienvideo'];
$lienvideo = convenregi($_POST['lienvideo']);
$photovideo ='';
$photo ='';
$photo2 ='';
$select = "INSERT INTO new VALUES ('','$titre','$texte','$photo','$photovideo','$video','$lienvideop','$lienvideo','$photo2','$texte2','$auteur','$delai','$temps')";
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
Ma fonction:
// Convertisseur texte en HTML compatible affichage
function convenregi($message)
{
$message = addslashes($message);
return($message);
}
J'ai essayer plein de chose mais impossible d' enregistrer correctement mon texte. Ce n'est pas un problème d'affichage car quand je copie le texte directement dans la base de données cela s'affiche correctement.

Merci a celui qui pourra m'aider.

Eléphant du PHP | 241 Messages

05 mai 2011, 21:49

Salut,

il faut vérifier le charset utilisé pour ta bdd et sur tes pages html. (utf8,ISO etc.)

Peut-être qu'un utf8_encode - utf8_decode suffirait, mais seulement si tu es en utf8 bien sur !

Eléphant du PHP | 121 Messages

05 mai 2011, 21:58

Hello,

Ma page est encodée sous ce format:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Dents du midi Vol Libre</title>
</head>
Est ce que je dois utiliser utf8_encode - utf8_decode

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 mai 2011, 22:14

A priori ta page est en utf8, mais la base dans laquelle tu stockes la valeur semble être en latin ou en iso, d'où l'encodage bizarre des accents... plutôt qu'encoder et décoder, le mieux à mon avis est de rester cohérent :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 241 Messages

05 mai 2011, 22:26

Ryle a plus que raison, il est important de rester dans le même encodage entre la bdd et tes pages, ce qui évitera bon nombres d'erreurs d'encodage.

utf8_encode et _decode ne doivent être utilisés que dans des cas particuliers où l'on ne peut pas faire autrement.

Eléphant du PHP | 121 Messages

05 mai 2011, 22:31

C'est juste mon encodage était en latin. Maintenant j'ai changer en utf8_general_ci mais j'ai toujours le même problème.
Est ce que j'ai mis juste Interclassement ?

Merci pour votre aide

Eléphant du PHP | 121 Messages

05 mai 2011, 23:12

Ma page est bien en UFT-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
ET ma base de donées en
Interclassement utf8_bin

Mais toujours l'affichage des accents qui déconne.

Merci a celui qui pourra m'aider

Mammouth du PHP | 504 Messages

05 mai 2011, 23:17

Hello,

Quand tu envoies tes enregistrements a ta base, ajoute ceci:

Code : Tout sélectionner

mysql_query("SET NAMES UTF8");
ça devrait rentrer dans l'ordre.

Eléphant du PHP | 121 Messages

05 mai 2011, 23:34

Hello,

J'ai ajouté:
$select = "INSERT INTO new VALUES ('','$titre','$texte','$photo','$photovideo','$video','$lienvideop','$lienvideo','$photo2','$texte2','$auteur','$delai','$temps')";
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
mysql_query("SET NAMES UTF8");
et toujours le même résultat.
pratique parce qu`une fois le baton �©tant plier devient tr�¨s petit et est alors facile a ranger.

En cette occasion nous avons d�©cider de vous faire une offre sp�©ciale ,

Nous avons mis dans cette offre 3 article, d��abord les batons, un piolet et une paire de crampons.

Le piolet est un des plus l�©ger sur le march�© et les crampons sont tr�¨s compacte et chaussent tr�¨s bien sur tout genre de souliers.
Est ce que j'ai fait juste ??????

Mammouth du PHP | 504 Messages

05 mai 2011, 23:43

Avant que tu n'enregistres :wink: :

Code : Tout sélectionner

mysql_query("SET NAMES UTF8"); $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
Si ta table est en UTF_8 et ta page aussi, ça devrait passer.

Eléphant du PHP | 121 Messages

06 mai 2011, 08:11

Hello,

Effectivement cela va beaucoup mieux.

Code : Tout sélectionner

$select = "INSERT INTO new VALUES ('','$titre','$texte','$photo','$photovideo','$video','$lienvideop','$lienvideo','$photo2','$texte2','$auteur','$delai','$temps')"; mysql_query("SET NAMES UTF8"); $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
C'est parfait. Merci pour votre aide.