logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PHP – generowanie dynamicznych wykresów na stronie, biblioteki i aktualizacja danych

lazier 20 Paź 2005 11:16 8980 13
REKLAMA
  • #1 1913213
    lazier
    Poziom 12  
    Posty: 96
    Pomógł: 1
    Witam,
    Mam pytanie, wie ktos ja jakiej zasadzia dziala/czego trzeba uzyc aby narysowac wykresy w php? chodzi mi o kilka okienek na stronie i na nich co chwile sie pojawia zmieniajacy sie wykres wg. jakichs danych

    pozdr.
  • REKLAMA
  • #2 1913375
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    Więc rysowanie można zrobić na kilka sposobów:
    1) gotowe obrazki
    Jeśli mają to być proste wykresy słupkowe można wykorzystać linie o długości kilku pixeli i wysokości 1 pixela następnie rozszeżać ten obrazek korzystając z img i własności height. Zaletą tej metody to szybkość wykonania i szybkość działania :)

    2) rysowanie całego img
    Ten sposób wymaga biblioteki gd w systemie i funcjami image_create i td. tworzysz obrazek i rysujesz w nim co chesz.

    3) to moduł z biblioteki pear image_graph
    Zarąbisty moduł tworzy obrazki jak w poprzednim punkcie tylko jakie.... Miodzio - słupkowe, kołowe, legenda, kilka na raz sample możesz zobaczyć na
    http://pear.veggerby.dk/samples/frontpage.php

    albo dodadam jeszcze z jeden przykładzik
    PHP – generowanie dynamicznych wykresów na stronie, biblioteki i aktualizacja danych


    teraz o odświerzaniu:
    Chesz żeby obrazek co jakiś czas się odświerzał do tego celu należy zastosować meta tag z HTML
    META HTTP-EQUIV="refresh" content="ilosc_sekund; URL=Czyli_adres_do_odswierzenia"
  • REKLAMA
  • #3 1913385
    lazier
    Poziom 12  
    Posty: 96
    Pomógł: 1
    Wielkei dzieki za pomoc :) a ten driver da sie jakos zainstalowac dla windowsa? czy koniecznie musi byc linux?
    "Chesz żeby obrazek co jakiś czas się odświeżał do tego celu należy zastosować meta tag z HTML
    META HTTP-EQUIV="refresh" content="ilosc_sekund; URL=Czyli_adres_do_odswierzenia"
    "
    czy to ma byc w head, czy gdzies w img ??
    :) wielkie pozdro
  • #4 1913403
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    no powinien być w head strony ale możesz go umieścić w dowolnym momencie kodu HTML (co prawda nie jest to zgodne ze specyfikacją ale można stosować)

    możesz zrobić to tak
    <html>
    <head>
    <meta refresh....
    </head>
    <body>
    <img src="moj_obrazek.PHP>
    </body>
    </html
  • #5 1913492
    lazier
    Poziom 12  
    Posty: 96
    Pomógł: 1
    wielikei dzieki za odpowiedzi :) all mi sie przyda, tylko ze mozesz mi napisac jak zainstalowac? " moduł z biblioteki pear image_graph " :( serio jest mi to bardzo potrzebne, bez tego nie rusze, tam na stronie znalazlem ze wymagane sa:

    Image_Canvas package
    Image_Color PEAR package
    Numbers_Words and/or Numbers_Roman are required if using the datapreprocessors for textual numbers or roman numerals

    ale tutaj znow, ale jak zainstalowac Image_Canvas etc. :(

    bardzo prosze o odpowiedz :(
  • Pomocny post
    #6 1913532
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    jak zwykle jest kilka sposobów :) tylko nie wiem czy w windowsie to się da.

    Jeśli znajdziesz w swoim systemi pliczek pear.exe to go uruchamiasz w ten sposób:
    pear install Image_Color
    pear install Image_Graph-alpha

    te 2 biblioteki w zupełności wystarczą do jego odpalenia.

    Jeśli natomiast nie znajdziesz to trzeba będzie ręcznie skopiować (i rozpakować) te bibiloteki z pear.php.net do katalogu pear który powinen się znajdować gdzieś w katalogu php. Łatwo to sprawdzić bo jak zrobisz include 'niesitniejacy_plik.php' w swoim skrypcie to ci wyskoczy ze php nie znalazł w ścierzcze ../pear/ tego pliku i już wiesz gdzie masz to umieścić

    No i poszukaj na googlu jak zainstalować pear pod windowsem bo ja to wszystko robie pod linuchem :(
  • REKLAMA
  • #7 1914301
    Piotrek.pxf
    Poziom 27  
    Posty: 806
    Pomógł: 118
    Ocena: 65
    Jeśli to ma być prosty wykres słupkowy (np wyniki sondy) to można wykorzystać np tabelkę, którek szerokość zależy od kodu php. Można takim sposobem "upiększać" wykres np zawijanymi rogami słupków czy innymi bajerami (rozciąganie jednego obrazka nie daje takich rezultatów).
  • REKLAMA
  • #8 1914943
    lazier
    Poziom 12  
    Posty: 96
    Pomógł: 1
    radziow-WIELGACHNE DZIEKI!! :-) wszystko mi ladnie chodzi :)
  • #9 1927613
    lazier
    Poziom 12  
    Posty: 96
    Pomógł: 1
    aaa jeszcze 1 pytanie :| nie wiem czy nie najwazniejsze, da sie zrobic tak, aby na www bylo cos wyswietlone razem z wykresem? mnie sie pojawia takie cos:

    
    ‰PNG  IHDRX&Atilde;Ž'ß IDATxœíÝ{pT&aring;ýÇ&ntilde;g“„&cent;$.Â&ETH;!Ëm(á" &Aring;š&Aring;TcšéÔK‘Š F;&AElig; &atilde;X&AElig;&ntilde;‡##…Ž&para;*–A ¨&Otilde;&ordf;cS‰ÔXƒo\5 "š`’&igrave;&iuml;…5ä&sup2;{v÷\ž&iuml;s&THORN;&macr;áä&igrave;†<&ucirc;œó|Î÷yö&igrave;I  ) &Aring;ë€U1,bXÄ °ˆA`ƒ&Agrave; @  €Ú tóG>&ucirc;&igrave;&sup3;K/&frac12;4&aelig;szô&egrave;ý9&macr;&iquest;&thorn;úW\&Ntilde;&Ograve;&Ograve;Gsá'Ú;y&ograve;äÉ“'ËËË{&otilde;&ecirc;&thorn;Ú&micro;_}Í5×(&yen;ö&igrave;&Ugrave;&atilde;Úo„,Úë×&macr;_&iquest;~ýúöí&ugrave;ÚÍß>c&AElig;  ]!°&Ucirc;&iuml;&yuml;&ucirc;n¸&iexcl;í–úúú&THORN;&frac12;{WVV*&yen;&Agrave;ˆ#&ecirc;&ecirc;&ecirc;@Çy_&Igrave;&Ugrave;â´iÓ~ö&sup3;ŸE&frac34;4i&Ograve;{&iuml;&frac12;gkóa &plusmn;-Z´&egrave;&micro;×^;v&igrave;XdË“O>9nܸ`0¨”j;L&agrave;?ommmmm|;|&oslash;&eth;&Atilde;‡'ßf‰&Agrave;Blýú&otilde;+***--l&Ugrave;°a&Atilde;&Ograve;&yen;K#F&aelig; üç{÷îÝ&micro;kWä&Ucirc;Aƒ8q"&sup1;öÂX,)))&Ugrave;&sup2;eK}}&frac12;R&ecirc;Ÿ&yuml;ügmmmAA&iquest;¨W&macr;^uuuNü&Iuml;0K&AElig;Ž›““óä“O*&yen;6l&Oslash;°x&ntilde;âÔÔÔŽOKIIi;&iquest;SJ&micro;&para;&para;&brvbar;¤Äq˜&yen;&yen;&yen;%&Ugrave;TŒ&Agrave;‚UK—.---ýâ‹/^zé&yen;E‹uúœË.&raquo;&not;&copy;&copy;éÜ&sup1;s‘-g&Iuml;ž&frac12;&igrave;&sup2;Ë&not;&yuml;–3gÎô&ecirc;&Otilde;+&Ugrave;&para;ÂP&not;*((¨&laquo;&laquo;&raquo;&ugrave;&aelig;›&macr;&iquest;&thorn;ú&thorn;ý&ucirc;wúœ~ýú 8°íu {ö&igrave;ÉÉÉ&plusmn;&thorn;[Nž~ü&oslash;&eth;á&Atilde;Ÿxâ‰9s&aelig;Dy~&raquo;Ë>&oslash;&agrave;ƒ¸*2&oslash;J€&iquest;šërss—.]zË-&middot;8÷+† &para;yó&aelig;&eth;gt€v˜Â&ordf;wß}÷&egrave;&Ntilde;&pound;EEEÎýŠŠŠŠS§NM:&Otilde;&sup1;_&Ntilde;,XUZZZ\\Ü&frac12;{wç~&Aring;O¤&Egrave;‚ö,bXÄ °|&Atilde;&Ecirc;&ucirc;ƒ&Igrave; &iexcl;7 €.F‘X&thorn;&Agrave;&otilde;&cent;^  ETC...
    
  • #10 1928868
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    Nie zabardzo rozumiem co chesz i gdzie dodać?

    Czy chodzi CI o to że robisz stronę HTMLową i piszesz sobie na niej co chesz a poźniej robisz odwołanie do wygenerowanego wykresu czyli
    <img src="generowany_wykres.php" > w przegladarce powinieneś widzieć twoją stronę i gotowy piękny wykres.
  • #11 1931628
    lazier
    Poziom 12  
    Posty: 96
    Pomógł: 1
    tak tak racja :) dziala, 1st generuje wykres, zapisuje do pliku a potem podpinam link :) wiesz co? jeszcze 1 pytanie mam i bylbym bardzo wdzieczny gdybys na nie odpowiedzial:
    Przechodze ze strony A na B, przechodzac posiadam parametry (w $_GET[] )i na ich podstawie tworzony jest wykres, tylko nie rozumie dla czego jak sie znow wroce na strone A, nacisne tam na innego linka,. zdobede inne parametry, to 1st zostanie wyswietlony stary wykres, dopiero potem jak sie da odswiez to pojawi sie nowy :| nawet probowalem wywalac z ftp'a ten obrazek, ale zawsze sie pojawial, potem "odswiez" i nie bylo go :| to trzeba jakos z pamiecy wywalic? czy co? :| nie mam pojecia :(((
  • #12 1934332
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    Ja nie zapisuje żadnych wykresów, generują się on the Fly tak jak pokazałem, ale jeśli chesz je zapisywać to polecam jednak nie podpinania gotowych rysunków tylko znowu jakiś skrypt PHP czyli
    <img src="pokaz.php?f=wykres1.png"> a to dlatego żeby plik php wysłałe nagłówki czyszczące cache dla danego wykresu.



    plik pokaz.php powinien wygladać mniej więcej tak:

    //naglowki ktore czyszcza cache
    Header("Content-Type: image/png");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    //data specjalnie jest stara żeby wymusić ponowne wczytanie wykresu
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    $filepath = $_GET['f'];
    //dodaj jeszcze jakies zabezpieczenia ze plik bez sciezki i jak istnieje plik w danym katalogu zeby czasem nie odczytali dowolnego pliku na dysu :)
    @readfile($filepath);
  • #13 2042663
    siudy
    Poziom 14  
    Posty: 164
    Ocena: 5
    Witam

    mam takie pytanie jak zrobic proste wykresy za pomocą małego pliku graficznego, ktory bedzie sie rozszerzał proporcionalnie do wynikow obiczanych

    powiedzmy ze mam taki kod php obiczajacy mi udzial jednej odpowiedzi sposrod czterech:

    print('A:');
    $procent_A=(100*$A)/($A+$B+$C+$D);
    echo round($procent_A,1);
    
    
    print('B:');
    $procent_B=(100*$B)/($A+$B+$C+$D);
    echo round($procent_B,1);
    
    
    print('C:');
    $procent_C=(100*$C)/($A+$B+$C+$D);
    echo round($procent_C,1);
    
    print('D:');
    $procent_D=(100*$D)/($A+$B+$C+$D);
    echo round($procent_D,1);
    
    print('<p>');


    i chcialbym zeby te wyniki pokazywane byly wlasnie tez na wykresie, tylko nie mam pojecia jak przypisac ten plik graficzny i go rozszerzac

    prosze o pomoc
  • #14 2043838
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    zależy jak chesz mieć pionowe czy poziome

    Przy zalozeniu ze to 100 to maxymalna słupka jaką może osiągnąć jak chesz większą lub mniejszą to tam przy obliczaniu procentów zmieniasz wartość 100 na inną

    -jak pionowe
    <Img src="pixel_red.gif' width="10" height="<?php $procent_A ?>">

    -jak poziome
    <Img src="pixel_red.gif' width="<?php $procent_A ?>" height="10">

Podsumowanie tematu

✨ Dyskusja dotyczy generowania dynamicznych wykresów na stronach internetowych za pomocą PHP. Omówiono trzy główne metody tworzenia wykresów: 1) wykorzystanie prostych obrazków skalowanych w HTML (np. linie o zmiennej długości), 2) generowanie obrazów dynamicznie za pomocą biblioteki GD w PHP (funkcje image_create i pokrewne), 3) użycie modułu PEAR Image_Graph, który umożliwia tworzenie różnych typów wykresów (słupkowe, kołowe, z legendą). Poruszono kwestie instalacji pakietów PEAR (Image_Color, Image_Canvas, Image_Graph) na systemach Windows i Linux, wskazując na możliwość instalacji przez pear.exe lub ręczne kopiowanie bibliotek. Wskazano, że odświeżanie wykresów można realizować przez meta tag HTML z atrybutem refresh umieszczony w sekcji head strony. Omówiono problem cache przeglądarki przy generowaniu wykresów zapisywanych do plików i zaproponowano rozwiązanie w postaci skryptu PHP (np. pokaz.php) wysyłającego odpowiednie nagłówki HTTP do wyłączenia cache. Zaprezentowano także prostą metodę tworzenia wykresów słupkowych poprzez skalowanie małych plików graficznych (np. pixel_red.gif) w zależności od obliczonych procentów, zarówno w orientacji pionowej, jak i poziomej. Wskazano, że wykresy mogą być generowane "on the fly" bez zapisywania do plików, co ułatwia aktualizację danych i unikanie problemów z cache.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA