![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam nastepujace pytania: Uzylem ostatnio biblioteki GD do stworzenia skryptu wyswietlajacego wyniki ankiety pobierane z bazy danych. Niestety gdy przychodzi do wyswietlenia tresci pytania to polskie znaki nie sa poprawnie wyswietlane. Nie wiem gdzie lezy blad gdyz probowalem wyswietlic to za pomoca kilku czcionek dostepnych w systemie Windows i nic. Dodam, ze w momencie gdy chce wyswietlic dana tresc pytania w przegladarce (bez uzycia biblioteki GD) to wszystko wyswietlane jest poprawnie. Jaka jest tego przyczyna?? Pytanie drugie. Mam problem z wyswietleniem wielu obrazkow na jednej stronie. Poniewaz dla danej ankiety moze byc wiele pytan i wiele odpowiedzi chcialbym przy jednym wywolaniu wyswietlic wszystkie pytania (a co za tym idzie wiele odpowiedzi). Ponizej zamieszczam kod: kod funkcji tworzacej obrazek [php:1:5335ceb229]<?php function grafika($wynik, $tekst) { $alfabet = array("a)", "B)", "c)", "d)", "e)", "f)", "g)", "h)", "i)", "j)", "k)", "l)", "m)", "n)", "o)", "p)", "r)", "s)", "t)"); ### USTAWIENIE PARAMETROW OBRAZKA $liczba_wynikow = count($wynik); //liczba paskow poziomych wyswietlanych z bazy danych; $tekst_wysokosc = 25; //wysokosc tekstu naglowkowego $pasek_wykresu = 20; //grubosc paska $separator_wierszy = 10; //odstep pomiedzy paskami $margines_gora = 20; //odstep pomiedzy tytulem a poczatkiem wykresu $margines_dol = 20; //odstep pomiedzy koncem wykresu a koncem rysunku $margines_lewy = 30; //margines przeznaczony np. na tekst; $margines_prawy = 60; //margines przeznaczony np. na procenty; $szerokosc = $margines_lewy + $margines_prawy + 410; $wysokosc = $tekst_wysokosc + $margines_gora + $margines_dol + $liczba_wynikow * $pasek_wykresu + ($liczba_wynikow - 1) * $separator_wierszy; # TWORZENIE RYSUNKU //utworzenie plotna $obrazek = imageCreate($szerokosc, $wysokosc); ### ALOKACJA KOLOROW $bialy = ImageColorAllocate($obrazek, 255, 255, 255); $niebieski = ImageColorAllocate($obrazek, 0, 64, 128); $czarny = ImageColorAllocate($obrazek, 0, 0, 0); $rozowy = ImageColorAllocate($obrazek, 255, 78, 243); $zolty = ImageColorAllocate($obrazek, 255, 255, 128); $szary = ImageColorAllocate($obrazek, 215, 215, 215); $czerwony = ImageColorAllocate($obrazek, 255, 0, 0); ### ELEMENTY FORMATUJACE OBRAZ $tlo = $szary; $obramowanie_kolor = $czerwony; $tekst_czcionka = "tahoma.ttf"; $tekst_pasek_kolor = $bialy; $tekst_punktacja_kolor = $niebieski; $tekst_wartosci_kolor = $czerwony; $tekst_procenty_kolor = $czerwony; $obramowanie_pasek_kolor = $bialy; $linia_pionowa_kolor = $bialy; $pasek_kolor = $niebieski; //utworzenie plotna ImageFilledRectangle($obrazek, 0, 0, $szerokosc, $wysokosc, $tlo); //obramowanie rysunku ImageRectangle($obrazek, 0, 0, $szerokosc - 1, $wysokosc - 1, $obramowanie_kolor); //pasek ImageFilledRectangle($obrazek, 1, 1, $szerokosc - 2, $tekst_wysokosc, $pasek_kolor); //linia pionowa - podstawa rysunku ImageLine($obrazek, $margines_lewy, ($tekst_wysokosc + $margines_gora) - 3, $margines_lewy, $wysokosc - ($margines_gora) + 3, $linia_pionowa_kolor); //sumuje wartosci poszczegolnych wyniki otrzymanych ![]() $suma = 0; for ($i = 0; $i < count($wynik); $i++) $suma +=$wynik[$i]; ### tutaj zrobic to #### !!!!!! - ladnie zapisac for ($i = 0; $i < count($wynik); $i++) { ImageRectangle($obrazek, $margines_lewy, ($i + 1) * $margines_gora + $tekst_wysokosc + $separator_wierszy * $i, $margines_prawy + ($szerokosc - $margines_prawy - $margines_prawy), ($i + 1) * $margines_gora + $pasek_wykresu + $tekst_wysokosc + $separator_wierszy * $i, $obramowanie_pasek_kolor); } //wyliczam szerokosc paska odpowiadajacego 100 procentom $szerokosc_paska = $szerokosc - $margines_lewy - $margines_prawy; $temp = 0; for ($i = 0; $i < count($wynik); $i++) { $procent = 0; if ($wynik[$i] != 0) { $procent = $wynik[$i] / $suma; $temp = intval(round($procent * $szerokosc_paska)); ImageFilledRectangle($obrazek, $margines_lewy + 1, ($i + 1) * $margines_gora + $tekst_wysokosc + 1 + $separator_wierszy * $i, $margines_lewy + $temp - 1,//tutaj sprawdzic jeszcze to czy jest ok ($i + 1) * $margines_gora + $pasek_wykresu - 1 + $tekst_wysokosc + $separator_wierszy * $i, $niebieski); } //wyswietlam kolejne litery alfabetu ImageTTFText($obrazek, 10, 0, 10, ($i * 20) + 60 + $separator_wierszy * $i, $tekst_punktacja_kolor, $tekst_czcionka, $alfabet[$i]); //wyswietlam etykiete ilosciowa: liczba odpowiedzi na dana opcje / calkowita ilosc odpowiedzi ImageTTFText ($obrazek, 10, 0, $szerokosc - 115, ($i * 20) + 60 + $separator_wierszy * $i, $tekst_wartosci_kolor, $tekst_czcionka, $wynik[$i]."/".$suma); //wyswietlam ilosc procent ImageTTFText ($obrazek, 10, 0, $szerokosc - 56, ($i * 20) + 60 + $separator_wierszy * $i, $tekst_procenty_kolor, $tekst_czcionka, round(($procent * 100), 2)."%"); } //$tekst = "To jest testowy tekst, który zostanie wyświetlony na pasku tytułowym obrazka."; ImageTTFText ($obrazek, 10, 0, 10, 17, $bialy, $tekst_czcionka, $tekst); return $obrazek; } ?>[/php:1:5335ceb229] oto kod pobierajacy dane z bazy oraz wyswietlajacy rysunek [php:1:5335ceb229]<?php session_start(); include("inc/funkcje_paczka.php"); include("test.php"); $smarty = new Smarty; $baza = new classMySQL(); $baza2 = new classMySQL(); $baza3 = new classMySQL(); $baza->polaczenieOtworz(); $baza2->polaczenieOtworz(); $baza3->polaczenieOtworz(); #1 wyswietlam wszystkie ankiety $zapytanie = "SELECT ankieta_id, ankieta_nazwa FROM ankiety ORDER BY ankieta_start DESC"; $baza->zapytanieWyslij($zapytanie); $i = 0; while ($wiersz = $baza->pobierzTabliceAsocjacyjna()) { $id[$i] = $wiersz['ankieta_id']; $nazwa[$i] = $wiersz['ankieta_nazwa']; $i++; } $smarty->assign('ile', $i); $smarty->assign('id', $id); $smarty->assign('nazwa', $nazwa); #1 koniec /* JEZELI ZOSTALO PRZEKAZANE ID ANKIETY */ if ($_GET[ankieta]) { #2 pobieram wszystkie pytania przekazane za pomoca zmiennej GET $zapytanie = "SELECT pytanie_id, pytanie_tresc FROM pytania WHERE ankieta_id = '".$_GET[ankieta]."'"; $baza->zapytanieWyslij($zapytanie); $d = 0; //pobieram wszystkie odpowiedzi dla danego pytania; while ($wiersz = $baza->pobierzTabliceAsocjacyjna()) { $pytanie = $wiersz['pytanie_id']; $pytanie_tresc = $wiersz['pytanie_tresc']; $zapytanie_2 = "SELECT odpowiedz_id, odpowiedz_tresc FROM odpowiedzi WHERE pytanie_id = '".$pytanie."'"; $baza2->zapytanieWyslij($zapytanie_2); $j = 0; while ($wiersz_2 = $baza2->pobierzTabliceAsocjacyjna()) { $zapytanie_3 = "SELECT COUNT(*) FROM glosujacy_odpowiedzi WHERE odpowiedz_id = '".$wiersz_2['odpowiedz_id']."'"; $baza3->zapytanieWyslij($zapytanie_3); $wiersz_3 = $baza3->pobierzTabliceAsocjacyjna(); $wynik[$j] = $wiersz_3['COUNT(*)']; $txt = $wiersz['pytanie_tresc']; $j++; } //gotowe rysunki przechowuje w tablicy z ktorej nastepnie wyswietlam na stronie ![]() $temp[$d] = grafika($wynik, $txt); $d++; unset($wynik); } //proba wyswietlenia wszystkich obrazkow ![]() for ($i = 0; $i < count($temp); $i++) { header("Content-type: image/png"); ImagePNG($temp[$i]); ImageDestroy($temp[$i]); } }//koniec: if ($_GET[ankieta]) ?>[/php:1:5335ceb229] I jeszcze jedno pytanie. Wrzucilem caly system na serwer (lycos) w celu przetestowania tego co zrobilem do tej pory i w ogole na ostatecznym rysunku nie wyswietlaja mi sie jakiekolwiek napisy. Jaka jest tego przyczyna?? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 17.05.2003 Skąd: Kraków , Londyn Ostrzeżenie: (0%) ![]() ![]() |
Wiesz co nie wiem czy przypadkiem gd nie korzysta z czcionek zainstalowanych na serwerze , i tu moze jest problem .
Sproboj to samo na innym serwerze ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
czcionka z ktorej chce skorzystac jest wrzucona na serwer i jest dostepna...
gdy testuje skrypt na localhost wszystko jest w porzadku... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
poniewaz pewnie nikomu sie nie chce sledzic kodu to problem przedstawie inaczej:
mam funkcje ktora przygotuwuje mi obrazek do wyswietlenia [php:1:6153f37dd4]<?php function rysuj($szerokosc, $wysokosc) { $obrazek = ImageCreate($szerokosc, $wysokosc); $tlo = ImageColorAllocate($obrazek, 0, 64, 128); ImageFilledRectangle($obrazek, 0, 0, $szerokosc, $wysokosc, $tlo); ImagePNG($obrazek); ImageDestroy($obrazek); } ?>[/php:1:6153f37dd4] nastepnie chce na jednej stronie wyswietlic dwa rysunki -> robie cos takiego: [php:1:6153f37dd4]<?php header("Content-type: image/png"); rysuj(100, 100); rysuj(200, 200); ?>[/php:1:6153f37dd4] niestety w przegladarce wyswietla mi sie tylko jeden obrazek Moje pytanie brzmi: co jest nie tak? Jak powinienem poprawnie postepowac. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Musisz dwa razy wywołać skrypt rysujacy, a nie w jednym wywołaniu wysyłać dwa obrazki.
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
mozesz mi podac kawalek kodu? bo szcze piszac nie za bardzo rozumiem jak mam to wykonac.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Zacznij od tego, że dla każdego obrazka musisz wysłać osobny header. Dodatkowo każdy obrazek musisz potraktować jako osobny plik. Czyli tyle razy wywołać skpry generujący, ile obrazków chcesz wywołać...
Kod <img src="picture.php?szerokosc=100&wysokosc=100">
<br/> <img src="picture.php?szerokosc=200&wysokosc=200"> -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
no i wszystko jasne
![]() teraz musze sobie jeszcze to ladnie jakos ze Smartami polaczyc i bedzie ok piekne dzieki |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 06:53 |