Algemeen forum ontrent de ontwikkelng, design en hosting van weergerelateerde websites (dit laatste om een beetje on topic te blijven)
Door Dropje
#46712
Ik probeer al een tijdje mbv JPGRAPH grafieken te genereren vanuit mijn MySQL db.
Op zich gaat het goed maar kijg ik niet voor elkaar om de "RecDate" (timestamp) van de waarnemingen als X-as te gebruiken. Ik gebruik als weersoftware VWS en de "RecDate" heeft het volgende format: yyyymmddhhmm
Ik heb niet voldoende PHP kennis. Wie kan me helpen? Alvast dank.
Hieronder een deel van de code:
....


Code: Selecteer alles
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
if (!$db)
   {
   die ('could not connect: '. mysql_error());
   }
mysql_select_db($dbdatabase, $db);
//
$sql = "SELECT * FROM `weather` ORDER BY `weather`.`RecDate` DESC LIMIT 0 , 144 ;";
$result = mysql_query($sql);

// Some data

while ($row=mysql_fetch_array($result)) {
    $datay[] = $row['OutdoorTemperature'];

   $datax[] = $row['RecData'];

   }

//
//   array_push($datay, $row['OutdoorTemperature']);
//   array_push($datax, $row['RecData']);

$ydata=array_reverse($datay);
$xdata=array_reverse($datax);
//datum omzetten
//$xdata=strftime('%y%m%d%H%m');
list($year,$mon,$day,$hour,$min)=sscanf($xdate,"%4s%2s%2s%2s%2s");
$RecDate = ("$year$mon$day$hour$min");

// Create the graph. These two calls are always required
$graph = new Graph(540,300);
$graph->SetScale('datelin');
$graph->title->Set("Temperatuur van de laatste 24 uur");
//$graph->xaxis->SetTickLabels($RecDate);
$graph->xaxis->SetTextLabelInterval(2);
$graph->xaxis->SetPos( 'min' );

// Create the linear plot
$lineplot=new LinePlot($ydata,$RecDate);
$lineplot->SetColor('blue');

// Add the plot to the graph
$graph->Add($lineplot);

// Display the graph
$graph->Stroke();
mysql_close($db);
?>

zo ziet het er nu uit http://www.theo-hamburger.nl/jpgraph/examples/temperature_1.php
Door wsEpe
#46720
Ik zou zoiets andersom doen; eerst tijd omzetten en dan in een array doen ipv andersom. Ik weet niet welke data je precies in de x-as wilt hebben, maar hieronder een voorbeeld hoe je yyyymmddhhmm (bijv. 201202041930) omzet naar H:i (bijv. 19:30).

Code: Selecteer alles
$timestamp = $row['RecData'];  
$timestamp_unix = strtotime ($timestamp);
$timestamp_hi = date("H:i", $timestamp_unix); 
array_push($datax, $timestamp_hi); 
Door Dropje
#46749
Dank voor het advies, ga er mee aan de gang. Eerste vlugge "cut&paste" had nog niet het gewenste effect.
vrgr
Theo