JPGRAPH depuis MYSQL

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 : JPGRAPH depuis MYSQL

Re: JPGRAPH depuis MYSQL

par moogli » 27 nov. 2011, 22:21

salut,

quand je vois
$sql= "CREATE TABLE IF NOT EXISTS `NOM1` (";
$sql .= "`id` int(11) NOT NULL ,";
$sql .= "`Day` text NOT NULL,";
$sql .= "`P1` text NOT NULL,";
$sql .= "`P2` text NOT NULL,";
$sql .= "`P3` text NOT NULL,";
$sql .= "`P4` text NOT NULL,";
$sql .= "`P5` text NOT NULL,";
$sql .= "`P6` text NOT NULL,";
$sql .= "`P7` text NOT NULL,";
$sql .= "`P8` text NOT NULL,";
$sql .= "`P9` text NOT NULL,";
$sql .= "`P10` text NOT NULL,";
$sql .= "`P11` text NOT NULL,";
$sql .= "`P12` text NOT NULL,";
$sql .= "KEY `id` (`id`)";
$sql .= ") ENGINE=MyISAM;";

Je vois un problème de conception tu devrais avoir une deuxième table qui contient les PX.
cela te permettrais une gestion plus souple de tous cela.

quand a ton soucis je ne comprend pas trop la question.

Tu veux créer la table à la volée ?

si tu prépare le système avant utilisation tu n'a pas besoin de la re créer.

Sinon avec mysql tu peux utiliser la requête "show tables" pour avoir la liste des tables accessible pour ton utilisateur et ainsi savoir si elle existe avec un traitement simple.

@+

Re: JPGRAPH depuis MYSQL

par josse34 » 27 nov. 2011, 21:35

Bonsoir,
Navré de pas être venu plus tôt mais je ne fait du PHP que le Week-End!
J'ai réussi à débloquer ma situation et pour finaliser mon code j'ai simplement besoin de savoir comment créer la table si elle n'existe pas car je ne souhaite pas utiliser la page installation avant utilisation.

Voici comment je procède actuellement :
Ma page Installation.php continent ce code :

Code : Tout sélectionner

<?php $host = "127.0.0.1"; /* L'adresse du serveur */ $login = "root"; /* Votre nom d'utilisateur */ $password = ""; /* Votre mot de passe */ $base = "eco_data"; /* Le nom de la base */ function connexion() { global $host, $login, $password, $base; $db = mysql_connect($host, $login, $password); mysql_select_db($base,$db); } connexion(); $sql= "CREATE TABLE IF NOT EXISTS `NOM1` ("; $sql .= "`id` int(11) NOT NULL ,"; $sql .= "`Day` text NOT NULL,"; $sql .= "`P1` text NOT NULL,"; $sql .= "`P2` text NOT NULL,"; $sql .= "`P3` text NOT NULL,"; $sql .= "`P4` text NOT NULL,"; $sql .= "`P5` text NOT NULL,"; $sql .= "`P6` text NOT NULL,"; $sql .= "`P7` text NOT NULL,"; $sql .= "`P8` text NOT NULL,"; $sql .= "`P9` text NOT NULL,"; $sql .= "`P10` text NOT NULL,"; $sql .= "`P11` text NOT NULL,"; $sql .= "`P12` text NOT NULL,"; $sql .= "KEY `id` (`id`)"; $sql .= ") ENGINE=MyISAM;"; mysql_query($sql) or die(mysql_error()); ?>
Une fois la base crée, il me suffit d’exécuter ce bout de code pour remplir la table :

Code : Tout sélectionner

$Day0006 = date("md"); $timestamp0006 = date("Hi"); $hostname0006 = "127.0.0.1"; $database0006 = "eco_data"; $username0006 = "root"; $password0006 = ""; $ECO0006 = mysql_pconnect($hostname0006, $username0006, $password0006) or trigger_error(mysql_error(),E_USER_ERROR); $insertSQL0006 = "INSERT INTO $PVname0006 (id, Day, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) VALUES ( $timestamp0006, $Day0006, $P1, $P2, $P3, $P4, $P5, $P6, $P7, $P8, $P9, $P10, $P11, $P12)"; mysql_select_db($database0006, $ECO0006); $invoer0006 = mysql_query($insertSQL0006, $ECO0006) or die(mysql_error());

C'est ce dernier code que je souhaite modifier pour que soit créer la table ou une des variables si elles n'existent pas.
Grand merci pour votre aide!
Bonne soirée

Re: JPGRAPH depuis MYSQL

par moogli » 13 nov. 2011, 13:13

Une idée?
une grosse oui : requête sql foireuse, mysql_query() retourne false donc mysql_fetch_assoc râle, il est aussi possible qu'il n'y ai pas d'enregistrement a retourner, au quel cas mysql_fetch_assoc est aussi inutile (voir la doc de mysql_query() pour savoir ce qui se passe dans tel cas).

je n'ai pas traité les cas où il n'y a pas d'enregistrement et où il y a un soucis, ce qui est probablement le cas ici.

ce code est à titre d'exemple, je ne connais pas la structure de la table.

j'espère que tu a rajouté la connexion au sgbd avant :)

@+

Re: JPGRAPH depuis MYSQL

par josse34 » 13 nov. 2011, 01:57

Bonsoir!
Merci mais je ne parviens pas à le faire fonctionner, cela tourne en boucle en affichant Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.1\www\TEST6.php on line 10
Une idée?
Merci!

Re: JPGRAPH depuis MYSQL

par moogli » 12 nov. 2011, 22:14

salut,

qu'a tu essayé ?

il suffit de faire un select et de remplir trois tableaux à partir de cela
A lire sur le sujet : http://phpdebutant.org/article63.php (et suivant :) )

ça peux donner ça
<?php
include ("src/jpgraph.php");
include ("src/jpgraph_line.php");
/* connexion sgbd a ne pas oublier */
$sql = 'select id,Y,Z from eco_data;';
$req = mysql_query($sql);
while ( ($data = mysql_fetch_assoc($req))!== false) {
    $xdata[] = $data['id'];
    $ydata[] = $data['Y'];
    $zdata[] = $data['Z'];
}

$graph = new Graph(500,300,"auto");
$graph->SetScale("textlin");
$graph->img->SetMargin(40,40,40,50);
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetTickLabels($xdata);
$graph->title->Set("Phoebus1");

$lineplot=new LinePlot($ydata);
$lineplot->SetColor("green");

$lineplot2=new LinePlot($zdata);
$lineplot2->SetColor("red");

$lineplot->SetLegend("Trimestre");
$lineplot2->SetLegend("Trimestre2");
$graph->Add($lineplot2);
$graph->Add($lineplot);

$graph->Stroke();
?>
pour ce qui est de ton système je te conseil plutôt de stoker date et heure afin de conserver un historique des données. Après il suffit juste de modifier la requete pour qu'elle récupérer les données du jour (ou pourquoi pas de la période) que l'on souhaite.

@+

JPGRAPH depuis MYSQL

par josse34 » 11 nov. 2011, 21:52

Bonjour à tous!
Je souhaite simplement récupérer les valeurs d'une base de donnée MySQL :

Code : Tout sélectionner

$host = "127.0.0.1"; $login = "root"; $password = ""; $base = "eco_data";
3 colonnes composent le tableau :
"id" est l'heure de saisie sous format HHMM
"Y" est une valeur variable
"Z" est une valeur variable

Voici le code exécuté régulièrement qui rempli la base de donnée :

Code : Tout sélectionner

$timestamp = date("Hi"); $hostname = "127.0.0.1"; $database = "eco_data"; $username = "root"; $password = ""; $ECO = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); $insertSQL = "INSERT INTO eco_data (id, Y, Z) VALUES ( $timestamp, $Y, $Z)"; mysql_select_db($database, $ECO); $invoer = mysql_query($insertSQL, $ECO) or die(mysql_error());

Voici donc le code PHP test actuel qui fonctionne :

Code : Tout sélectionner

<?php include ("src/jpgraph.php"); include ("src/jpgraph_line.php"); $ydata = array(112,42,557,553); $zdata = array(2778,2442,5444,4553); $xdata = array('A','B','C','D'); $graph = new Graph(500,300,"auto"); $graph->SetScale("textlin"); $graph->img->SetMargin(40,40,40,50); $graph->xaxis->SetFont(FF_FONT1,FS_BOLD); $graph->xaxis->SetTickLabels($xdata); $graph->title->Set("Phoebus1"); $lineplot=new LinePlot($ydata); $lineplot->SetColor("green"); $lineplot2=new LinePlot($zdata); $lineplot2->SetColor("red"); $lineplot->SetLegend("Trimestre"); $lineplot2->SetLegend("Trimestre2"); $graph->Add($lineplot2); $graph->Add($lineplot); $graph->Stroke(); ?>
Je souhaite donc me connecter à ma base de donnée et y afficher un graphique avec JPGRAPH en prenant les valeurs telles quelles :
$ydata = "Y"
$zdata = "Z"
$xdata = "id"

Par ailleurs, afin de faire fonctionner ce graphique chaque jour, j'ai besoin d'effacer toute la base du jour passé afin de remplir pour le jour actuel. En quelque sorte, si le jour actuel JJ est différent du jour JJ qui compose le "id" dans la base de donnée, alors il faut tout effacer.

Grand merci pour votre aide et bonne soirée!!

Bye