Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL][pChart] Błąd przy Tworzeniu wykresu w pChart. Warning: Division by zero, [PHP][MYSQL][pChart]
kosmit90
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.12.2013

Ostrzeżenie: (0%)
-----


Witam, potrzebuję stworzyć skrypt, który będzie tworzył wykres na podstawie danych z tabeli MYSQL. Przy tworzeniu wykresu dostaję ostrzeżenie:
Cytat
Warning: Division by zero on line 3113 in pDraw.php

Oto kod:

Kod
<?php

include("class/pData.class.php");
include("class/pDraw.class.php");
include("class/pImage.class.php");

$filename = 'file.txt';
echo 'Status info:<br />';
$myData = new pData();

$db=mysql_connect("localhost","root","") or die("Failed to connect with database!");

echo '<br>* Connected to database successfully - OK<br />';

mysql_select_db("database", $db);

mysql_query("CREATE TABLE `measures` (
timestamp INT(10),
temperature INT(10),
humidity INT(10),
PRIMARY KEY (timestamp));");

echo "<br> * Table created successfully or it has been created earlier - OK<br />";

mysql_query("LOAD DATA INFILE '$filename' IGNORE INTO TABLE measures
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'    ")
or die("MySQL - Query Error - " . MySQL_Error());

echo "<br>* Data imported successfully - OK<br />";

$Requete = "SELECT * FROM `measures`";
$Result = mysql_query($Requete,$db);
while($row = mysql_fetch_array($Result))
{
$timestamp[] = $row["timestamp"];
$temperature[] = $row["temperature"];
$humidity[] = $row["humidity"];
}
$myData->addPoints($timestamp,"Timestamp");
$myData->addPoints($temperature,"Temperature");
$myData->addPoints($humidity,"Humidity");
$myData->setAbscissa("Timestamp");
$myData->setSerieOnAxis("Humidity", 1);
$myData->setXAxisName("Time");
$myData->setXAxisDisplay(AXIS_FORMAT_TIME,"H:i");
$myData->setAxisName(0,"Temperature");
$myData->setAxisUnit(0,"°C");
$myData->setAxisName(1,"Humidity");
$myData->setAxisUnit(0,"%");
$myPicture = new pImage(700,230,$myData);
$myPicture->drawLineChart();
?>


a to funkcja ze skryptu pDraw.php, który powoduje problemy:

Kod
function scaleComputeY($Values,$Option="",$ReturnOnly0Height=FALSE)
    {
     $AxisID    = isset($Option["AxisID"]) ? $Option["AxisID"] : 0;
     $SerieName = isset($Option["SerieName"]) ? $Option["SerieName"] : NULL;

     $Data = $this->DataSet->getData();
     if ( !isset($Data["Axis"][$AxisID]) ) { return(-1); }

     if ( $SerieName != NULL ) { $AxisID = $Data["Series"][$SerieName]["Axis"]; }
     if ( !is_array($Values) ) { $tmp = $Values; $Values = ""; $Values[0] = $tmp; }

     $Result = "";
     if ( $Data["Orientation"] == SCALE_POS_LEFTRIGHT )
      {
       $Height      = ($this->GraphAreaY2 - $this->GraphAreaY1) - $Data["Axis"][$AxisID]["Margin"]*2;
       $ScaleHeight = $Data["Axis"][$AxisID]["ScaleMax"] - $Data["Axis"][$AxisID]["ScaleMin"];
       $Step        = $Height / $ScaleHeight;

       if ( $ReturnOnly0Height )
        { foreach($Values as $Key => $Value) { if ( $Value == VOID ) { $Result[] = VOID; } else { $Result[] = $Step * $Value; } } }
       else
        { foreach($Values as $Key => $Value) { if ( $Value == VOID ) { $Result[] = VOID; } else { $Result[] = $this->GraphAreaY2 - $Data["Axis"][$AxisID]["Margin"] - ($Step * ($Value-$Data["Axis"][$AxisID]["ScaleMin"])); } } }
      }
     else
      {
       $Width      = ($this->GraphAreaX2 - $this->GraphAreaX1) - $Data["Axis"][$AxisID]["Margin"]*2;
       $ScaleWidth = $Data["Axis"][$AxisID]["ScaleMax"] - $Data["Axis"][$AxisID]["ScaleMin"];
       $Step       = $Width / $ScaleWidth; <------------------------------------------------------------------------------------------------------------------------------- LINE 3113

       if ( $ReturnOnly0Height )
        { foreach($Values as $Key => $Value) { if ( $Value == VOID ) { $Result[] = VOID; } else { $Result[] = $Step * $Value; } } }
       else
        { foreach($Values as $Key => $Value) { if ( $Value == VOID ) { $Result[] = VOID; } else { $Result[] = $this->GraphAreaX1 + $Data["Axis"][$AxisID]["Margin"] + ($Step * ($Value-$Data["Axis"][$AxisID]["ScaleMin"])); } } }
      }

     if ( count($Result) == 1 )
      return($Result[0]);
     else
      return($Result);
    }


Chciałbym zaznaczyć, że jestem początkujący w PHP, więc z góry przepraszam za swoje pytanie.

Ten post edytował kosmit90 20.12.2013, 23:24:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
vermis
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


Zmienna $ScaleWidth jest równa 0. Stąd błąd dzielenia przez 0.
Sprawdź konfigurację, prawdobodobnie "ScaleMax" jest równe "ScaleMin", czyli nie masz zakresu skalowania.
  1. $ScaleWidth = $Data["Axis"][$AxisID]["ScaleMax"] - $Data["Axis"][$AxisID]["ScaleMin"];
Go to the top of the page
+Quote Post
kosmit90
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.12.2013

Ostrzeżenie: (0%)
-----


Wg help'a powinny sie ustawiać automatycznie... Ręczne ustawienie zakresu skalowania wyrzuca komunikat, że nie można ustawić. Jakieś inne pomysły?

EDIT:
Problem rozwiązany:) Skorzystałem z trochę innego rozwiązania i pomogło:)

Ten post edytował kosmit90 21.12.2013, 12:13:33
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 15:41