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

Langage PHP Discussion :

remplir un tableau avec une boucle while


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut remplir un tableau avec une boucle while
    Bonsoir,
    je voudrai générer un camembert en php. J'ai ce code que j'ai trouvé sur google.charts et qui fonctionne très bien:
    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
    <html>
      <head>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
          google.load("visualization", "1", {packages:["corechart"]});
          google.setOnLoadCallback(drawChart);
          function drawChart() {
            var data = google.visualization.arrayToDataTable([
              ['Task', 'Hours per Day'],
              ['Work',     11],
              ['Eat',      2],
              ['Commute',  2],
              ['Watch TV', 2],
              ['Sleep',    7]
            ]);
     
            var options = {
              title: 'My Daily Activities'
            };
     
            var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
      </head>
      <body>
        <div id="chart_div" style="width: 900px; height: 500px;"></div>
      </body>
    </html>
    les valeurs du tableau "data" vont être récupérée depuis une table SQL dans mon cas. Pour commencer , je voudrai alors faire en sorte que ce tableau soit remplie à l'aide d'une boucle while (puisque le nombre de lignes et variable).
    j'ai cherché un peu sur google, mais quelque soit la modification que j'apporte au script, le navigateur me renvoie une page banche.

    comment faire?
    merci

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Il existe des super librairies pour ça dont JpGraph

    Et il y a un tas d'exemples ici : http://jpgraph.net/doc/howto.php

  3. #3
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut
    merci mais je préfère travailler avec google charts. Les graphes sont magnifiques et puis si on a des codes tout prêt pourquoi se casser la tête avec une autre librairie

    Existe-t-il au moins une autre librairie pour réaliser de tels graphiques, Jpgraph fait des graphes vraiment trop laid par rapport à google, je cherche des graphes un peu plus élégants.

    Merci beaucoup.

  4. #4
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Par défaut
    Parce que l'autre bibliothèque propose aussi des codes prêt à l'emploi ? Mais passons...

    C'est pas compliqué ton histoire, il te suffit de générer ceci par du PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var data = google.visualization.arrayToDataTable([
      ['Task', 'Hours per Day'],
      ['Work',     11],
      ['Eat',      2],
      ['Commute',  2],
      ['Watch TV', 2],
      ['Sleep',    7]
    ]);
    Comme tu l'as dit, il te faut une boucle while qui parcourt un jeu d'enregistrement. Je ne vois pas où tu butes

    À la limite, si t'es disposé à le faire, montre nous ton code PHP qu'on voit ce qui cloche.
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

  5. #5
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2012
    Messages : 324
    Par défaut
    voici le code que j'ai fais, le problème c'est que je n'ai même pas de messages d'erreur, la page web est tout simplement blanche.
    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
    <?php
    $cnx=mysql_connect("localhost","root","Orange2424");
    $db=mysql_select_db("OrangeTunisie");
    mysql_set_charset('utf8'); // encodage de saisie dans la base
    ?>
    <html>
      <head>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
          google.load("visualization", "1", {packages:["corechart"]});
          google.setOnLoadCallback(drawChart);
          function drawChart() {
            var data = google.visualization.arrayToDataTable([
            ['Mask_Length', 'Number'],
            $sql = 'select * from Mask_Statistics';
            $req = mysql_query($sql);
     
            while($data = mysql_fetch_assoc($req))
                {
                  [$data[Mask_Length],  $data[Percentage]],
                } 
            ]);
     
            var options = {
              title: 'My Daily Activities'
            };
     
            var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
      </head>
      <body>
        <div id="chart_div" style="width: 900px; height: 500px;"></div>
      </body>
    </html>

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    il manque les balises <?php pour encadrer ta boucle php dans le Javascript
    et à mon avis il faut déplacer ces instruction en bas de page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script type="text/javascript">
    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(data, options);
    </script>
    Pour que le code JS soit executé car là il est dans le <head> mais la div n'apparait qu'après

  7. #7
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Par défaut
    Et comme ça ?

    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
    <?php
    $cnx = mysql_connect("localhost","root","Orange2424");
    $db = mysql_select_db("OrangeTunisie");
    mysql_set_charset('utf8'); // encodage de saisie dans la base
    ?>
    <html>
      <head>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
          google.load("visualization", "1", {packages:["corechart"]});
          google.setOnLoadCallback(drawChart);
          function drawChart() {
            var data = google.visualization.arrayToDataTable([
            ['Mask_Length', 'Number'],
    		<?php
            $sql = 'select * from Mask_Statistics';
            $req = mysql_query($sql);
     
            while($data = mysql_fetch_assoc($req)) {
                echo '[' . $data['Mask_Length'] . ',  ' . $data['Percentage'] . '],';
                } 
    		?>
    		]);
     
            var options = {
              title: 'My Daily Activities'
            };
     
            var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
      </head>
      <body>
        <div id="chart_div" style="width: 900px; height: 500px;"></div>
      </body>
    </html>
    Au passage :
    - y a pas de doctype
    - faut laisser tomber les fonctions mysql_* au profit de PDO
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

Discussions similaires

  1. [XL-2010] remplir un tableau avec une boucle
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2013, 16h58
  2. [MySQL] Remplir un tableau associatif avec une boucle while
    Par Palsajicoco dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/07/2009, 10h59
  3. Break avec une boucle while
    Par hallaj dans le forum Langage
    Réponses: 6
    Dernier message: 22/07/2008, 19h36
  4. [MySQL] Remplir un tableau avec une requête
    Par comme de bien entendu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/06/2007, 12h27
  5. [MySQL] affichage d'une liste avec une boucle while
    Par Invité dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/01/2007, 21h19

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