Tworzenie obrazka w pętli.

Odpowiedz Nowy wątek
2011-09-01 13:42
0

Część mam taki problem:
Wpisuję kilka danych w formularzu i później przesyłam je do php i tworzę obrazek, kilka obrazków, mniej więcej takie coś chce zrobić tylko ze w php:
user image

Wyciąłem dwie tabelki ( z nr 1 i z nr 2 ) ponieważ różnią się one, nr 1 ma pierwsze pole czerwone, a nr drugi i kolejne mają już normalne pola, zrobiłem sobie taki skrypt:

PHP:

<?php
if ($_POST['osoby']) {
ob_start();
header('Content-Type: image/png');
$osoby = explode("|",$_POST['osoby']);
foreach($osoby as $osoba){
if ($osoba[0] == '1') {$tlo = 'nr1.png';} else {$tlo = 'nr.png';}
$im = imagecreatefrompng($tlo);  
 
$col = imagecolorallocatealpha($im, 255, 255, 255, 100);
 
$rozmiar = 11;  
$kat = 0;  
$gora = 17;  
$kolor = imagecolorallocate($im, 255, 255, 255);  
imagettftext($im, $rozmiar, $kat, 14, $gora, $kolor, "arial.ttf", $osoba[0]);  
imagettftext($im, $rozmiar, $kat, 33, $gora, $kolor, "arial.ttf", $osoba[1]);  
imagettftext($im, $rozmiar, $kat, 161, $gora, $kolor, "arial.ttf", $osoba[2]); 
imagettftext($im, $rozmiar, $kat, 367, $gora, $kolor, "arial.ttf", $osoba[3]); 
imagettftext($im, $rozmiar, $kat, 446, $gora, $kolor, "arial.ttf", $osoba[4]); 
 
$im = imagerotate($im, 0, $col);
imagesavealpha($im, true);
imagepng($im);  
imagedestroy($im);  
}
}
ob_end_flush();
?>

HTML:

<form action='indexx.php' method='post'>
<textarea name='osoby' style='width:400px; height:200px;'></textarea><br/>
<input type='submit' value='Dodaj' style='width:80px'/>
</form>

I mam takie problemy z tym kodem:
Gdy wpiszę 1|2|3 ( w formularzu) to w obrazku dodaję się tylko 1 a powinno być też 2 i 3...
Kolejny problem jest taki, jak zrobić taką pętle (bo ta moja chyba nie działa) żeby zrobić tak:
1|a1|b1|c1|d1
2|a2|b2|c2|d2
3|a3|b3|c3|d3
To się zrobią 3 obrazki w tym jeden z tłem (nr1.png)
Jak na razie to tyle mam problemów ;)

Jak sobie z tym poradzić, macie może jakieś pomysły ?

Jeżeli nie sformatujesz tego kodu, to nikt nie będzie go czytał... - Patryk27 2011-09-01 13:46

Pozostało 580 znaków

2011-09-01 13:47
0

Hm...
Mnie zaciekawił taki zapis:

if ($_POST['osoby'])

Chyba miało być:

if (isset($_POST['osoby']))

;)


Pozostało 580 znaków

2011-09-01 13:55
0

Różnicy na pierwszy rzut oka nie ma po zastosowaniu :), wiec pewnie zbytnio różnicy nie ma :)
Ale dzięki :)

http://ideone.com/pc1GW Nie mówię, że to się mogło zdarzyć, ale jest różnica. - Endrju 2011-09-01 15:00

Pozostało 580 znaków

2011-09-01 14:58
0

Różnica jest taka:
Jeżeli wywołałbyś skrypt PHP bez tego parametru, to Twój kod wywaliłby błąd, a po poprawce (funkcja isset) po prostu wyświetli białą stronę (bądź to, co będzie po 'else', ale póki co tam nic nie ma).


edytowany 1x, ostatnio: Patryk27, 2011-09-01 14:58

Pozostało 580 znaków

2011-09-01 15:42
Rev
0

W pętlę wrzuć tylko część kodu odpowiedzialną za wypisanie tekstu - imagettftext. Teraz masz tam cały kod odpowiedzialny za stworzenie obrazka, wypisanie tekstu i przesłanie obrazka do przeglądarki. To pierwsze i ostatnie trzeba zrobić tylko raz.

Prawdopodobnie, gdyby nie to zjeb*** formatowanie polegające na niekorzystaniu z wcięć w blokach, zauważyłbyś to od razu.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0