Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Źle wyświetlana data na wykresie
rafalekjan
post
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:
(IMG:http://img220.imageshack.us/img220/237/beztytuuee.png)

Nie wiem dlaczego data zostaje zmieniona. Poprawny format to rrrr-mm-dd gg-mm-ss.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Quadina
post
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');

Go to the top of the page
+Quote Post
rafalekjan
post
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
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');
Go to the top of the page
+Quote Post
rafalekjan
post
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:
(IMG:http://img222.imageshack.us/img222/2143/mainmc.png)

A wygląda to tak:
(IMG:http://img703.imageshack.us/img703/6342/wykrest.png)
Go to the top of the page
+Quote Post
Quadina
post
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
Go to the top of the page
+Quote Post
rafalekjan
post
Post #7





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

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


Teraz działa (IMG:style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 23:47