Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> biblioteka GD
mhs
post 4.01.2004, 23:40:11
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 winksmiley.jpg
$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 questionmark.gif
$temp[$d] = grafika($wynik, $txt);

$d++;

unset($wynik);
}

//proba wyswietlenia wszystkich obrazkow sad.gif
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??
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 01:06