Основи на PHP - част 4

Както вече видяхте, PHP ви позволява да влагата условни конструкции. Така че, ако погледнете отново примера, който използвахме да демонстрираме коцепцията...





<?
if ( $day == "Thursday" ) {
if ( $time == "12" ) {
if ( $place == "Italy" ) {
$lunch = "pasta";
}
}
}
?>




ще се съгласите, че е доста сложно и страховито. PHP също така поддържа няколко логически оператора, които ви позволяват да групирате заедно логическите условия. Следващата таблица трябва да изясни това.

Оператор
Значение
Пример
Оценява се на

&&
AND
$delta == $gamma && $delta > $omega
True



$delta && $omega < $omega
False

||
OR
$delta == $gamma || $delta < $omega
True



$delta > $gamma || $delta < $omega
False

!
NOT
!$delta
False

<=
е по-малко от или равно на
$delta <= $omega
False


С дадените ни знания, е твърде лесно да пренапишем горният пример в термините на логическите оператори.




<?
if ( $day == "Thursday" && $time == "12" && $place == "Italy" ) {
$lunch = "pasta";
}
?>




Превключвайки ...

Като алтернатива на “if-else” фамилията от контролни структури е PHP конструкцията “switch”, която први почти същото нещо като "if-elseif-else". Тя изглежда така:


<?
switch ( decision-variable ) {
case first_condition_is true:
направи това!
case second_condition_is true:
направо онова!
case third_condition_is true:
направи нещо трето!
... и така нататък ...
}
?>




Ние ще направим нещата по-ясни, като пренапишем нашия "Генератор на курабийки с късметчета" в терминологията на “switch” конструкцията.

[cookie.php]



<?
switch ( $day ) {
// първи случай
case "Monday":
$fortune = "Защо да е просто след като може да е сложно.";
break;
// втори случай
case "Tuesday":
$fortune = "Живота е като игра на бридж - и вие току що сте спечелили.";
break;
// трети случай
case "Wednesday":
$fortune = "Кой може да живее в този луд свят и да не се побърка?";
break;
// четвърти случай
case "Thursday":
$fortune = "Не се ядосвайте.";
break;
// пети случай
case "Friday":
$fortune = "Носете се по течението, живейте както винаги сте искали.";
break;
// ако нито един от горните не е избран ...
default:
$fortune = "Събота и Неделя не работи";
break;
}
?>
<html>
<head>
<basefont face="Arial">
</head>
<body>
Ето го и вашето късметче за <? echo $day; ?>:
<br>
<b><? echo $fortune; ?></b>
</body>
</html>




Тук има няколко важни ключови думи: ключовата дума “break” е използвана, за да се излезе от “switch” блока и незабавно да се придвижим към редовете след него, докато ключовата дума “default” се използва, за да се изпълни подразбиращ се набор от изрази, ако променливата подадена на “switch” не удовлетворява някое от условията изложени в блока.
Изпращане ...

Както сте забелязали, във всичките примери които ви показахме, ние използвахме две страници - една HTML страница съдържаща формата и отделен PHP скрипт, който обработва въведената информация в нея и генерира подходящ изход. Обаче PHP предлага елегантен метод за комбиниране на тези две страници в една, чрез променливата $submit.

Както вече видяхте, веднъж след като формата е изпратена към PHP скрипта, всички полета от формата стават достъпни за PHP. В добавка към дефинираните от потребителя променливи, всеки път когато натиснете бутона SUBMIT на формата, PHP създава променлива с името $submit. И чрез проверката за присъствието или отсъствието на тази променлива, съобразителният PHP програмист би могъл да използва един скрипт да генерира и двата варианта - първоначалната форма и резултата след като тя е била изпратена.

Нека да ви демонстрираме това с файла “cookie.php”





<?
if ( !$submit ) {
// ако $submit не съществува
// значи формата не е изпратена
// значи първо я показваме
?>
<html>
<head>
<style type="text/css">
td {font-family: Arial;}
</style>
</head>
<body>
<font face="Arial" size="+2">
Чудния генератор на курабийки с късметчета.
</font>
<form method="GET" action="cookie.php">
<table cellspacing="5" cellpadding="5" border="0">
<tr>
<td align="center">
Pick a day
</td>
<td align="right">
<select name="day">
<option value="Monday">Понеделник
<option value="Tuesday">Вторник
<option value="Wednesday">Сряда
<option value="Thursday">Четвъртък
<option value="Friday">Петък
<option value="Saturday">Събота
<option value="Sunday">Неделя
</select>
</td>
</tr>
<tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="Hit me!">
</td>
</tr>
</table>
</form>
</body>
</html>
<?
}
else {
// ако $submit съществува
// значи формата е изпратена
// тогава я обработваме с switch()
switch ( $day ) {
// първи случай
case "Monday":
$fortune = "Защо да е просто след като може да е сложно.";
break;
// втори случай
case "Tuesday":
$fortune = "Живота е като игра на бридж - и вие току що сте спечелили.";
break;
// трети случай
case "Wednesday":
$fortune = "Кой може да живее в този луд свят и да не се побърка?";
break;
// четвърти случай
case "Thursday":
$fortune = "Не се ядосвайте.";
break;
// пети случай
case "Friday":
$fortune = "Носете се по течението, живейте както винаги сте искали.";
break;
// ако нито един от горните не е избран ...
default:
$fortune = "Събота и Неделя не работи";
break;
}
?>
<html>
<head>
<basefont face="Arial">
</head>
<body>
Ето го и вашето късметче за <? echo $day; ?>:
<br>
<b><? echo $fortune; ?></b>
</body>
</html>
<?
}
?>




Както виждате, скриптът първо проверява за наличието на променливата $submit и ако не я намери, допуска че формата още не е изпратена и визуализира първоначалния списък от дни.

Тъй като, атрибута ACTION на тага <FORM> указва същия PHP скрипт, щом формата е изпратен, същият скрипт ще бъде извикан за обработка на данните въведени във формата. Този път, обаче, променливата $submit ще съществува и PHP няма да визуализира първоначалната страница, а страницата съдържаща курабийките на късмета.

Забележете, че за да работи вашият


--------------------------------------------------------------------------------

<input type="submit">


--------------------------------------------------------------------------------

трябва да има атрибут NAME със стойност “submit”, като това:


--------------------------------------------------------------------------------

<input type="submit" name="submit">


--------------------------------------------------------------------------------

Други ...

Както споменахме по-горе, PHP4 представя новият оператор ===, който проверява дали променливите са от един и същи тип. Ето един пример:


--------------------------------------------------------------------------------
<?
if ( !$submit ) {
// ако $submit не съществува
// значи формата не е изпратена
// значи първо я показваме
?>
<html>
<head>
<style type="text/css">
td {font-family: Arial;}
</style>
</head>
<body>
<form method="GET" action="cookie.php">
<table cellspacing="5" cellpadding="5" border="0>
<tr>
<td align="center">
Подай ми нещо!
</td>
<td align="right">
<input type="text" name="yin">
</td>
</tr>
<tr>
<td align="center">
Подай ми нещо друго!
</td>
<td align="right">
<input type="text" name="yang">
</td>
</tr>
<tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="Test!">
</td>
</tr>
</table>
</form>
</body>
</html>
<?
}
else {
// ако $submit съществува
// значи формата е изпратена
// тогава я обработваме
if ( $yin === $yang ) {
$result = "Двете променливи са идентични и са от един ъ същи тип.";
}
else {
$result = "Двете променливи или не са идентични или са от различен тип";
}
?>
<html>
<head>
<basefont face="Arial">
</head>
<body>
<b><? echo $result; ?></b>
</body>
</html>
<?
}
?>



Алтернативен синтаксис

PHP също така поддържа и алтернативен синтаксис за повечето контролни структори. Например, вие бихте могли да напишете следното :

<?
if ( $pesho == 0 ) {
echo "Пешо напусна сайта!";
}
else {
echo "Пешо е още тук!";
}
?>

или може да напишете това :
<?
if ( $elvis == 0 ) :
echo "Пешо напусна сайта!";
else :
echo "Пешо е още тук!";
endif;
?>


Втората алтернатива е еквивалентна на първата и просто включва заместването на първите къдрави скоби на всеки чифт с две точки [:], премахвайки вторите къдрави скоби и завършвайки блока с израза “endif”.

Урока е изготвен от www.transcode.org

/ Трябва да сте регистриран за да напишете коментар /