Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Rysowanie wykresów - problem
Forum PHP.pl > Forum > Przedszkole
japek
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ć.
Master Miko
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
japek
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.
Master Miko
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ć.
japek
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.
Master Miko
A nie przypadkiem powinno być tak?
  1. <INPUT onclick="change('x');" TYPE="checkbox" value="x">


Zmień również nazwę funkcji, np - na changeVisibility
japek
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
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.