Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Źle wyświetlana data na wykresie
rafalekjan
post 2.12.2010, 21:13:23
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.11.2010

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


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.
Go to the top of the page
+Quote Post
Quadina
post 2.12.2010, 21:31:37
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Ustaw jak ma formatować dane w labelu.
  1. $graph->SetXTimeFormat('%Y-%m-%d.%H:%M:%S');



--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
rafalekjan
post 2.12.2010, 22:40:49
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.11.2010

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


Nic to nie zmieniło. Wciąż są te dziwne liczby. Jeszcze coś powinienem edytować?
Go to the top of the page
+Quote Post
Quadina
post 2.12.2010, 23:02:00
Post #4





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


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');


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
rafalekjan
post 2.12.2010, 23:59:15
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.11.2010

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


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:

Go to the top of the page
+Quote Post
Quadina
post 3.12.2010, 00:20:11
Post #6





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


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.

Ten post edytował Quadina 3.12.2010, 00:30:33


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
rafalekjan
post 10.12.2010, 14:06:03
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.11.2010

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


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.

Ten post edytował rafalekjan 10.12.2010, 14:06:41
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:53