Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Rysowanie wykresów - problem
japek
post 1.10.2006, 12:41:35
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Zrobiłem program, który rysuje wykresy. Jeden plik, który obrabia dane i na ich podstawie rysuje obrazek (png) jest odpalany w ramce <iframe> drugiego pliku, w któym chcę operować teraz wykresami. Mianowicie potrzebuje napisać teraz coś takiego, aby można było spośród kilku linii wybrać tylko niektóre, lub zostawić jedną. Czy tu jest niezbędna java czy można to zrobić jakoś w miare prosto za pomocą php?

Chciałbym aby to wyglądało jak tu - możliwość zaznaczenia siatki, czy linii województw:
http://www.imgw.pl/wl/internet/zz/pogoda/radary.html
Widze że tu jest wykorzystana java ale czy da sie to w php?

Myślałem już aby wszystkie dane wykorzystane to generowania całego wykresu wrzucać do bazy a potem można było po wygenerowaniu wybrać to co nas interesuje i pobrać z bazy tylko część danych i tworzyć nowy obrazek, no ale to za długo będzie trwać.
Go to the top of the page
+Quote Post
Master Miko
post 1.10.2006, 12:57:26
Post #2





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


nie trzeba chyba tego robić w iframe, chyba że koniecznie potrzebujesz takiego rozwiązania.
Zrób to na zasadzie nakładania się obrazków i użyj advajaxa (lub samego javascript)

NP:
-pobierasz z bazy dane
-do wszystkich danych robisz oddzielne wykresy (najlepiej zapisujesz je - każdy w oddzilnym pliku)
-nakładasz je (do 1 pliku przez php, bądź nakładasz przez javascript jeden na drugi) i wyświeltasz użytkownikowi który np. przez checkboxy wybiera sobie które chce
-ajax steruje tym wszystkim - tzn wysyła query o dokładnie te wykresy które chce użytkownik (w przypadku użycia php)

i tutaj masz 2 możliwośći:
albo javascript łączy wszystkie obrazki - nakładając je na siebie, lub php łączy je w 1 tylko obrazek i wyświela go przez ajaxa.
Teoretycznie javascript opłaca się bardziej, bo php nie musi tworzyć obrazka (chyba, że byłby cachowany...), poza tym z php za każdym razem wyświetlany byłby nowy obrazek, a javascript poprostu "zabierałby" wykresy

Ten post edytował Master Miko 1.10.2006, 13:00:38


--------------------
Go to the top of the page
+Quote Post
japek
post 1.10.2006, 21:48:49
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Po poerwsze to właśnie nie chce mieć wykresu w <iframe> tylko nie wiedziałem jak zrobić bo miałem problem z nagłówkami.

Teraz kolejny problem - nie mam pojęcia o ajax, a java kuleje (dlatego pytałem o php ale sam bym wolał jave bo widze że łatwiej i szybciej na podanym przykładzie), więc musze poszukać w necie jakiś podobnych skryptów sad.gif chyba że możesz pomóc coś więcej, zwłaszcza ajax.
Go to the top of the page
+Quote Post
Master Miko
post 2.10.2006, 14:17:52
Post #4





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


BTW: JavaScript, a nie JAVA! To są dwie różne rzeczy.
Poza tym, nie trzeba ajaxa. Wystarczy pare sztuczek smile.gif

Możesz zrobić to w ten sposób:

1. Powiedzmy, że masz dane w tabelach i te dane masz jakoś ponazywane... np:
- abc
- def
- ghi

2. plik wykres.php będzie tworzył obrazek na takiej zasadzie, że będziesz mu podawał tylko te dane które chcesz - a on zrobi odpowiedniej wielkości wykres:
- wykres.php?type=abc
- wykres.php?type=def
- wykres.php?type=ghi

3. teraz w pliku index.php toworzysz parę divów które muszą znajdować się w tym samym miejscu (dajesz im absolute i gdzieś układasz)
  1. <div id="podklad">"><img src="podklad.png"></div>
  2. <div id="abc"><img src="wykres.php?type=abc"></div>
  3. <div id="def"><img src="wykres.php?type=def"></div>
  4. <div id="ghi"><img src="wykres.php?type=ghi"></div>

a pod nimi checkboxy każdy odpowiedzialny za każdy wykres (abc,def,ghi)

4. Teraz piszesz im w onChange funkjce która bada czy są zaznaczone czy nie.

5. Funkcja rozpoznaje czy:
A ) CHeckbox jest zaznaczony - ustawia DIV na visible
B ) Checkbox jest niezaznaczony - ustawia DIV na hidden

Tu masz przykład jak to działa:
Div i visibility


Jest to bardzo proste rozwiązanie i dobre w odbiorze. Powinno dobrze się sprawdzać.

Ten post edytował Master Miko 2.10.2006, 14:19:23


--------------------
Go to the top of the page
+Quote Post
japek
post 7.10.2006, 09:49:57
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Coś mi nie chce dzialać. Napisałem coś takiego dla DIV'ów:

  1. function change(id) {
  2. var elem=document.getElementById(id);
  3. if (elem.style.visibility == 'visible' ) {
  4. elem.style.visibility = "hidden";
  5. }
  6. else {
  7. elem.style.visibility = 'visible';
  8. }


a checkbox'a mam:

  1. <INPUT onclick="('x');" TYPE="checkbox" value="x">


próbowałem też z onChange ale to samo sad.gif

Wcześniej napisałem prostszą funkcje ale działała tylko w jednąstrone, wyłączała div a drugi chceckbox włączał div'a a ja potrzebuje jednym checkbox'em działać w obie strony.
Go to the top of the page
+Quote Post
Master Miko
post 7.10.2006, 10:03:02
Post #6





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


A nie przypadkiem powinno być tak?
  1. <INPUT onclick="change('x');" TYPE="checkbox" value="x">


Zmień również nazwę funkcji, np - na changeVisibility


--------------------
Go to the top of the page
+Quote Post
japek
post 7.10.2006, 10:33:12
Post #7





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

Ostrzeżenie: (10%)
X----


Nie działa mi :/ oczywiście mam onclick="change('... Zmiana nazwy funkcji też przecież nic nie daje. Sprawdziłem.

Jaki jestem zakręcony aaaaaa!!!! zapomniałem zamknąć funkcji tongue.gif teraz hula jak trzeba

Ten post edytował japek 7.10.2006, 12:06:47
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: 29.06.2025 - 10:18