graphique d'apres une BdD

Eléphant du PHP | 289 Messages

24 mai 2005, 08:55

re,

je ne sais pas si c ca que tu attends.

Je vais faire une requette dans ma base de valeurs et effectuer la somme par éléments (tjs le meme nbr d'éléments).
ensuite, j'affiche les valeurs des sommes dans un tableau.
ce tableau sert de référence pour le script Jpgraph.

le souci est de savoir comment lui indiquer ce tableau car dans le code initial, il fait référence à un array=(VALEURS).

est ce que c ca qu'il fallait??? :roll:

FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

24 mai 2005, 10:01

En partie oui: tu sais donc que tu récupères des valeurs dans un tableau.

Maintenant, il te reste à développer ton script de génération de graphique en utilisant ces valeurs: tu as des chances d'avoir desoin d'un count si le nombre de valeur peut varier d'une fois a l'autre. Mais si le nombre est strictement toujours le même, alors tu peux créer tes boucles avec un nombre de tour fixé d'avance. Il faut que tu tiennes compte des possibles évolutions de ton script, donc pose-toi la question : pour quelle raison ou dans quel cas pourrais-je avoir un nombre variable de valeurs? Si vraiment tu ne trouve aucune réponse valide, alors fixe les nombres de tours de boucle et oublie le count. Si par contre ton script peut évoluer vers un nombre vraiable, alors utilise un count() et tu n'auras pas à modifier ton script ultérieurement. L'idée du count, c'est que tu vas tracer une barre de ton graphique pour chaque valeur, il te faut donc le nombre de valeurs pour savoir quand arrêter le traçage de nouvelles barres (ou tranches de camembert si tu fais un graphique en camembert)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

27 août 2005, 11:06

Salut Cyrano,

Je réactive ce post car j'ai essayé tous pleins de trucs mais aucun n'a fonctionné pour mes graphiques :(

Pour résumer depuis le tps:

J'ai un tableau avec un nombre de lignes et de colonnes fixe.
ce tableau est issue d'une requete. mon but est d'afficher les valeurs du tableau dans un graphique.

est ce que tu aurais un petit moment a m'accorder car la, je suis totalement pommé :(

merci de ta réponse,
FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

27 août 2005, 11:25

Sans voir aucun code, difficile et comme il a du évoluer depuis... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

27 août 2005, 11:36

Alut!

Ben je crois que le plus simple est de tout reprendre depuis le début!!
Voici le code de la page. il n'y a qu'un tableau avec des valeurs dedans:

Code : Tout sélectionner

<body> <table width="315" height="294" border="0"> <tr> <th scope="col">Mois </th> <th scope="col">C.A</th> </tr> <tr> <td>Janvier</td> <td>39</td> </tr> <tr> <td>F&eacute;vrier</td> <td>37</td> </tr> <tr> <td>Mars</td> <td>43</td> </tr> </table> </body>
Voila, le code pour bien tout recommencer :wink:

FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

27 août 2005, 11:43

:shock: Ça, c'est un bête tableau html, jusque là, rien pour se jeter contre les murs... Comme tu parles de graphiques, je m'attendais à un code PHP. Du coup, je ne suis plus sur de rien. :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

27 août 2005, 11:47

Ne doutes pas, il est bien question de graphiques dans ce post! :wink:

le seul truc est que tout ce que j'ai trouvé sur le net, les valeurs des graph etaient toutes définies dans un truc du genre:
$var=array(X,Y,Z,...)

Je me dis que pê on pourrait essayer de monter un code ensemble, en donc je fourni ici le tableaude départ!
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

27 août 2005, 12:02

TU doutes de rien toi :D
Donc en clair, tu n'as pas la première ligne de PHP d'écrite si je saisis bien...

BOn, je vais faire un truc, mais il me faut un peu de temps. Je vais recopier le code de mon bouquin et tu joueras avec.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

27 août 2005, 12:07

Si tu peux faire ca et que ca marche... je serai la plus HEUREUSE des Sourris :lol:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

27 août 2005, 12:41

Bon voilà, je l'ai testé, ça fonctionne bien. Étudie-le, vois comment tu peux l'adapter à ce que tu veux faire. Note bien que je ne suispas un spécialiste des graphismes à partir de PHP.
<?php
function pc_bar_chart($question, $reponses)
{
    /* Définir les couleurs des différentes colonnes */
    $couleurs = array(array(255,102,0),
                      array(0,153,0),
                      array(51,51,204),
                      array(255,0,51),
                      array(255,255,0),
                      array(102,255,255),
                      array(153,0,204));
    $total = array_sum($reponses['votes']);
    
    /* Définir quelques valeurs d'espacement et d'autres nombres magiques */
    $remplissage = 5;
    $largeur_ligne = 20;
    $echelle = $largeur_ligne * 7.5;
    $hauteur_colonne = 10;
    
    $x = $y = $remplissage;
    
    /* Alloue une grande surface de dessin, puisque nous ne connaissons pas à l'avance la taille de l'image */
    $image = imagecreate(150, 500);
    $arriere_plan = imagecolorallocate($image, 224, 224, 224);
    $noir = imagecolorallocate($image, 0, 0, 0);
    
    /* Affiche la question */
    $formate = explode("\n", wordwrap($question, $largeur_ligne));
    foreach($formate as $ligne)
    {
        imagestring($image, 3, $x, $y, $ligne, $noir);
        $y += 12;
    }
    $y += $remplissage;
    
    /* Affiche les résultats */
    $nb_reponses = count($reponses['reponse']);
    for($i = 0; $i < $nb_reponses; $i++)
    {
        /* Formate les pourcentages */
        $pourcent = sprintf('%1.1f', 100 * $reponses['votes'][$i] / $total);
        $colonne  = sprintf('%d', $echelle * $reponses['votes'][$i] / $total);
        
        /* Utilise la couleur */
        $c = $i % count($couleurs); /* Gère les cas où il y a plus de colonnes que de couleurs définies au départ */
        $couleur_texte = imagecolorallocate($image, $couleurs[$c][0], $couleurs[$c][1], $couleurs[$c][2]);
        
        /* Dessine la colonne et les nombres en pourcentages */
        imagefilledrectangle($image, $x, $y, $x + $colonne, $y + $hauteur_colonne, $couleur_texte);
        imagestring($image, 3, $x + $colonne + $remplissage, $y, $pourcent ."%",$noir);
        $y += 12;
        
        /* Affiche la réponse */
        $formate = explode("\n", wordwrap($reponses['reponse'][$i], $largeur_ligne));
        foreach($formate as $ligne)
        {
            imagestring($image, 2, $x, $y, $ligne, $noir);
            $y += 12;
        }
        $y += 7;
    }
    
    /* Recadre l'image en la copiant */
    $histogramme = imagecreate(150, $y);
    imagecopy($histogramme, $image, 0, 0, 0, 0, 150, $y);
    
    /* Envoie l'image */
    header('Content-type: image/png');
    imagepng($histogramme);
    
    /* Libère la mémoire */
    imagedestroy($image);
    imagedestroy($histogramme);
}

/* Utilisation, exemple */
$question = "Quel type d'homme est-il vraiment?";
$reponses = array("reponse" => array(), "votes" =>array());

$reponses['reponse'][] = "Noble de raison";
$reponses['votes'][] = 29;

$reponses['reponse'][] = "Aux facultés infinies";
$reponses['votes'][] = 22;

$reponses['reponse'][] = "Admirable de forme, de mouvement et d'expression";
$reponses['votes'][] = 59;

$reponses['reponse'][] = "Comme un nage dans l'action";
$reponses['votes'][] = 45;

pc_bar_chart($question, $reponses);
?>
Enregistre-le tel quel sur ton serveur sans rien y changer et ouvre la page dans ton navigateur pour voir le résultat.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

27 août 2005, 20:07

alut!

Waou, je ne m'attendais pas a un code aussi détaillé! merci bcq!

je viens de le tester mais apparement il manque une fonction :shock:
Fatal error: Call to undefined function: imagecreate() in c:\php\easyphp1-7\www\ateliermeca\pages\test_graphique.php on line 31
tu sais ou je peux trouver la fonction imagecreate?
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

27 août 2005, 22:27

C'est une fonction PHP : quelle version de PHP utilises-tu et quelle version de la librairie GD ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

28 août 2005, 01:35

bonsoir,

Php: 4.3.3
Mysql:4.0.15
Apache:1.3.27

Je pense que le Pb vient de la librairie GD pose PB!!!
j'ai essayé de faire la manip que tu m'as donnée plus haut dans ce post mais je n'ai aucune info sur la lib GD. Lorsque je regarde sous php myadmin, voici ce que g comme fonction:

Code : Tout sélectionner

apache [ fonctions ] bcmath [ fonctions ] calendar [ fonctions ] com [ fonctions ] ctype [ fonctions ] ftp [ fonctions ] mysql [ fonctions ] odbc [ fonctions ] overload [ fonctions ] pcre [ fonctions ] session [ fonctions ] standard [ fonctions ] tokenizer [ fonctions ] wddx [ fonctions ] xml [ fonctions ] zlib [ fonctions ]
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

28 août 2005, 09:29

Tu as regardé ton phpinfo ? TU y trouveras la version de GD si elle est installée.

Petite note : php 4.3.3 : tu pourrais avantageusement mettre à jour, On est actuellement à la version 4.4.0 de PHP
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

28 août 2005, 12:18

salut Cyrano,

Mon application est en fait une grosse base de données dans laquelle st notamment sotckées des heures et de couts.

Le tableau sur lequel je vais mettre un graph sera composé d'une colonne avec les mois par exmple et une autre colonne avec la somme des heures travaillées par mois par exemple.
pour obtenir le heures par mois, je fais une requete.

au final, j'ai un tableau qui me donne le nombre d'heures parmois

je ne sais pas si c une explication comme ca que tu attendais :roll:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)