next up previous contents
Next: Erklärung Up: Quellcode Previous: diff_count.php4   Contents


count.php4


<?php
  /*******************************************
  /* Programm count.php4
  /* displays data selected in menugraph.php4
  /* (c) Copyright 2002, Jens Bierkandt
  /* e-mail: jens@bierkandt.org
  /* Entstanden im Rahmen meiner Diplomarbeit
  /*******************************************
  */
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  // Date in the past
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "
    GMT");
  // always modified
  header("Cache-Control: no-store, no-cache,
    must-revalidate");
  // HTTP/1.1
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: public");
  set_time_limit(60);
  include ("jpgraph-1.6.1/src/jpgraph.php");
  include ("jpgraph-1.6.1/src/jpgraph_line.php");
  include ("/home/schtorch/public_html/diplom/config.php4");
  // Check variables and initialize
  if (!isset($table))
  Header("Location: index.php4"); // Forward user to main
    page to reselect table
  //if (!isset($sensor[0])) $sensor[0]="1";
  if (!(isset($width_graph) || isset($height_graph))) {
    $width_graph = 600;
    $height_graph = 400;
  };
  if ($width_graph < 600 || $height_graph < 400) {
    $width_graph = 600;
    $height_graph = 400;
  };
  // Initialize connection to DB
  $db = mysql_connect($hostname, $username, $password);
  mysql_select_db($database, $db);
  echo mysql_error();
  // Prefill array to have continuous data
  $count_min = 127;
  $count_max = 0;
  for ($b = 0; $b < sizeof($sensor); $b++) {
    $result = mysql_query("SELECT
      MIN(sensor".$sensor[$b]."),
      MAX(sensor".$sensor[$b].") FROM `tmp`", $db);
    echo mysql_error($db);
    $row = mysql_fetch_row($result);
    if (round($row[0]) < $count_min) $count_min =
      round($row[0]);
    if (round($row[1]) > $count_max) $count_max =
      round($row[1]);
  }
  //echo $count_max."\n";
  for ($i = 0; $i <= ($count_max-$count_min); $i++) {
    $datax[$i] = $i+$count_min;
    //echo $datax[$i]." ";
    for ($b = 0; $b < sizeof($sensor); $b++) {
      $ydata[$b][$i] = "";
    }
  }
  // Select data
  for ($b = 0; $b < sizeof($sensor); $b++) {
    $query = "SELECT count(*), round(sensor".$sensor[$b].")
      FROM `tmp` WHERE sensor".$sensor[$b]."!='' GROUP BY
      ROUND(sensor".$sensor[$b].") ASC";
    $result = mysql_query($query, $db);
    echo mysql_error($db);
    $i = 0;
    while($row = mysql_fetch_row($result)) {
      while ($i+$count_min < $row[1]) $i++;
      $ydata[$b][$i] = $row[0];
      //echo
        "Sensor".$b.":".$datax[$i].":".$ydata[$b][$i]." ";
      $i++;
    }
  }
  $x_tick_diff = 1;
  if (isset($datax[0])) {
    $x_temp = round(($width_graph-120-50)/50);
    $x_tick_diff = (sizeof($datax)-1)/$x_temp;
    //echo $x_tick_diff;
  }
  if ($x_tick_diff < 10) $x_tick_diff = round($x_tick_diff);
  // Create the graph. These two calls are always required
  $graph = new Graph($width_graph, $height_graph, "auto");
  $graph->SetScale("textlin");
  // Create the linear plots
  $color = array("blue", "green", "orange", "magenta",
    "black", "red");
  for ($a = 0; $a < 6; $a++) {
    if (isset($sensor[$a])) {
      $lineplot[$a] = new LinePlot($ydata[$a]);
      $lineplot[$a]->SetFillColor($color[$a]);
      $lineplot[$a]->SetWeight(1);
      $lineplot[$a]->SetLegend("Sensor $sensor[$a]");
      $graph->Add($lineplot[$a]);
    }
  }
  $graph->legend->Pos(0.03, 0.3, "right", "center");
  $graph->xaxis->SetTickLabels($datax);
  $graph->xaxis->SetTextTickInterval($x_tick_diff);
  //$graph->xaxis->SetTextLabelInterval(2);
  $graph->img->SetMargin(50, 120, 30, 50);
  if (isset($computer)) $graph->title->Set($computer);
  $graph->xaxis->title->Set("°C");
  //$graph->xaxis->SetLabelAngle(90);
  $graph->title->SetFont(FF_FONT1, FS_BOLD);
  $graph->yaxis->title->SetFont(FF_FONT1, FS_BOLD);
  $graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD);
  $graph->yaxis->SetColor("red");
  $graph->yaxis->SetWeight(2);
  $graph->SetShadow();
  // Display the graph
  $graph->Stroke();
?>



Jens Bierkandt