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

PHP & Base de données Discussion :

Problème de création d'un histogramme avec connexion PDO


Sujet :

PHP & Base de données

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 1
    Par défaut Problème de création d'un histogramme avec connexion PDO
    Bonjour,
    j'ai suivi ce cours pour créer un histogramme http://andry.developpez.com/tutoriel...e=page_1#LII-C

    J'ai tout d'abord essayer de m'inspirer du code du cours puis de le changer en mettant mes valeurs, mais je n'avais aucun résultat. J'ai donc essayé de copier/coller intégralement le code qu'il y a sur le cours en créantla même base de données que celle du cours, mais rien n'y fait lorsque j'intègre l'image du graphe elle ne s'affiche pas et lorsque je me rend directement sur le image.php rien ne s'affiche non plus, j'ai simplement un écran noir.

    Je précise que je débute et que je ne comprends pas forcément tout du code présent sur le tuto.

    Voici le code et je ne vous met pas celui de mon deuxième test étant donné que c'est un copié collé du code du tuto.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?php 
    $host="localhost";
    $utilisateur="root";
    $motdepasse="";
    $base="arrets";
    $conexion = new PDO('mysql:host='.$host.';dbname='.$base, $utilisateur, $motdepasse);
    $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sqlQuery = "SELECT type as type, sum(duree) as duree from arret group by type order by sum(duree) desc";
    $sth = $conexion->prepare($sqlQuery, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    $result = $sth->fetchAll(PDO::FETCH_OBJ);
    $i=0;
    $js=array();
    foreach($result as $row)
    {
        //Prendre la premiere quantite vendue comme le minimum et maximum
    	//Mettre les noms de produit et les mois de ventes dans des tableaux
    	if($i==0)
        {
            $min=$row->duree;
            $max=$row->duree;
            array_push($js, $row->type);
        }
     
    	//Inserer le mois de vente dans le tableau s'il n'est pas encore enregistrer
        if(!in_array($row->type,$js))
            {
                array_push($js, $row->type);
            }
     
        if($row->duree < $min)
    		{
    			$min=$row->duree;
    		}
        else
    		{
    			if($row->duree > $max)
    				{$max=$row->duree;}
    		}
        $i++;
    }
     
     
     
    //type mime de l'image
    header('Content-type: image/png');
    //Chemin vers le police à utiliser
    $font_file = './arial.ttf';
    //Adapter la largeur de l'image par rapport au nombre de ligne et nombre de mois
    $largeur=$i*20+(count($js)*10)+100;
    $hauteur=400;
    $absis=80;
    $courbe=imagecreatetruecolor($largeur, $hauteur);
    //Générer un tableau de couleurs
    $couleur=array();
    $red=85;
    $blue=85;
    $green=85;
     
        $couleur[$n]=imagecolorallocate($courbe, $red,$green , $blue);
     
    //Les autre couleurs utils
    $ligne=imagecolorallocate($courbe, 220, 220, 220);
    $fond=imagecolorallocate($courbe, 250, 250, 250);
    $noir=imagecolorallocate($courbe, 0, 0, 0);
    $blanc=imagecolorallocate($courbe, 255, 255, 255);
    $rouge=imagecolorallocate($courbe, 255, 0, 0);
    //Colorer le fond
    imagefilledrectangle($courbe,0 , 0, $largeur, $hauteur, $fond);
    //Tracer l'abscisse et l'ordonnée
    imageline($courbe, 50, $hauteur-$absis, $largeur-10,$hauteur-$absis, $noir);
    imageline($courbe, 50,$hauteur-$absis,50,20, $noir);
    if($min!=0)
    {
        $absis+=30;
        $a=30;
    }
    $nbOrdonne=10;
    //Calculer les échelles suivants les abscisses et ordonnées
    $echelleX=($largeur-90-((count($js)*10)))/$i;
    $echelleY=($hauteur-$absis-20)/$nbOrdonne;
    $i=$min;
    $py=($max-$min)/$nbOrdonne;
    $pasY=$absis;
    //Tracer les grides
    while($pasY<($hauteur-19))
    {
        imagestring($courbe, 2,10 , $hauteur-$pasY-6, round($i), $noir);
        imageline($courbe, 50, $hauteur-$pasY, $largeur-20,$hauteur-$pasY, $ligne);
        $pasY+=$echelleY;
        $i+=$py;
    }
     
     
     
    $pasX=60;
     foreach($result as $row)
     {
            //Ecrire le mois en Français en abscisse
    		imagestring($courbe, 2, $pasX,$hauteur-$absis+32 , type, $noir);
    		//Décaller 10 px du mois précédent
            $pasX+=10;
     
       //Calculer la hauteur de la rectangle
       $y=($hauteur) -(($row->duree -$min) * ($echelleY/$py))-$absis;
       //Prendre la couleur correspondante au produit
       $im = imagecreatetruecolor(55, 30);
       $white = imagecolorallocate($im, 255, 255, 255);
       //Dessiner le rectangle
       imagefilledrectangle($courbe,$pasX-10 , $hauteur-$absis+$a, $pasX+10, $y, $white);
       //Ecrire la valeur en verticale
       imagefttext($courbe, 10, 270, $pasX-3, $y+5, $blanc, $font_file, $row->duree);
       //Decaller le prochain rectangle
       $pasX+=$echelleX;
    }
     
    imagepng($courbe);
    imagedestroy($courbe);
    ?>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Commente ces lignes pour voir les erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //header('Content-type: image/png');
    ...
     
    //imagepng($courbe);
    //imagedestroy($courbe);
    A+.

Discussions similaires

  1. [Doctrine] problème de création de base mysql avec Symfony et Doctrine
    Par maarek dans le forum ORM
    Réponses: 1
    Dernier message: 15/12/2011, 10h23
  2. Problème de création d'une fenêtre avec du texte
    Par lucciana dans le forum Débuter
    Réponses: 4
    Dernier message: 08/06/2011, 15h27
  3. Problème de création d'un String avec des caractères
    Par titi42 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/09/2009, 16h19
  4. Réponses: 1
    Dernier message: 09/09/2008, 11h16
  5. Problème de création de boite exchange et connexion
    Par Djsarkndp dans le forum Exchange Server
    Réponses: 1
    Dernier message: 11/10/2007, 18h47

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