graphique d'apres une BdD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : graphique d'apres une BdD

par Cyrano » 28 août 2005, 18:48

Première suggestion : sauvegarder tes fichier qui sont sur ton server www

seconde suggestion, installer WAMP

par FAbrice » 28 août 2005, 18:41

ben je pense que la, la mise a jour va etre la bienvenue ;=)

qu'est ce que je dois installer?

par Cyrano » 28 août 2005, 18:39

Peut-être qu'une mise à jour serait opportune ?

par FAbrice » 28 août 2005, 18:33

nan, je viens de regarder et la lib GD n'est pas présente!
Pour installer php, g installé easy php!
est ce que ca peut venir de la?
sinon, comment est ce que je peux faire pour l'installer?

par Cyrano » 28 août 2005, 17:48

NOrmalement, elle est installée par défaut avec PHP : as-tu bien vérifié ton phpinfo ?

par FAbrice » 28 août 2005, 17:44

alut,

la librairie GD ne semble pas etre présente :=(
comment est ce que je peux l'installer?

par Cyrano » 28 août 2005, 12:26

Pas spécialement pour l'instant: as-tu réglé le problème de fonction imageCreate ?

Pour ton application, tu dois reprendre le même schéma que le script à cette différence près que tu mets des données en provenance de la base de données dans la partie utilisation.

par FAbrice » 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:

par Cyrano » 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

par FAbrice » 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 ]

par Cyrano » 27 août 2005, 22:27

C'est une fonction PHP : quelle version de PHP utilises-tu et quelle version de la librairie GD ?

par FAbrice » 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?

par Cyrano » 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.

par FAbrice » 27 août 2005, 12:07

Si tu peux faire ca et que ca marche... je serai la plus HEUREUSE des Sourris :lol:

par Cyrano » 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.