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??