Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Źle wyświetlana data na wykresie
Forum PHP.pl > Forum > PHP
rafalekjan
Witam.

Stworzyłem wykres danych pobieranych z bazy danych.

Wykres tworzyłem wg instrukcji z jakiegoś kursu. Korzystałem z dwóch plików (głównego kodu i tworzącego wykres), żeby dane binarne nie kłóciły się z tekstowymi.
W osi OX powinny znajdować się dokładne dane pomiarów, natomiast zostaje przedstawiony w takiej właśnie postaci.
Oto kod programu i wykres:

Kod:
  1. <?php
  2.  
  3.  
  4. $url="localhost";
  5. $uzyt="root";
  6. $haslo="krasnal";
  7. $b_danych="sys_pomiar";
  8. @ mysql_connect($url,$uzyt,$haslo) or die ("Nie mozna polaczyc sie z baza danych");
  9. mysql_select_db($b_danych);
  10. $query = "SELECT * FROM main WHERE id_licznik=1";
  11. $result = mysql_query ($query);
  12. $wartosc = 0;
  13. $i=0;
  14. while ($row = mysql_fetch_array($result))
  15. {
  16.  
  17. $data[$i] = array('', $row['time'], $row['msrt']);
  18. $i++;
  19. }
  20. $example_data = $data;
  21. global $data;
  22. ?>
  23. <img src="index5.php" border="0" />


Oraz plik tworzący wykres:
  1. <?php
  2. //Include the code
  3. include('phplot.php');
  4.  
  5. //Define the object
  6. $graph =& new PHPlot(800,600);
  7.  
  8. $url="localhost";
  9. $uzyt="root";
  10. $haslo="krasnal";
  11. $b_danych="sys_pomiar";
  12. @ mysql_connect($url,$uzyt,$haslo) or die ("Nie mozna polaczyc sie z baza danych");
  13. mysql_select_db($b_danych);
  14. $query = "SELECT * FROM main";
  15. $result = mysql_query ($query);
  16. $wartosc = 0;
  17. $i=0;
  18. while ($row = mysql_fetch_array($result))
  19. {
  20.  
  21.  
  22. $data[$i] = array('', $row['time'], $row['msrt']);
  23. $i++;
  24.  
  25. }
  26. $graph->SetPlotType("bars");
  27. $graph->SetDataType('text-data');
  28.  
  29. $graph -> SetDataValues($data);
  30. $graph -> DrawGraph();
  31. ?>


Powstaje mi wykres:


Nie wiem dlaczego data zostaje zmieniona. Poprawny format to rrrr-mm-dd gg-mm-ss.
Quadina
Ustaw jak ma formatować dane w labelu.
  1. $graph->SetXTimeFormat('%Y-%m-%d.%H:%M:%S');

rafalekjan
Nic to nie zmieniło. Wciąż są te dziwne liczby. Jeszcze coś powinienem edytować?
Quadina
Przepraszam, mój błąd, powinno być:
  1. // W Twojej linii 22
  2. $data[$i] = array('', strtotime($row['time']), $row['msrt']);
  3.  
  4. // i tam niżej
  5. $graph->SetXLabelType('time', '%Y-%m-%d.%H:%M:%S');
rafalekjan
Lepiej, ale i gorzej ;P

Pojawiły się daty w poprawnym formacie, ale wszystkie są takie same (pomiary również) i daty mają od 1970-01-01 1:00:00 do 1970-01-01 1:00:18.

Poprawne czasy pomiaru to:


A wygląda to tak:

Quadina
Kolejna modyfikacja ;-)
  1. $data[$i] = array(strtotime($row['time']), $row['msrt']);

Teraz powinno być ok ;-) Ewentualnie pokombinuj z podawaniem informacji w tej tablicy. Na pewno musi być time w sekundach i na pewno w 2 musi być wielkość słupka.
rafalekjan
Teraz działa smile.gif


Ale jest jeszcze jeden problem:

Dane na wykresie mają być filtrowane, pod względem numeru użytkownika oraz typu licznika.

użytkownik loguje się do systemu i możemy sprawdzić jedo ID oraz nick:
  1. if (isset($_SESSION['prawid_uzyt'])) {
  2.  
  3. $proba=$_SESSION['prawid_uzyt'];
  4. } else {
  5. // nie jest zalogowany
  6.  
  7. }
  8.  
  9. $wynik=@mysql_query("select id_usera, nazwa_uz from uzytkownik where nazwa_uz='".$proba."'");
  10. while ($proba=mysql_fetch_array($wynik)) {
  11. $searchklient=htmlspecialchars($proba['id_usera']);
  12. $dane_kl=htmlspecialchars($proba['nazwa_uz']);
  13. }


Jednak kiedy wrzucę ten kod do plików tworzących wykres nic się nie dzieje. Żadnych błędów, ani wykresu.

Na warunku wymuszonym wszystko działa:
  1. $query = "SELECT main.msrt, main.time FROM main, liczniki where main.id_licznik=liczniki.id_licznik and liczniki.type=1 and liczniki.id_usera=1";
  2. $result = mysql_query ($query);


Dzięki za wszystkie podpowiedzi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.