Mailinglisten-Archive |
>> Richtig, bei erheblichen Datenmengen ist es empfehlenswert, >> die Daten in Sessions abzulegen. So habe ich es realisiert: >> http://rtol.de/rti/statistik/statistik.php > Hallo René, > das sieht ja toll aus. Hast Du das alles aus dem Kopf gemacht, oder hast Du > ein kleines HowTo für mich? Mit Sessions habe ich noch nicht gearbeitet. Sicher "aus dem Kopf", ein HowTo kann ich nicht anbieten, aber vielleicht kannst Du mit dem folgenden Code was anfangen. statistik.php: <?php session_start(); include 'serverdaten.php'; $heute = date('Y-m-d'); if (!isset($_GET['Datum']) OR $_GET['Datum'] == 'heute') {$zeigDatum = $heute;} else {$zeigDatum = $_GET['Datum'];} // ich weiß, hier ist es noch nicht ausgereift if ($_GET['Anzahl'] > '' AND is_numeric($_GET['Anzahl'])) {$Anzahl_Tage = $_GET['Anzahl'];} else {$Anzahl_Tage = 21;} $streams = ARRAY('8092','2092','1092'); $verbindung = @mysql_connect($host, $user, $pass); // OR die (@mysql_error()); @mysql_select_db($db_2, $verbindung); // OR die (@mysql_error()); for($w = 0; $w < $Anzahl_Tage; $w++) { $n = 1; $query = " SELECT `datum`, SUBSTRING(`zeit`,1,13) AS Stunde, AVG("; foreach($streams AS $stream) {$query .= "`".$stream."`"; if($n++ < count($streams)) {$query .= " + ";}} $query .= ") AS schnitt_".$w." FROM `hoererzahlen` WHERE `datum` = SUBDATE('".$zeigDatum."', INTERVAL ".$w." DAY) GROUP BY Stunde ORDER BY Stunde ASC "; $m=0; $ergebnis = @mysql_query($query, $verbindung); // OR die (@mysql_error()); while($row = @mysql_fetch_array($ergebnis)) { $graph[$row['datum']][$m] = round($row['schnitt_'.$w]); $m++; } } foreach($graph as $graphen) {$graph1[] = $graphen;} foreach($graph as $datum => $graphen) {$datum1[] = intval(substr($datum,8,2));} $_SESSION['zahlen'] = $graph1; $_SESSION['daten'] = $datum1; session_write_close(); // Wichtig!!! ?> <img src="graph1.php" border="0" alt="Kurve" title="Kurve"> graph1.php: <?php $farben[] = 'red'; $farben[] = 'teal'; $farben[] = 'blue'; $farben[] = 'black'; $farben[] = 'yellow'; $farben[] = 'orange'; $farben[] = 'brown'; $farben[] = 'aqua'; $farben[] = 'silver'; $farben[] = 'purple'; $farben[] = 'navy'; $farben[] = 'chocolate'; $farben[] = 'maroon'; $farben[] = 'green'; $farben[] = 'gray'; $farben[] = 'darkmagenta'; $farben[] = 'darkslategray'; $farben[] = 'tomato'; $farben[] = 'plum'; $farben[] = 'violet'; $farben[] = 'lime'; $farben[] = 'lightseagreen'; $farben[] = 'turquoise'; $farben[] = 'thistle'; $farben[] = 'yellowgreen'; $farben[] = 'salmon'; $farben[] = 'saddlebrown'; $farben[] = 'royalblue'; $farben[] = 'palevioletred'; include "jpgraph.php"; include "jpgraph_line.php"; session_start(); $zahlen = $_SESSION['zahlen']; $daten = $_SESSION['daten']; $hoehe = count($zahlen) * 18; if ($hoehe < 400) {$hoehe = 400;} $graph = new Graph(1100,$hoehe); $graph->SetMarginColor('white'); $graph->SetScale("textlin"); $graph->SetFrame(false); $graph->SetMargin(148,10,30,30); $graph->ygrid->SetFill(true,'#EFEFEF at 0.5','#FFFFFF at 0.5'); $graph->xgrid->Show(); for ($ii = 0; $ii < count($zahlen); $ii++) { $p[$ii] = new LinePlot($zahlen[$ii]); $p[$ii]->SetColor($farben[$ii]); $p[$ii]->SetLegend($daten[$ii]); $graph->Add($p[$ii]); } $graph->legend->SetShadow('gray at 0.4',5); $graph->legend->SetPos(0.03,0.05,'left','top'); // Output line $graph->Stroke(); ?> Gruß René Thiel (Rennkuckuck) mailto:reti at rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://rtol.de - Dynamische Webseiten mit PHP, mySQL und CSS
php::bar PHP Wiki - Listenarchive