Affichage en PHP

Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
- - Dernière réponse : cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
- 11 nov. 2009 à 22:00
Bonjour,

J'espère que tout le monde va bien.
J'ai besoin d'un petit coup de main.

Voici ce qui s'affiche sur le site
Bague artisanale en perles de rocailles bleu ciel et facettes bleu foncé.


Voici mon code, j'ai ajouté htmlentitie en pensant que le problème serait réglé mais en vain !!!
<?php
while($valeurlud = @mysql_fetch_array($sql)){ // début de la boucle qui se terminera à la fin des enregistrements

?>
<tr class="Style1">
<td class="Tab1">
<?php echo htmlentities($valeurlud["AR_Texte"]); ?>
</td>
<td class ="Tab1">
<?php echo htmlentities($valeurlud["AR_Reference"]); ?>
</td>
</tr>
<tr class= "Style1">
<td class="Tab2">
<?php echo '';?>
</td>
<td class ="Tab2">
<?php echo htmlentities($valeurlud["AR_TLong"]); ?>
</td>
</tr>

<?php


Merci de votre aide précieuse

Isabelle
Afficher la suite 

19 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

htmlentities n'a rien à voir là dedans, ton problème est un problème d'encodage (sans doute une sortie UTF8 affichée en ISO-8859)
Dans ce genre de cas le mieux est d'harmoniser l'encodage de tous les softs en jeu :
- l'éditeur
- apache
- php
- mysql
- ...

Tu peux également t'en sortir en convertissant dynamiquement les résultats via CHARACTER SET (mysql) ou mb_convert_encoding (php)

A voir :
http://fr2.php.net/manual/fr/ref.mbstring.php
http://electron-libre.fassnet.net/utf8.php

Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonjour,

Merci de tes précieuses indications.
Je vais faire un tour aux adresses suivantes :

http://fr2.php.net/manual/fr/ref.mbstring.php
http://electron-libre.fassnet.net/utf8.php

et revoir mon code. Je te donne des nouvelles ensuite.


Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonjour,

Je pense que vous avez raison, mon code doit être en ISO-8859.
Les données ont été enregistrées au format UTF-8, et le navigateur les affiche en pensant avoir affaire à de l'ISO.
Je ne comprend pas ce que je peux faire pour régler mon problème.
J'ai visité les sites :

http://fr2.php.net/manual/fr/ref.mbstring.php
http://electron-libre.fassnet.net/utf8.php
[color=blue]/color

J'ai ajouté le code suivant:
<!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>
et
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>INFOSUISSE</title>
Mais rien n'a changé

Isabelle
Commenter la réponse de cs_perles
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Re,

Les données qui posent problèmes proviennent elles de la DB ?

Essaie d'ajouter, après la connexion et la sélection de la DB :
mysql_query("SET CHARACTER SET 'utf8'");


Cordialement,



Kohntark -
Commenter la réponse de kohntark
Messages postés
88
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
23 mars 2011
0
Merci
slt
essai d'utiliser google
ecrit phpdebutant
Commenter la réponse de ensto28
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonjour,


Merci pour vos réponses.
Je vais tout de suite essayé.


Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonjour,

J'ai ajouté le code mysql_query("SET CHARACTER SET 'utf8'");
dans mon programme.

<?php
include("images/connexion.php"); // ouverture de la connexion
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>

A l'affichage j'obtiens :

Bague artisanale en perles de rocailles noires et facettes fumées

Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,

J'ai fait une autre modification.
<?php
include("images/connexion.php"); // ouverture de la connexion
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>etc.......
<?php
while($valeurlud = @mysql_fetch_array($sql)){ // début de la boucle qui se terminera à la fin des enregistrements

?>
<tr class="Style1">
<td class="Tab1">
<?php echo $valeurlud["AR_Texte"]; ?>
</td>
<td class ="Tab1">
<?php echo $valeurlud["AR_Reference"]; ?>
</td>
</tr>
<tr class= "Style1">
<td class="Tab2">
<?php echo '';?>
</td>
<td class ="Tab2">

<?php
echo htmlentities(($valeurlud["AR_TLong"]), ENT_QUOTES, 'utf-8');
?>

</td>
</tr>
<?php


Voici comment se présente l'affichage :

Bague artisanale en perles de rocailles noires et facettes fumées


C'est formidable, fantastique mais je ne comprend pas pourquoi ça marche.
Mais ça marche....


Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,



Dans google, la syntaxe phpdebutant me donne pleins d'information
Je vais l'utiliser à l'avenir

Merci pour le tuyau

Isabelle
Commenter la réponse de cs_perles
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Arf, oui, bien vu.
J'étais parti sur le fait que tu n'avais plus de htmlentities étant donné mon premier message.

En effet, htmlentities ne règle en rien ton problème initial (avant que tu l'utilises "en pensant que ..."), par contre sa présence peut poser problème si l'encodage n'est pas ISO8859 et que l'on ne renseigne pas son troisième argument.

Ce qu'il doit se passer :

- la sortie de ta DB est encodé ISO-8859
- ton script PHP / page WEB est elle en UTF8
= > dans cette config les données ne sont pas correctement affichées puisqu'il y a discordance d'encodage

- le fait d'ajouter SET CHARACTER SET 'utf8' fait que la sortie DB change en utf8
=> à ce moment c'est le htmlentities qui pose problème car il attend par défaut un encodage ISO-8859

- le fait de lui dire sur quel encodage travailler (le troisième argument) fait que tout rentre dans l'ordre


Valide tout de même :
- vire le htmlentities en faisant directement un
echo $valeurlud["AR_TLong"];

=> en principe les données doivent apparaitre convenablement

- vire ensuite le SET CHARACTER SET
=> tu dois te retrouver avec ton pb initial

... dis moi si j'ai dit une bêtise

Concernant le htmlentities tu peux peut être t'en passer (l'inutile est inutile !!)
A vu de nez tu n'as aucune raison de t'en servir.

Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,



Je modifie pour voir :

<?php
include("images/connexion.php"); // ouverture de la connexion
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
etc...

<?php
echo $valeurlud["AR_TLong"];
?>


Voici le résultat à l'affichage :

Bague artisanale en perles de rocailles noires et facettes fumées



Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,


Je modifie pour voir :

<?php
include("images/connexion.php"); // ouverture de la connexion
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
etc...

<?php
echo $valeurlud["AR_TLong"];
?>


Voici le résultat à l'affichage :

Bague artisanale en perles de rocailles noires et facettes fumées


Isabelle
Commenter la réponse de cs_perles
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
y a un truc pas logique là dedans.
Si j'étais toi je ne me limiterai pas à constater que ça fonctionne mais chercherai le pourquoi du comment car tôt ou tard les problèmes reviendront et ils seront sans doute plus complexe à résoudre.

D'après ce que tu me dis j'ai maintenant l'impression que les données de mysql sont en UTF-8 mais que ta page n'y est pas.
Ta page est elle en ligne ? Si oui peux tu fournir l'adresse ?

En l'affichant, regarde quel encodage est utilisé par le navigateur :
sous firefox :
Affichage > Encodage des caractères
sous IE :
Affichage > Codage

Force le ensuite a utiliser l'autre encodage (ISO 8859 <=> utf8)
Dans quel cas "noires et facettes fumées" apparait normalement ?

Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,

J'ai écrit une énorme bêtise
http://www.google.ch/ Unicode (UTF8)
http://infoisa1600.isuisse.com/ Alpahbet occidental (ISO)


Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,

J'ai modifié le bagues1.php

<?php
include("images/connexion.php"); // ouverture de la connexion
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
etc...

<?php
echo $valeurlud["AR_TLong"];
?>

Affichage de la ligne
Bague artisanale en perles de rocailles noires et facettes fumées
http://infoisa1600.isuisse.com/ Alphabet occidental (ISO)

Affichage de la ligne
Bague artisanale en perles de rocailles noires et facettes fumées
http://infoisa1600.isuisse.com/ Unicode (UTF8)
Mais Page de r�sultat :


Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonsoir,


Il faut que je parvienne à forcer l'affichage du IE en Unicode (UTF8)


Isabelle
Commenter la réponse de cs_perles
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Je suis allé faire un tour, et ca se confirme :
- MySQL sort bien de l'UTF8
- ta page est en ISO-8859

Dès lors tu ne feras que rencontrer des soucis (conversions d'encodage à tout va).
Comme je le disais au début :
Dans ce genre de cas le mieux est d'harmoniser l'encodage de tous les softs en jeu :
- l'éditeur
- apache
- php
- mysql
- ...


Afin de simplifier les choses par la suite tu dois choisir :
- soit tu passes tout en utf8
=> sans doute plus long et complexe, mais conseillé
=> tu ré enregistres tous tes fichiers en utf-8 (attention des accents risquent de sauter)
=> tu spécifies dans chaque page HTML/PHP l'encodage (charset=UTF-8)

- soit tu passes tout en ISO
=> il suffit alors de modifier l'encodage de sortie MySQL

Tu devrais également t'en sortir si tu fais une requête "SET CHARACTER SET latin1" après chaque connexion, mais ça fait une requête inutile à chaque fois

N'oublie pas de faire un backup complet avant de faire des modifs importantes.
Si une migration en utf8 te semble trop complexe reste en ISO :o)


Cordialement,



Kohntark -
Commenter la réponse de kohntark
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonjour,


Merci de ta réponse, je comprend mieux pourquoi mon affichage
était si bizzare. Il faut absoluement que j'harmonise mon encodage.
Sinon, je vais continuellement avoir des soucis.


Merci de ton aide précieuse

Isabelle
Commenter la réponse de cs_perles
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
0
Merci
Bonjour,


Je modifie en ce moment mon programme bagues1.php, j'ai mis la page avec la propriété UTF8. J'ai modofié mon texte saisit manuellement.
Par exemple résultat.
Pour le programme bagues1.php, cela fonctionne.


Isabelle
Commenter la réponse de cs_perles