Affichage en PHP

cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015 - 2 nov. 2009 à 22:01
cs_perles Messages postés 74 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

19 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
3 nov. 2009 à 06:24
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 -
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
6 nov. 2009 à 06:54
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
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
8 nov. 2009 à 22:07
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
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 11:38
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 -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ensto28 Messages postés 87 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 23 mars 2011
10 nov. 2009 à 13:36
slt
essai d'utiliser google
ecrit phpdebutant
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 18:53
Bonjour,


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


Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 18:57
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
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 19:03
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
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 19:06
Bonsoir,



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

Merci pour le tuyau

Isabelle
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 20:56
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 -
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 21:18
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
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 21:19
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
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 21:55
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 -
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 22:15
Bonsoir,

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


Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 22:18
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
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
10 nov. 2009 à 22:24
Bonsoir,


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


Isabelle
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 nov. 2009 à 09:40
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 -
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
11 nov. 2009 à 20:34
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
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
11 nov. 2009 à 22:00
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
0
Rejoignez-nous