PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 28-09-2010 14:34:24

Cyril76140
Membre
Inscription : 28-09-2010
Messages : 4

Graphique simple avec base de données Mysql

Bonjour à tous, je suis Cyril et suis nouveau débutant en PHP ainsi que sur votre forum.

Voila j'ai une petite question sur un code de graphique que j'ai modifié mais je n'arrive pas à le faire fonctionner, en fait mon problème se situe au niveau de l'axe ( x) auquel je n'arrive pas à affecter mes données mysql.

Voivi mon morceau de code:

<?php
include './includes/configessai.php';
 
@mysql_connect($serveurBD,$nomUtilisateur,$motDePasse)
    or die("Impossible de se connecter au serveur de bases de données.");
 
@mysql_select_db($baseDeDonnees)
    or die("Cette base de donnees n'existe pas");
 
$sql = "SELECT `Temperature` FROM `domotique`.`logtemp` LIMIT 0, 1000 ";
 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
while($data = mysql_fetch_assoc($req))

include './Artichow/LinePlot.class.php';
   $graph = new Graph(1200, 800);
   $graph->setAntiAliasing(TRUE);
   
   //$values = array(0, 4, 5, 0, 3, 6, 0);

   $values = $data['temperature'];

   $plot = new LinePlot($values);

   $plot->setBackgroundGradient(
      new LinearGradient(
         new Color(210, 210, 210),
         new Color(250, 250, 250),
         0
      )
   );
   $plot->yAxis->setLabelPrecision(1);
   $plot->setSpace(0, 10, NULL, NULL);
   
   $graph->add($plot);
   $graph->draw();
   mysql_close();
?>

Voila donc si quelqu'un pouvait m'aider à afficher mes données ca serai sympa.
merci d'avance

Hors ligne

#2 28-09-2010 15:12:48

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Graphique simple avec base de données Mysql

Le soucis vient de ta compréhension de la boucle while.
Dans ton cas elle exécute la ligne include et c'est tout, ensuite on sort de la boucle et on exécute le reste.

Donc on pourrai ressortir le "quand on prend un code il faut passer du temps à le comprendre"...

$values doit être affecté à l'intérieur de la boucle while.
Et ce de manière à créer un tableau avec les différentes itérations, donc :

$values[] = $data['temperature']; // création d'un nouvel index dans le tableau à chaque interprétation de la ligne

Hors ligne

#3 28-09-2010 15:30:33

Cyril76140
Membre
Inscription : 28-09-2010
Messages : 4

Re : Graphique simple avec base de données Mysql

Merci xTG pour ta réponse.
pour le "quand on prend un code il faut passer du temps à le comprendre", ca fait donc maintenant 8h que je suis dessus.
mais en fait comme je l'ai dit dans mon message, je suis débutant. et ce depuis hier lol c'est très recent.

alors voila je comprent pas ta réponse, il faut que je change de place $values[] = $data['temperature']; ?

Hors ligne

#4 28-09-2010 16:28:42

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Graphique simple avec base de données Mysql

Okay donc petit cours dans ce cas. smile

<?php
$tab = array(1,2,3,4,5); // déclaration d'un tableau

// Exemple 1
while( $var = next($tab) )
  printf("Valeur : %s",$var);
  printf("Un message");
/* Affichera :
    Valeur : 2Valeur : 3Valeur : 4Valeur : 5Un message
    La valeur 1 n'est pas prise en compte car on lit la suivante dans la boucle
    Tu remarqueras que le second printf n'est pas pris en compte dans la boucle mais en dehors !
*/

printf("<br /><br />");
reset($tab); // on remet le pointeur du tableau au début (sur la valeur 1)

// Exemple 2
while( $var = current($tab) )
{
    printf("Valeur : %s",$var);
    printf("Un message");
    next($tab);
}
/* Affichera :
    Valeur : 1Un messageValeur : 2Un messageValeur : 3Un messageValeur : 4Un messageValeur : 5Un message
    Prise en compte du second printf à l'intérieur de la boucle
*/

   
?>

Hors ligne

#5 28-09-2010 16:52:14

Cyril76140
Membre
Inscription : 28-09-2010
Messages : 4

Re : Graphique simple avec base de données Mysql

bon apparement j'ai reussi merci xTG

il ne me reste plus qu'a ajouter mes autres colonnes de données et faire d'autres courbes...

le code pour ceux que ca peut interresser :

<?php
include './includes/configessai.php';
   
@mysql_connect($serveurBD,$nomUtilisateur,$motDePasse)
        or die("Impossible de se connecter au serveur de bases de données.");
   
@mysql_select_db($baseDeDonnees)
        or die("Cette base de donnees n'existe pas");
   
$sql = "SELECT `D70000026B87D428` FROM `domotique`.`logtemp` LIMIT 0, 20 ";
   
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
   
include './Artichow/LinePlot.class.php';
   $graph = new Graph(1200, 800);
   $graph->setAntiAliasing(TRUE);
   
   while($data = mysql_fetch_assoc($req))
{
    //echo '<p align=center>'.'</b>'.' '.$data['D70000026B87D428'].' &degC'.'<br>'.'<br>';
 
   $values[] = $data['D70000026B87D428'];
   $plot = new LinePlot($values);

   $plot->setBackgroundGradient(
      new LinearGradient(
         new Color(210, 210, 210),
         new Color(250, 250, 250),
         0
      )
   );
 
   $plot->yAxis->setLabelPrecision(1);
   $plot->setSpace(0, 10, NULL, NULL);
   
   $graph->add($plot);
 }
   $graph->draw();
 
   mysql_close();
?>

Hors ligne

#6 28-09-2010 17:41:48

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Graphique simple avec base de données Mysql

Saluton,
Si je puis me permettre : Artichowet ça n'a rien à voir avec ma localisation en Bretagne.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums