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 :

Statistiques par rapport a nombres de lignes sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 142
    Points : 125
    Points
    125
    Par défaut Statistiques par rapport a nombres de lignes sql
    Bonjour à tous,

    Inutile de vous dire que je suis complètement desespéré je transpire le code tellement ça deviens compliqué pour moi !

    Donc je vous explique je voudrais faire un outil de statistique qui irai chercher les infos dans une bdd (que je ne controle pas) et qui les afficherais sous forme de diagramme. L'affichage du diagramme fonctionne SAUF que mes valeurs sont fausse ou tout du moins elles sont bonne que pour le mois courant et mon diagramme n'affiche pas non plus les valeurs des mois derniers ! Ma requete doit etre fausse ensuite mon code n'est pas tres beau j'en suis conscient !

    voici ma bdd:

    Nom : Sans titre.png
Affichages : 271
Taille : 165,0 Ko

    Voici mon code:
    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
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
     
    <html>
    <head>
    <title>
    </title>
    </head>
    <body>
    <img  style='position:absolute;' src='img/CACB-logo-generique-couleur.png'></img>
     
    <center><h2>Statistiques Borne Signalez-Vous</h2></center><br><br>
    <br><br>
    <br><br><br>
     
    <?php 
     
    // Paramètres pour accéder à ta base MysQl 
    $host = "nedim-accueil.fr"; 
    $user = "nedim_ca"; 
    $password = "cGMP8v3QfncsGWsL"; 
    $bdd = "ca_tb_champbourg"; 
     
    // Connection à ta Base MySql 
    mysql_connect($host, $user, $password) or die ("impossible de se connecter au serveur" ); 
    mysql_select_db($bdd) or die ("impossible de se connecter a la base de donnees" ); 
     
    // Ta requête (ta question) 
    $sql = "SELECT * FROM MessageAccueil WHERE month(DateCreationMessage)=month(now()) AND year(DateCreationMessage)=year(now()) AND IDAgence = 27"; 
    $sql2 = "SELECT DISTINCT month(DateCreationMessage) FROM MessageAccueil WHERE month(DateCreationMessage)=month(now()) AND year(DateCreationMessage)=year(now()) AND IDAgence = 27";
    // Son résultat (réponse à ta qestion) 
    $resultat=mysql_query($sql); 
    $resultat2=mysql_query($sql2); 
    // Eventuellement le nombre de réponse à ta question 
    $nombre_de_reponse=mysql_num_rows($resultat); 
    $nombre_de_reponse2=mysql_num_rows($resultat2); 
     
     
     
    while($ligne = mysql_fetch_array($resultat2)) 
    { 
    	if (@$ligne["month(DateCreationMessage)"] == 1)
      $janvier = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 2)
      $fevrier = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 3)
      $mars = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 4)
      $avril = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 5)
      $mai = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 6)
      $juin = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 7)
      $juillet = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 8)
      $aout = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 9)
      $septembre = $nombre_de_reponse;
      $fp = fopen('file.csv', 'w');
     
        fputcsv($fp, $nombre_de_reponse);
     
     
    fclose($fp);
     
     
    if (@$ligne["month(DateCreationMessage)"] == 10)
      $octobre = $nombre_de_reponse;
    if (@$ligne["month(DateCreationMessage)"] == 11)
      $novembre = $nombre_de_reponse;
     
     
     if (@$ligne["month(DateCreationMessage)"] == 12)
      $decembre = $nombre_de_reponse;
    } 
     
    /* pChart library inclusions */
     include("/class/pData.class.php");
     include("/class/pDraw.class.php");
     include("/class/pImage.class.php");
     
     /* Create the pData object with some random values*/
     $MyData = new pData(); 
     $MyData->addPoints(array(@$janvier,@$fevrier,@$mars,@$avril,@$mai,@$juin,@$juillet,@$aout,@$septembre,@$octobre,@$novembre,@$decembre),"Dijon Darcy");
     
     $MyData->addPoints(array("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"),"Labels");
     $MyData->setAbscissa("Labels");
     
     /* Create the pChart object */
     $myPicture = new pImage(1300,750,$MyData);
     
     /* Create a solid background */
     $Settings = array("R"=>255, "G"=>255, "B"=>255, "Dash"=>1, "DashR"=>199, "DashG"=>237, "DashB"=>111);
     $myPicture->drawFilledRectangle(0,0,1300,750,$Settings);
     
     /* Do a gradient overlay */
     $Settings = array("StartR"=>255, "StartG"=>231, "StartB"=>255, "EndR"=>43, "EndG"=>107, "EndB"=>58, "Alpha"=>50);
     $myPicture->drawGradientArea(0,0,1300,750,DIRECTION_VERTICAL,$Settings);
     $myPicture->drawGradientArea(0,0,1300,20,DIRECTION_VERTICAL,array("StartR"=>0,"StartG"=>0,"StartB"=>0,"EndR"=>50,"EndG"=>50,"EndB"=>50,"Alpha"=>100));
     
     /* Add a border to the picture */
     $myPicture->drawRectangle(0,0,1299,749,array("R"=>0,"G"=>0,"B"=>0));
     
     /* Write the picture title */ 
     $myPicture->setFontProperties(array("FontName"=>"fonts/Silkscreen.ttf","FontSize"=>8));
     $myPicture->drawText(10,13,"Evolution du nombre d'appels via la borne",array("R"=>255,"G"=>255,"B"=>255));
     
     /* Draw the scale */
     $myPicture->setFontProperties(array("FontName"=>"fonts/Forgotte.ttf","FontSize"=>16));
     $myPicture->setGraphArea(50,60,1270,710);
     $myPicture->drawFilledRectangle(50,60,1270,730,array("R"=>255,"G"=>255,"B"=>255,"Surrounding"=>-200,"Alpha"=>10));
     $myPicture->drawScale(array("CycleBackground"=>TRUE));
     
     /* Graph title */
     $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
     $myPicture->drawText(50,52,"Nombre d'appels",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMLEFT));
     
     /* Draw the bar chart chart */
     $myPicture->setFontProperties(array("FontName"=>"fonts/Forgotte.ttf","FontSize"=>12));
     $MyData->setSerieDrawable("Last year",FALSE);
     $myPicture->drawBarChart();
     $myPicture->drawPlotChart(array("DisplayValues"=>TRUE,"PlotBorder"=>TRUE,"BorderSize"=>4,"Surrounding"=>-80,"BorderAlpha"=>90));
     /* Draw the line and plot chart */
     
     /* Make sure all series are drawable before writing the scale */
     $MyData->setSerieDrawable("This year",TRUE);
     
     /* Write the legend */
     $myPicture->drawLegend(540,35,array("Style"=>LEGEND_ROUND,"Alpha"=>20,"Mode"=>LEGEND_HORIZONTAL));
     
     /* Render the picture (choose the best way) */
     $myPicture->Render("img/example.combo.png");
     ?>
     <center><img src="img/example.combo.png"></img></center>
    A l'aide s'il vous plait ^^

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Vire moi ce mot de passe tout de suite ! (et change le aussi par la même occasion, parce que c'est déjà trop tard)

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 142
    Points : 125
    Points
    125
    Par défaut
    Faux mot de passe bien sur

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 142
    Points : 125
    Points
    125
    Par défaut
    Personne ?

  5. #5
    Membre régulier Avatar de moogli
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 58
    Points : 102
    Points
    102
    Par défaut
    Salut,

    Commence par tester la requête et la faire de façon a ce qu'elle retourne ce que tu souhaite.

    la elle ne peux retourner des données que pour le mois en cours. (month(DateCreationMessage)=month(now()) ).

    il faut savoir ce que tu veux et l'exprimer en SQL.

    si par exemple ce que tu veux c'est le volume de vente par mois pour une agence il te faut utiliser une clause group by
    [sql]select count(1) as nbvte, month(datecreationmessage) as mois from MessageAccueil group by month(datecreationmessage) order by mois asc[/sql]

    tu veux les mois en texte, c'est réalisable avec une fonction mysql perso

    Code sql : 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
    DELIMITER |
    CREATE FUNCTION getMonthInFrench(mois INT(1))
      RETURNS VARCHAR(20)
      CHARACTER SET utf8
    DETERMINISTIC
      SQL SECURITY INVOKER
      BEGIN
     
        DECLARE retour VARCHAR(20)
        CHARACTER SET utf8;
     
        CASE mois
          WHEN 1
          THEN SET retour = 'Janvier';
          WHEN 2
          THEN SET retour = 'Février';
          WHEN 3
          THEN SET retour = 'Mars';
          WHEN 4
          THEN SET retour = 'Avril';
          WHEN 5
          THEN SET retour = 'Mai';
          WHEN 6
          THEN SET retour = 'Juin';
          WHEN 7
          THEN SET retour = 'Juillet';
          WHEN 8
          THEN SET retour = 'Août';
          WHEN 9
          THEN SET retour = 'Septembre';
          WHEN 10
          THEN SET retour = 'Octobre';
          WHEN 11
          THEN SET retour = 'Novembre';
          WHEN 12
          THEN SET retour = 'Décembre';
        END CASE;
     
        RETURN retour;
      END
     
    |
    delimiter ;
    par exemple
    le select devient
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
      count(1)                                     AS nbvte,
      month(datecreationmessage)                   AS mois,
      getMonthInFrench(month(datecreationmessage)) AS moisFr
    FROM latable
    GROUP BY month(datecreationmessage)
    ORDER BY mois ASC

    ensuite tu peux ajouter dynamiquement les infos aux objets pchart ou simplement créer les tableaux qui vont bien a partir du résultat de la requête.


    @+

    ps : copie de ma réponse sur phpfrance

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 142
    Points : 125
    Points
    125
    Par défaut
    Merci moogli !!

    Grâce à toi ce problème est résolu, jusqu'au prochain d'ailleurs sit u veux bien y jeter un oeil c'est toujours par rapport à pchart...

    http://www.developpez.net/forums/d14...d/#post7985215

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/01/2012, 21h41
  2. Compter le nombre de lign sql
    Par thebarbarius dans le forum Langage
    Réponses: 3
    Dernier message: 13/01/2012, 20h25
  3. Réponses: 12
    Dernier message: 03/01/2011, 14h01
  4. [Turbo Pascal] Calculer le net à payer par rapport au nombre de copies
    Par agan2012 dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 21/11/2008, 19h54
  5. [Conception] Performances par rapport à un nombre élevé de requêtes INSERT
    Par phicarre dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/01/2008, 12h03

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