IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Artichow] Caractères accentués des légendes


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut [Artichow] Caractères accentués des légendes
    Bonjour. Je créer un graphique a partir de données récupérer d'un fichier texte contenant le nombre de messages reçu sur le serveur snmp du labo ou je suis actuellement.
    J'affiche ensuite le camembert de statistiques représentant les différentes catégories de messages reçus comme par exemple s'il s'agit d'un spasm ou d'un e-mail pour une personne particulière.
    Mon problème consiste dans l'affichage de la légende.
    J'utilise donc la librairie graphique artichow. J'aurais voulu savoir comment il serait possible de faire en sorte a ce que les accents soit bien représentés dans la légende de mon graphique. Car ils sont tous remplacés par des caractères bizarre.
    Si quelqu'un a une idée je suis preneur
    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Vérifie si il n'y a pas d'incohérence de charset entre ton document de départ et ta page web.

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    il faut utiliser utf8_encode() quand tu passes des chaines de caractères à Artichow pour qu'il les affiche correctement.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé avec cette methode mais je ne y arrive pas.
    Car moi je passe un tableau. Donc j'ai essayé de parcourir le tableau avec une boucle foreach ($mon_tableau as $ligne).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <html>
    <head>
    <title></title>
    </head><body>
    <pre>
    <?
    $tableau = file('/var/www/28-06-07.txt'); 
    $affichage=0;
     
    $codeErreur=array();
    echo "1ere partie du stage ==> Remplissage du tableau\n\n";
    foreach($tableau as $ligne)
    {
    	if($ligne=="Détail des transferts :\n")
    	{
    		$affichage=1;
    		continue;
    	}
            elseif(stristr($ligne,'Nombre de processus minimum occupés :'))
            {
    		$affichage=0;
            }
    	elseif($ligne=="Statistiques depuis le démarrage de la passerelle :\n"          
                   or $ligne=="---------------------------------------------------\n")
    	{
    		$affichage=0;
    	}
    	if($affichage==1)
    	{
    		//echo "<br>$ligne";
    		list($cle,$tmp)=explode(": ",$ligne);
    		list($valeur)=explode(" (",$tmp);
                    $codeErreur["$cle"]=$valeur;
     
    	}
    }
    print_r($codeErreur);
    echo "</pre>\n";
    $serErreur=rawurlencode(serialize($codeErreur));
    echo "<a href='ex.php?codeErreur=$serErreur'>Lien</a>";
    ?>
    </body>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
     
    require_once "/Artichow/Pie.class.php";
    $graph = new Graph(650, 525);
    $graph->title->set("Stats");
    $graph->title->setFont(new TuffyItalic(16));
     
    $array = unserialize(stripslashes($_GET['codeErreur']));
    //j'essaie de faire une boucle foreach ici avec utf8_encode() mais cela ne marche pa
    $plot = new Pie($array, Pie::EARTH);
    $plot->setCenter(0.22, 0.27);
    $plot->setSize(0.4, 0.35);
    $plot->set3D(10);
     
    $plot->legend->setPosition(2.4,1.7);
     
    $graph->add($plot);
    $graph->draw();
     
    ?>
    Serait il possible de m'expliquer un peu plus comment procéder pour changer l'encodage de toutes les lignes de mon tableau. Merci

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Essaie de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $codeErreur["$cle"]=$valeur;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $codeErreur["$cle"]=utf8_encode($valeur);

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Ca ne marche pas. Car moi c'est la clé qu'il faut changer et non pas la valeur.
    N'y a t'il pas possibilité d'utiliser la fonction iconv() ?
    Je sais qu'elle doit être placée après mon unserialize(...).
    Mais je ne vois pas comment l'utiliser. J'ai essayé avec une boucle pour modifier chaque ligne mais cela ne change rien.

  7. #7
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Rien ne t'empeche d'utiliser utf8_encode() sur la clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $codeErreur[utf8_encode($cle)]=utf8_encode($valeur);
    iconv s'utilise comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $machaineModif=iconv("ISO-8859-1","UTF-8",$machaine);
    donc pour un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=0;$i<count($tab);$i++)
    {
    $tab[$i] = iconv("ISO-8859-1","UTF-8",$tab[$i]);
    }
    Mais je ne vois pas trop à froid comment changer la valeur de la clé sauf a reconstruire un autre tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($tab as $key=>$val)
    {
    $newtab[iconv("ISO-8859-1","UTF-8",$key)] = iconv("ISO-8859-1","UTF-8",$value);
    }
    ce qui revient a faire l'encodage du début de mon message.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé avec les 2 méthodes mais ca ne change toujours rien.
    Mais est ce qu'il faut bien placé ces boucles après le unserialize au moins?
    Pourtant mon maître avec qui j'ai parlé de ca ma dit que c'était bien au bon endroit.
    Je dois forcement m'y prendre mal.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Ca y est.
    J'ai enfin trouvé la solution.
    Je joins donc mes deux codes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    //1ere partie
    <html>
    <head>
    <title>Remplissage tableau</title>
    </head>
    <body>
    <pre>
    <?
    $tableau = file('/var/www/28-06-07.txt');   //on choisi le fichier a ouvrir pour phase de test 
    $affichage=0;    //on initialise la variable de travail a 0
     
    $codeErreur=array(); //ici on créer une variable de type tableau
    foreach($tableau as $ligne)      //boucle permettant de parcourir le tableau
    				 //ligne par ligne
    {
    	if($ligne=="Détail des transferts :\n")   //début du tri
    	{
    		$affichage=1;      //si on a bien la ligne on autorise                                               l'affichage
    		continue;	   //ne prend pas en compte la première ligne
    	}
            elseif(stristr($ligne,'Nombre de processus minimum occupés :'))
            {
    		$affichage=0;	   //si on a cette ligne, l'affichage n'est pas                                       autorisé
            }
    	elseif($ligne=="Statistiques depuis le démarrage de la passerelle :\n"             or $ligne=="---------------------------------------------------\n")
    	{
    		$affichage=0;      //affichage non autorisé ici également
    	}
    	if($affichage==1)          //une fois le tri terminé
    	{
    		list($cle,$tmp)=explode(": ",$ligne);   
    		//explosion de la chaine de caractere pout supprimer ce qui ne                    nous interesse pas. Ici on agit sur les clés du tableau qu'ont                  stockent ensuite dans une variable temporaire
                    list($valeur)=explode(" (",$tmp);
    		//nouvelle explosion mais cette fois on agit sur les valeurs du 		  tableau afin de ne garder que le chiffre 
                    $codeErreur["$cle"]=$valeur;  
    		//enfin on remplit un nouveau avec seulement les données qui                      nous interessent.
    	}
    }
    print_r($codeErreur);
    echo "</pre>\n";
    $serErreur=(rawurlencode(serialize($codeErreur)));  
    //ici on encode une chaîne (le tableau en tant que chaîne de caractères plus     précisement) en URL qu'on serialize afin de la sauvegarder afin de pouvoir la   passer en paramètre lors de l'appel du second fichier.
    echo "<a href='ex.php?codeErreur=$serErreur'>Lien</a>";
    ?>
    </pre>
    </body>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    require_once('/var/www/Artichow/Pie.class.php');
    $graph = new Graph(650, 525);
    $graph->title->set("Stats");
    $graph->title->setFont(new TuffyItalic(16));
     
    $array = unserialize(stripslashes($_GET['codeErreur']));
    foreach($array as $key => $value)  
    {
    	$array2[iconv("UTF-8","ISO-8859-1",$key)] = $value;
            //on créer un nouveau tableau avec chaque clé converti avec le bon               encodage 
    }
     
    $plot = new Pie($array2, Pie::EARTH);
    $plot->setCenter(0.22, 0.27);
    $plot->setSize(0.4, 0.35);
    $plot->set3D(10);
    $plot->legend->setPosition(2.4,1.7);
     
    $graph->add($plot);
    $graph->draw();
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Jenkins] Prise en charge des caractères accentués des valeurs de paramètres d'un build
    Par Acestra dans le forum Intégration Continue
    Réponses: 2
    Dernier message: 03/07/2017, 09h22
  2. Problème d'affichage des caractères accentués
    Par ostaquet dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 06h58
  3. [FLASH MX2004] Pb sur des caractères accentués.
    Par sandrineLL dans le forum Flash
    Réponses: 3
    Dernier message: 05/08/2004, 14h18
  4. Chaînes avec des caractères accentués dans Interbase
    Par François Marliac dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39
  5. insérer des caractères accentués INFORMIX/JDBC
    Par donde dans le forum Informix
    Réponses: 2
    Dernier message: 19/11/2002, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo