autor: Grzegorz Plebañski
Krótki kurs jêzyka PHP.
Instrukcja warunkowa if/else
Czasem chcemy, ¿eby fragment kodu wykona³ siê tylko pod jakim¶ warunkiem. Stosuje siê wtedy instrukcjê if:
if($a>$b)
echo("$a jest wiêksze od $b");
Je¿eli warto¶æ $a jest wiêksza od $b wy¶wietli siê napis "$a jest wiêksze od $b". Warunek jest spe³niony, je¿eli wyra¿enie w nawiasie ma warto¶æ ró¿n± od zera. Je¿eli bêdzie to np. pusta zmienna warunek nie jest spe³niony. Polecenie w nastêpnej lini zostanie wykonane, je¿eli warunek jest spe³niony. Aby warunek obj±³ kilka poleceñ, stosuje siê nawiasy klamrowe:
if($a>$b)
{
echo("$a jest wiêksze od $b");
$a++;
}
Je¿eli chcemy wykonaæ inny fragment kodu gdy warunek nie jest spe³niony, stosujemy instrukcjê else:
if($a>$b)
echo("$a jest wiêksze od $b");
else
echo("$a jest mniejsze lubrówne $b");
Aby uzyskaæ bardziej z³o¿ony warunek mo¿na zastosowaæ operatory logiczne i (&) oraz lub (|):
if($a>$b|$a<2)
echo("$a jest wiêksze od $b, lub mniejsze od 2");
Operatory logiczne
Aby po³±czyæ kilka warunków mo¿na u¿yæ specjalnych operatorów logicznych. S± to:
|| - alternatywa (lub)
&& - koniunkcja (i)
! - negacja (zaprzeczenie)
Przyk³ad:
$a=1;
$a=3;
if($a==1&&$b==2) echo("A");
if($a==1||$b==2) echo("B");
if(!($a==1&&$b==2)) echo("C");
Wynikiem tego skryptu bêdzie napis "BC". Operator zaprzeczenia mo¿na te¿ dla wygody po³±czyæ z operatorem porównania, np:
$a=1;
if($a!=2) echo("Warunek spe³niony");
Pêtla while
Aby fragment kodu wykonaæ wiele razy stosuje siê pêtle. PHP obs³uguje 3 rodzaje pêtli: while, do..while i for. Najprostsz± z nich jest pêtla while:
$a=0;
while($a<5)
{
echo("$a ");
$a++;
}
W pêtli while najpierw sprawdzany jest warunek (w tym wypadku $a<5). Je¿eli jest spe³niony, pêtla wykonuje siê i wraca do sprawdzenia warunku. Je¿eli warunek nie jest spe³niony, wykonanie pêtli koñczy siê. Powy¿szy skrypt wy¶wietli liczby od 0 do 4.
Pêtla do..while
$a=0;
do
{
echo("$a ");
$a++;
}while($a<5);
Pêtla do..while ró¿ni siê od pêtli shile tym, ¿e najpierw wykonuje siê pêtla, a dopiero potem sprawdzany jest warunek. Oznacza to, ¿e pêtla zawsze wykona siê co najmniej 1 raz. Powy¿szy skrypt zadzia³a tak samo jak poprzedni. Ró¿nica bêdzie widoczna w poni¿szych pêtlach:
$a=6;
do
{
echo("$a ");
$a++;
}while($a<5); /* ta pêtla wykona siê 1 raz */
$a=6;
while($a<5)
{
echo("$a ");
$a++;
} /* instrukcje w tej pêtli nie zostan± wykonane */
Pêtla for
Wykonanie pêtli for:
for($a=0;$a<5;$a++)
{
echo("$a ");
}
Odpowiada wykonaniu pêtli:
$a=0;
while($a<5)
{
echo($a);
$a++;
}
Mo¿na to te¿ zapisaæ jako
for($a=0;$a<5;echo("$a "), $a++);
Instrukcje break i continue
Wykonanie pêtli mo¿na w ka¿dym momencie zakoñczyæ. S³u¿y do tego instrukcja break:
$a=0;
while($a<10)
{
$a++;
if($a==3)
break;
}
Ta pêtla nie wykona siê 10 razy - gdy $a osi±gnie warto¶æ 3, wykonanie pêtli zostanie przerwane. Mo¿na te¿ przej¶æ do nastêpnego powtórzenia - s³u¿y do tego instrukcja continue:
$a=0;
while($a<10)
{
$a++;
if($a==3)
continue;
echo("aaa"); /* ta instrukcja wykona
siê tylko gdy $a nie jest równe 3 */
}
Instrukcja switch
Czasem zmienna mo¿e mieæ jedn± z kilku warto¶ci, w zale¿no¶ci odktórych nale¿y podj±æ odpowiedni± akcjê. Mo¿na to zrobiæ stosuj±c instrukcjê if:
if($a==1)
{
echo("a jest równe 1");
}
if($a==3)
{
echo("a jest równe 3");
}
if($a==11)
{
echo("a jest równe 11");
}
Du¿o wygodniejsze jest zastosowanie instrukcji switch:
switch($a)
{
case 1:
echo("a jest równe 1");
break;
case 3:
echo("a jest równe 3");
break;
case 11:
echo("a jest równe 11");
break;
}
Obs³uga formularzy
Skryptu PHP mo¿na u¿yæ do obs³ugi formularza. Aby tego dokonaæ, nale¿y najpierw odpowiednio przygotowaæ formularz. W znaczniku FORM w parametrze ACTION nale¿y podaæ adres dokumentu PHP maj±cego obs³u¿yæ ten formularz. Parametr METHOD mo¿e mieæ warto¶æ POST lub GET - obie metody s± obs³ugiwane przez PHP. Jednak nale¿y pamiêtaæ, ¿e formularze wysy³ane przez GET maj± do¶æ ograniczon± d³ugo¶æ. Ich zalet± jest za to, ¿e u¿ytkownik mo¿e zrobiæ sobie zak³adkê do wyników formularza, co nie jest mo¿liwe w przypadku formularzy POST. Nale¿y pamiêtaæ o zdefiowaniu nazw wszystkich pól formularza z których skrypt ma skorzystaæ. Przyk³ad:
<FORM ACTION=skrypt.php3 METHOD=POST>
<INPUT TYPE=TEXT NAME=tekst>
</FORM>
Napisanie skryptu obs³uguj±cego formularz jest bardzo proste. W³a¶ciwie wiêkszo¶æ pracy wykonuje za nas PHP - po prostu w skrypcie od razu bêd± dostêpne zmienne o nazwach takich jak nazwy pól formularza, zawieraj±ce ich warto¶ci:
echo($tekst); /* ta linia wy¶wietli zawarto¶æ
pola tekst z formularza */
W przypadku pola tekstowego bêdzie to po prostu wpisany przez u¿ytkownika tekst. Je¿eli pole jest typu CHECKBOX warto¶ci± bêdzie "on" je¿eli pole jest zaznaczone, lub zmienna bêdzie pusta je¿eli pole nie zosta³o zaznaczone. Je¿eli w polu typu CHECKBOX podamy parametr VALUE, bêdzie on u¿yty zamiast "on". Tak samo wygl±da obs³uga pola typu RADIO. Warto¶ci± pola SELECT bêdzie warto¶æ parametru VALUE zdefiniowanego w znaczniku OPTION.
Wysy³anie poczty
Ze skryptu PHP mo¿na bardzo ³atwo wys³aæ e-maila. S³u¿y do tego funkcja mail. Pobiera ona 4 parametry. Pierwszy z nich to lista adresatów oddzielonych spacjami. Nastêpny to temat wiadomo¶ci. Trzeci parametr to tre¶æ wiadomo¶ci, a czwarty mo¿e zawieraæ dodatkowe pola nagówka wiadomo¶ci (jest dopisywany na koñcu nag³ówka). Przyk³±d:
mail("ty@twoj.serwer", "Wiadmo¶æ testowa", "Tutaj mo¿na wpisaæ tresæ wiadomo¶ci.\nNastêpna linia.");
Ten przyk³ad wy¶le wiadomo¶æ na adres ty@twoj.serwer.
Wysy³anie formularza poczt±
Maj±c powy¿sze wiadomo¶ci wys³anie formularza poczt± nie powinno stanowiæ problemu. Najpierw trzeba zdefiniowaæ formularz:
<FORM ACTION=skrypt.php3 METHOD=POST>
<INPUT TYPE=TEXT NAME=email><BR>
<TEXTAREA NAME=tresc></TEXTAREA><BR>
<INPUT TYPE=SUBMIT>
</FORM>
Teraz skrypt który wy¶le dane poczt±:
mail("ty@twoj.serwer", "Formularz", $tresc, "Reply-To: $email");
Jedna linijka i gotowe.s
Widaæ tutaj jedno z wa¿niejszych zastosowañ 4 parametru funkcji mail: mo¿na podaæ adres zwrotny listu. Je¿eli teraz u¿ytkownik wpisze do formularza swój e-mail, bêdzie mo¿na odpowiedzieæ u¿ywaj±c funkcji reply programu pocztowego. Uwaga: nie ka¿dy serwer pozwoli na wys³anie wiadomo¶ci z polem Reply-To zawieraj±cej adres na innym serwerze.
(C)opyright 1999-2000 by Grzegorz Plebañski
ygreg@and.pl
http://ygreg.and.pl
|