Ogłoszenie


Zapraszam serdecznie na strone DARMOWYCH FILMÓW I SERIALI. Każdy znajdzie coś dla siebie. Mam w bazie artykuły dot. webmasteringu, hackeringu i wiele wiele innych. Dodatkowo forum :) Nie czekaj zarejestruj się już dziś : www.Ogladamy.xorg.pl

  • Index
  •  » Kursy
  •  » Instrukcje warunkowe, obsługa formularzy

#1 2008-09-20 14:11:11

RedEagle

Admin

status RedEagle
891470
Zarejestrowany: 2008-09-04
Posty: 1047
Komputer: Windows XP
Gra: GTA VC
Książka: Jim C.Hines-,,Zadanie Goblina"
Muzyka: Green Day

Instrukcje warunkowe, obsługa formularzy

Dotychczas z formularzami nie mogliśmy zrobić nic specjalnego. Czas na małą odmianę. Zanim jednak będziemy je obsługiwać poznajmy pierwszy typ (z dwóch) instrukcji warunkowych.

Najprostszą instrukcją jest:

<?php

if (warunek) { działanie }

?>

Warunki i łączniki


To co jest w klamerkach zostanie wykonane, jeżeli dany warunek jest spełniony. Tworząc warunki przydadzą nam się następujące znaczki:




== - warunek spełniony, jeżeli coś jest równe czemuś

!= - warunek spełniony, jeżeli coś nie jest równe czemuś

< - warunek spełniony, jeżeli coś jest mniejsze od czegoś

<= - warunek spełniony, jeżeli coś jest mniejsze, lub równe czemuś

> - warunek spełniony, jeżeli coś jest większe od czegoś

>= - warunek spełniony, jeżeli coś jest większe, lub równe czemuś



Łącząc kilka warunków w jeden warunek oddzielamy je znaczkami:



&& - warunek spełniony, jeżeli warunki po obu stronach tego znaczka są spełnione

|| - warunek spełniony, jeżeli jeden, lub dwa warunki po obu stronach tego znaczka są spełnione

XOR - warunek spełniony, jeżeli tylko jeden z dwóch po obu stronach tego znaczka jest spełniony



Instrukcja warunkowa "if" w praktyce


Stwórzmy teraz kilka warunków, które będą oparte na zwykłych zmiennych z wykorzystaniem wszystkich świeżo poznanych "znaczków".

Warunek spełniony, jeżeli zmienna $liczba1, jest równa 100:

<?php

$liczba1 = 100;

if ($liczba1 == 100) {

echo "Warunek spełniony";

}

?>

Warunek spełniony, jeżeli zmienna $liczba1 jest mniejsza od 100, a zmienna $liczba2 nie jest równa 200:

<?php

$liczba1 = 100;

$liczba2 = 201;

if ($liczba < "100" && $liczba2 != "200") { echo "Warunek spełniony"; }

?>

Trzy warunki, które są spełnione, jeżeli zmienna $liczba1 jest większa od 100, lub zmienna $liczba2 jest równa 200:

<?php

$liczba1 = 512;

$liczba2 = 200;

if ($liczba1 > "100" || $liczba2 == "200") { echo "Warunek spełniony"; }

?>

<?php

$liczba1 = 99;

$liczba2 = 200;

if ($liczba1 > "100" || $liczba2 == "200") { echo "Warunek spełniony"; }

?>

<?php

$liczba1 = 512;

$liczba2 = 7;

if ($liczba1 > "100" || $liczba2 == "200") { echo "Warunek spełniony"; }

?>

Dwa warunki, które są spełnione, jeżeli zmienna $liczba1 jest większa równa od 100, albo zmienna $liczba2, jest równa 200:

<?php

$liczba1 = 101;

$liczba2 = 210;

if ($liczba1 > "100" XOR $liczba2 == "200") { echo "Warunek spełniony"; }

?>

<?php

$liczba1 = 100;

$liczba2 = 200;

if ($liczba1 > "100" XOR $liczba2 == "200") { echo "Warunek spełniony"; }

?>

Uwaga: pamiętaj, że w ostatnim przypadku liczba 100 nie jest większa od liczby 100 - jest co najwyżej większe równe, lub tylko równe.

W jednym warunku może być więcej niż dwa warunki, mało tego mogą być łączone w bardzo ciekawe sposoby. Poniższy warunek wykona się, jeżeli zmienna $liczba1 jest mniejsza od 100, albo $liczba2 jest równa 200 i $liczba3 jest równa 400:

<?php

$liczba1 = 101;

$liczba2 = 200;

$liczba3 = 400;

if ($liczba1 < "100" XOR $liczba2 == "200" && $liczba3 == 400) {

echo "Warunek spełniony";

}

?>

Można także stosować frazy nieobjęte w cudzysłowy, jakimi są TRUE (ang. prawda) i FALSE (ang. fałsz). Przypisujemy je do zmiennych znaczkami równości - ==, lub możemy całkowicie odwrócić ich działanie używając znaczka !=. Jeżeli chcemy, aby warunek był spełniony, w przypadku kiedy zmienna ma jakąkolwiek wartość używamy warunku... Zaprezentuje to na dwóch przykładach:

<?php

$liczba = 100;

if ($liczba == TRUE) { echo "Warunek spełniony"; }

?>

<?php

$fraza = tekst;

if ($fraza == TRUE) { echo "Warunek spełniony"; }

?>

Jak widzisz, instrukcje nie tylko operują na liczbach, ale i na treści, jak pokazuje powyższy przykład.

Tak samo możemy postąpić, a nawet łatwiej w przypadku FALSE:

<?php

if ($fraza == FALSE) { echo "Warunek spełniony"; }

?>

Jak pewnie domyślasz się, niezadeklarowana zmienna nic nie zawiera więc warunek jest spełniony. Teraz dla przykładu pokażę, jak uzyskać taki sam efekt, jak w poprzednim przypadku używając TRUE:

<?php

if ($fraza != TRUE) { echo "Warunek spełniony"; }

?>

Rozumując dosłownie po angielsku, pierwszy, tzn. przedostatni przykład wypełniał się, jeżeli zmienna zawierała nieprawdę, a drugi – ostatni jeżeli zmienna nie zawierała prawdy. Oczywiście jest to tym samym.


"else if" czyli warunki bardziej sprecyzowane


Instrukcje warunkowe możemy jeszcze sporo rozszerzyć. Możemy dodawać także całe nowe instrukcje, „w przeciwnym wypadku jeżeli” i „w przeciwnym wypadku”. W „w przeciwnym wypadku jeżeli” po klamerce zamykającej poprzednią instrukcje dodajemy nową zaczynającą się od else if, po której jest warunek i działanie w klamrach. Warunek ten wykona się tylko wtedy, jeżeli warunek znajdujący się nad nim nie zostanie spełniony i oczywiście, jeżeli sam warunek else if będzie spełniony. Pierwszy przykład prezentuje sytuację, w której warunek else if nie jest spełniony, ponieważ wyżej znajdujący się warunek if jest spełniony:

<?php

$tekst = "Jeden";

if ($tekst == "Jeden") { echo "Warunek spełniony"; }

else if ($tekst == TRUE) { echo "Warunek w ostateczności spełniony"; }

?>

Teraz przekształćmy zmienną tak, aby wykonał się warunek else if, zmieńmy po prostu zawartość zmiennej $tekst:

<?php

$tekst = "Jedenaście";

if ($tekst == "Jeden") { echo "Warunek spełniony"; }

else if ($tekst == TRUE) { echo "Warunek w ostateczności spełniony"; }

?>

Tak naprawdę warunków else if może być bardzo dużo i jeszcze więcej:

<?php

$tekst = "Jedenaście";

if ($tekst == "Jeden") { echo "Warunek spełniony"; }

else if ($tekst == "Dwa") { echo "Warunek spełniony"; }

else if ($tekst == "Trzy") { echo "Warunek spełniony"; }

else if ($tekst == TRUE) { echo "Warunek w ostateczności spełniony"; }

?>

A gdy nic nie pasuje - instrukcja "else"


Jak na razie nie wiemy, co zrobić, jeżeli warunek nie jest spełniony nie korzystając z FALSE, ani tym podobnych. Pisałem odrobinę wyżej o samym warunku „w przeciwnym wypadku”, którym jest samo else i klamerki. Umieszczamy go na końcu danej instrukcji, czyli po zakończeniu instrukcji if, ewentualnie ostatniej instrukcji else if. Dwa przykłady:

<?php

$tekst = "Pięć";

if ($tekst == "Jeden") { echo "Warunek spełniony"; }

else { echo "Warunek nie spełniony"; }

?>

<?php

$tekst = "Pięć";

if ($tekst == "Jeden") { echo "Warunek spełniony"; }

else if ($tekst == "Dwa") { echo "Warunek spełniony"; }

else if ($tekst == "Trzy") { echo "Warunek spełniony"; }

else if ($tekst == "Czwarty") { echo "Warunek spełniony"; }

else { echo "Warunek nie spełniony"; }

?>

Integracja instrukcji warunkowych - przykłady


Mam nadzieję, że rozumiesz wszystko do tej pory. Oczywiście umieszczanie zmiennych ręcznie, a następnie sprawdzanie, czy ich wartości są większe, mniejsze, czy zawierają prawdę itp. jest czymś po prostu beznadziejnym, lepiej jest do tego wykorzystać zmienne z tablic superglobalnych. Oto przykład zastosowania $_GET:

<?php

$tekst = "Pięć";

if ($_GET[tekst] == TRUE) {

echo "Zmienna \$_GET[tekst] zawiera $_GET[tekst]"; }

?>

Uwaga: do przykładów w instrukcjach warunkowych zakładam, że testujemy swoje narastające zdolności PHP umieszczając kody w pliku index.php, jeżeli tak nie jest... zmieńmy nazwę naszego pliku php.

Jeżeli wejdziemy tak po prostu na tą stronę ujrzymy komunikat zawarty w instrukcji else, ale gdy np. dokleimy do końca adresu coś takiego: ?tekst=nic, ujrzymy informację, że zmienna $_GET[tekst] zawiera nic. Teraz warto byłoby wykorzystać jakiś formularz, nie będziemy przecież prosić internautów, aby sami dłubali się w wpisywaniu danych do adresu:

<?php



if ($_GET[tekst] == TRUE) {

echo "Zmienna \$_GET[tekst] zawiera $_GET[tekst]"; }

else { echo "

<FORM ACTION=\"index.php\" METHOD=\"get\">

Wpisz coś: <INPUT TYPE=\"text\" NAME=\"tekst\"><br />

<INPUT TYPE=\"submit\" VALUE=\"Zobacz co wpisałem\">

</FORM>";

}



?>

Uwaga: atrybut METHOD jest w tym przypadku zbędny, gdyż wartość get jest domyślna.

Powyższy skrypt sprawdza, czy zmienna $_GET[tekst] coś zawiera. Jeżeli tak wyświetla informację, że zawiera to i to, a w przeciwnym wypadku formularz, który pozwala wprowadzić daną do zmiennej. Jak pewnie zauważyłeś nazwa pola, w którym umieszczasz wartość zmiennej ma nazwę taką samą jak zmienna, tak samo będzie i w superglobalnych tablicach $_POST. Mam nadzieję, że nie było to tak trudne jak się wydawało. Przejdźmy teraz do $_POST.

W powyższym przypadku można było spreparować specjalny link, który zrobi to, co mu każemy, nawet bez użycia formularza, co jest wielką wadą, przekonamy się w praktyce. Zabezpiecza to superglobalna tablica $_POST, w której musimy wypełnić określone pola formularza, a sam adres jest wciąż taki sam, tzn. nie przyrasta mu żadnych dodatkowych zmiennych. Oto podobny przykład do poprzedniego, w którym użyto wyłącznie $_POST:

<?php



if ($_POST[tekst] == TRUE) {

echo "Zmienna \$_POST[tekst] zawiera $_POST[tekst]"; }

else { echo "

<FORM ACTION=\"index.php\" METHOD=\"post\">

Wpisz coś: <INPUT TYPE=\"text\" NAME=\"tekst\"><br />

<INPUT TYPE=\"submit\" VALUE=\"Zobacz co wpisałem\">

</FORM>";

}



?>

O tych najważniejszych zmiennych superglobalnych narazie tyle. Pamiętajmy, że nie możemy wyznaczyć sobie lepszej i gorszej superglobalnej zmiennej. Zmienne $_POST możemy uzyskać wyłącznie wypełniając formularze. Inną poważną wadą tych zmiennych jest to, iż roboty wyszukiwarek podczas indeksowania stron nie wypełniają formularzy, które prowadzą do kolejnych stron, te z kolei do kolejnych. Zmienne te są idealne w tworzeniu formularzy sond itp., ale nie do nawigacji po serwisie. Zmienne $_GET eksponują swoją zawartość w pasku adresu, co może przerazić początkujących internautów, jednakże możemy umieszczać ich zawartość w spreparowanych linkach, po których roboty indeksujące strony lubią się przechadzać więc jest to i zaletą, i wadą. Przykład linku wykorzystującego dwie zmienne $_GET:

index.php?zmienna1=wartosc1&zmienna2=wartosc2

Uwaga: aby link był zgodny ze specyfikacją W3C zamiast używać znaków & musimy używać tzw. znaku specjalnego (nie mającego związku z innymi znakami PHP, gdyż jest napisany w innym języku) &.


Instrukcje warunkowe przełącznikowe


Jest jeszcze jeden, na szczęście ostatni typ instrukcji warunkowych, tzw. przełącznik. Przykład przełącznika bez wykorzystania tablic superglobalnych:

<?php

$tekst = "dwa";



switch ($tekst)

{

case "jeden":

echo "wybrałeś opcję jeden";

break;



case "dwa":

echo "wybrałeś opcję dwa";

break;



case "trzy":

echo "wybrałeś opcję trzy";

break;

}

?>

Budowa tej instrukcji jest dość ciekawa. Zaczynamy od słowa switch (ang. przełącznik), po którym w nawiasie widnieje nazwa zmiennej, która jest później warunkowana, o ile jest takie słowo. Następnie wewnątrz klamerki znajdują się słowa case (ang. przypadek), obok którego w cudzysłowie, ewentualnie w apostrofie znajduje się warunek, konkretnie co zmienna może zawierać, aby warunek był spełniony, a następnie dwukropek. Następnie jest działanie danego warunku, w naszym przypadku wyświetlenie danej opcji, a następnie instrukcja break, której zadaniem jest zakończenie danego przypadku, konkretnie dwukropka będącego za cudzysłowem przypadku. Możemy dodawać kolejne przypadki dodając kolejne elementy, które zostały oddzielone wolną linią w powyższym kodzie. Oto zastosowanie tej instrukcji wraz z formularzem, po raz pierwszy klamry będziemy umieszczać w klamrach:

<?php



if ($_POST[tekst] == TRUE) {



switch ($_POST[tekst])

{

case "jeden":

echo "wybrałeś opcję jeden";

break;

case "dwa":

echo "wybrałeś opcję dwa";

break;

case "trzy":

echo "wybrałeś opcję trzy";

break;

}



}

else {

echo "<FORM ACTION=\"index.php\" METHOD=\"post\">

Wybierz coś: <SELECT NAME=\"tekst\">

<OPTION VALUE=\"jeden\">jeden</OPTION>

<OPTION VALUE=\"dwa\">dwa</OPTION>

<OPTION VALUE=\"trzy\">trzy</OPTION>

</SELECT><br />

<INPUT TYPE=\"submit\" VALUE=\"Zobacz co wpisałem\">

</FORM>";

}



?>

Z jakich instrukcji korzystać


Osobiście muszę się przyznać, że nie przepadam za instrukcjami – przełącznikami i wydaje mi się, że ty też ich nie polubisz z prostego przypadku - if będziesz używał częściej, gdyż ta instrukcja pozwala na ściślejsze precyzowanie warunków.

Uwaga: jeżeli chcemy instrukcji – przełącznikowi przypisać jakąś wartość, która będzie spełniana w przypadku nie spełnienia żadnej innej możemy zamiast case „warunek”: napisać default: (ang. domyślny).

Uwaga: w każdym przypadku instrukcji warunkowych, czy to if (w tym także else if i else), czy to switch działaniem spełnienia warunku było wyświetlenie komunikatu za pomocą instrukcji echo. Oczywiście można zrobić w nich setki innych rzeczy – deklarować zmienne, czy nawet nowe funkcje, wyświetlać całe ogromne strony itp. itd.


http://i37.tinypic.com/sbm42f.png
http://i38.tinypic.com/29x82na.png

Offline

 
  • Index
  •  » Kursy
  •  » Instrukcje warunkowe, obsługa formularzy

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora