{"id":1109,"date":"2025-04-04T09:40:07","date_gmt":"2025-04-04T07:40:07","guid":{"rendered":"https:\/\/alfard.ovh\/?page_id=1109"},"modified":"2026-04-24T11:23:45","modified_gmt":"2026-04-24T09:23:45","slug":"phpwykres","status":"publish","type":"page","link":"https:\/\/alfard.ovh\/index.php\/phpwykres\/","title":{"rendered":"phpWykres"},"content":{"rendered":"\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:34% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/phpWykres.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"408\" height=\"150\" src=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/phpWykres.jpg\" alt=\"\" class=\"wp-image-1117 size-full\" srcset=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/phpWykres.jpg 408w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/phpWykres-300x110.jpg 300w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p>Opis dotyczy zastosowania kodu phpWykres jest to funkcja rysuj\u0105ca wykres s\u0142upkowy napisana w j\u0119zyku PHP. Kod dzia\u0142a w standardowym \u015brodowisku PHP bez specjalnych dodatkowych bibliotek.<\/p>\n<\/div><\/div>\n\n\n\n<p>Kod podes\u0142a\u0142 mi kolega Zygmunt, kt\u00f3ry pewnie znalaz\u0142 go w przepastnych zasobach internetu. Autor pomys\u0142u i pierwotnego \u017ar\u00f3d\u0142a nie jest mi znany mimo tego dzi\u0119kuj\u0119 mu. Kod jest bardzo cenny edukacyjnie ale i funkcjonalnie.<\/p>\n\n\n\n<p>Opisz\u0119 praktyczne zastosowanie tej funkcji, kt\u00f3ra dynamicznie pobiera dane i wy\u015bwietla je jako wykres s\u0142upkowy. Opis oparty jest o rzeczywiste pomiary promieniowania ultrafioletowego ale nie tylko.<\/p>\n\n\n\n<p>Za\u0142o\u017cenia:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>korzystamy z bazy danych i j\u0119zyka SQL<\/li>\n\n\n\n<li>pomiary gromadzone s\u0105 w tabeli, kt\u00f3ra ma kolumny DataCzas oraz UV<\/li>\n\n\n\n<li>wykres b\u0119dzie prezentowa\u0142 dane z godzin od 6:00 do 19:00<\/li>\n\n\n\n<li>warto\u015bci UV s\u0105 sumowane w zakresach co godzin\u0119 czyli warto\u015b\u0107 \u015brednia z godziny razy 60 minut<\/li>\n\n\n\n<li>otrzymane godzinne warto\u015bci zapisywane s\u0105 do <a href=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/DaneDawkiUV.txt\">pliku<\/a>, kt\u00f3ry jest \u017ar\u00f3d\u0142em danych dla funkcji phpWykres<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:73% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"201\" src=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/kodZapisu.jpg\" alt=\"\" class=\"wp-image-1125 size-full\" srcset=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/kodZapisu.jpg 580w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/04\/kodZapisu-300x104.jpg 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p>istotna cz\u0119\u015b\u0107 kodu, kt\u00f3ra tworzy plik z danymi<\/p>\n<\/div><\/div>\n\n\n\n<p>aby by\u0142o co zapisywa\u0107 trzeba zada\u0107 pytanie do bazy:<\/p>\n\n\n\n<p>SELECT floor(UNIX_TIMESTAMP($vDCzas)\/3600)*3600, avg($sonda)*60 FROM $nazwaTabeli<br>WHERE DataCzas between $dawkiOd and $dawkiDo and $sonda&lt;&gt;-888 group by 1 order by 1 limit 7000&#8243;;<\/p>\n\n\n\n<p>funkcja oraz procedura czytaj\u0105ca dane s\u0105 w osobnym pliku phpWykres.php. Wy\u015bwietlenie wykresu nast\u0119puje w reakcji na wpis: <\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-base-2-color\">i<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\">mg src=&#8221;phpWykres.php&#8221; <\/mark><\/p>\n\n\n\n<p>Odczytanie danych z pliku wykona\u0142em poni\u017cszym kodem, kt\u00f3ry jest w \u015brodku pliku phpWykres.php i jest automatycznie wykonywany przed ka\u017cdym wygenerowaniem wykresu:<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\">$output = Array(); <br>foreach(file($filename) as $w) {<br> $w = explode(&#8217;|&#8217;, $w); <br> $output[ $w[0] ] = $w[1]; }<\/mark><\/p>\n\n\n\n<p>Generowanie grafiki wykresu:<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\">$wykres = gen_wykres($output);<br>imagepng($wykres);<\/mark><\/p>\n\n\n\n<p>Dzia\u0142aj\u0105cy, kompletny <a href=\"\/wp-content\/uploads\/2025\/04\/phpWykres.txt\">dost\u0119pny pod tym adresem<\/a>.<\/p>\n\n\n\n<p>Uwaga: Funkcja <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\">gen_wykres<\/mark> domy\u015blnie korzysta z graficznego pliku t\u0142a oraz pliku czcionek: alfa2.jpg oraz calibril.ttf. Te pliki powinny by\u0107 w tym samym folderze co phpWykres.php.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Przyk\u0142ady zastosowa\u0144<\/h2>\n\n\n\n<p>Kod opisanego PhpWykresu znalaz\u0142 zastosowanie i dzia\u0142a niezawodnie przedstawiaj\u0105c:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>godzinowe \u015brednie pomiar\u00f3w<\/li>\n\n\n\n<li>dawki UV sumowane w okresach godzin<\/li>\n\n\n\n<li>Histogramy zlicze\u0144 licznik\u00f3w Geigera<\/li>\n<\/ul>\n\n\n\n<p>Typ wykresu s\u0142upkowego wynika z jednostek jakie opisuj\u0105 pomiar i dzieje si\u0119 to dynamicznie i automatycznie.<\/p>\n\n\n\n<p>Konkretne rzeczywiste przyk\u0142ady online i na \u017cywo mo\u017cna zobaczy\u0107 pod adresem <a href=\"http:\/\/t1ak.ovh\">t1ak.ovh<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Opis dotyczy zastosowania kodu phpWykres jest to funkcja rysuj\u0105ca wykres s\u0142upkowy napisana w j\u0119zyku PHP. Kod dzia\u0142a w standardowym \u015brodowisku PHP bez specjalnych dodatkowych bibliotek. Kod podes\u0142a\u0142 mi kolega Zygmunt, kt\u00f3ry pewnie znalaz\u0142 go w przepastnych zasobach internetu. Autor pomys\u0142u i pierwotnego \u017ar\u00f3d\u0142a nie jest mi znany mimo tego dzi\u0119kuj\u0119 mu. Kod jest bardzo cenny [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1109","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages\/1109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/comments?post=1109"}],"version-history":[{"count":19,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages\/1109\/revisions"}],"predecessor-version":[{"id":1492,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages\/1109\/revisions\/1492"}],"wp:attachment":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/media?parent=1109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}