آموزش کار با PHP

مقدمه
PHP یک زبان اسکریپتی سمت سرور (Server Side) می باشد که امروزه بیش از نصفی از وبسایتهای مطرح جهان، از آن برای حفظ و نگهداری داده ها و ایجاد سایتهای دینامیک و به روز استفاده می کنند.
PHP هم همانند تمامی زبانهای برنامه نویسی Server Side، ترجمه شده و در نهایت به صورت کدهای HTML در اختیار کاربر قرار می گیرد. از این رو کد شما، از دید دیگران پنهان می ماند.

اما فرق PHP با دیگر زبانها چیست؟ یکی از مهمترین رقیبهای PHP، توسط مایکروسافت تحت عنوان ASP که در نسخه جدید به ASP.NET تغییر نام داده است، به وجود آمده و هنوز بحث سر آن است که کدامیک از آنها قویتر و مناسب تر است.
در این مقاله نمی خواهم بگویم که کدام یک بهتر است. هر کس عقاید مربوط به خود را دارد. در زیر به مقایسه این دو زبان می پردازم:
• تقریبا در تمامی مراکز فروش هوست (Host)، سرور لینوکس ارزانتر از سرور ویندوز است و از آنجا که برای اجرای صفحات ASP.NET، نیازمند سرور ویندوز همراه با وب سرور IIS هستیم، می بایست پول بیشتری را پرداخت کنیم. این در حالی است که PHP بر روی تمامی Platformها از قبیل ویندوز و لینوکس نصب و اجرا می گردد.

• PHP کاملا Open-Source می باشد.
• به وضوح در اجرای صفحات ASP.NET و PHP دیده می شود که سرعت PHP سریعتر از ASP.NET می باشد.
• برای ایجاد کردن صفحات PHP، هیچ نرم افزار جامعی به بازار ارائه نشده است که بتواند نیازهای کاربران را بر طرف کند (از Dream Weaver می توان تا حدی استفاده کرد)، اما نرم افزار پر قدرت Visual Studio.NET، نرم افزاری جامع برای ایجاد صفحات دینامیک ASP.NET می باشد.
• در ASP.NET می توان از ترکیب زبانهای برنامه نویسی مختلف نظیر VB, C#, C++و غیره استفاده کرد ، اما PHP فقط از همان زبان خودش که PHP است پشتیبانی می کند.

• ASP.NET دارای ویژگی ای تحت عنوان Code Behind می باشد که به برنامه نویس اجازه می دهد کدهای HTML را جدا از کدهای ASP.NET نگهداری کند. این کار سبب آن می شود که در صورت نیاز به رفع مشکل، برنامه نویس مستقیما به فایل مربوط به کدهای ASP.NET برود و با کدهای HTML کاری نداشته باشد. در صورتی که PHP به صورت Default این طور نیست (به وسیله نرم افزارهایی می توان برای PHP هم، این کار را کرد).
همان طور که مشاهده کردید، هر کدام از آنها دارای معایب و مزایایی هستند و انتخاب آنها، کاملا به عهده خود شماست.

نصب PHP
نصب PHP بر روی ویندوز و IIS کار بسیار آسانی است. اما از آنجا که در این مقاله، علاوه بر آشنایی با PHP، مروری بر پایگاه داده ی MySQL داریم، نیازمند MySQL نیز هستیم. اگر بخواهید تک تک آنها را از اینترنت دانلود کرده و آنها را جداگانه نصب و پیکربندی کنید، می بایست وقت بسیاری را صرف کنید. دانلود آنها (آن هم با یک مودم و اینترنتی که بیش تر از ۴KB/S نمی رود) کار بسیار زمان بری است. همچنین برای پیکربندی آنها نیز، مستلزم انجام کارهای نه چندان خوشایند هستید!
بدین منظور، من به شما یک راه ساده تر را پیشنهاد می کنم. XAMPP!

XAMPP یک مجموعه نرم افزاری بسیار جالب است که علاوه بر حجم کم آن (تنها ۱۳MB)، تمامی پکیجهای مورد نیاز شما را شامل می شود:
• Apache 2.0.48
• MySQL 4.0.16
• PHP 4.3.4 + PEAR
• MiniPerl 5.8.0
• mod_php 4.3.4
• PHPMyAdmin 2.5.3
• SQLite 2.8.6

این در حالی است که فقط خود MySQL به تنهایی، حجمی بیشتر از ۱۰MB دارد.
من از پکیج XAMPP mini win32 Version 1.2 در کامپیوتر خودم استفاده می کنم. آن را می توانید از آدرس زیر دانلود کنید.
http://www.apachefriends.org/download.php?minixampp-win32-1.2.exe

چگونگی نصب XAMPP
نکته: قبل از انجام اين عمليات، وب سرور IIS خود (و يا ديگر وب سرورها) را غير فعال (Disable, Stop) کنيد.
پس از دريافت XAMPP آن را در جاي مورد نظر خود نصب (Extract) کنيد. فرق نمي کند که کجا باشد.
سپس به پوشه اي که XAMPP را در آنجا Extract نموده ايد، برويد. فايل setup_xampp.bat را باز کرده تا صفحه سياهي نمايان شود. عدد ۱ را وارد کرده و کليد Enter را فشار دهيد تا مراحل نصب آغاز شود.
پس از آنکه نصب به پايان رسيد، مي بايست سرور شويد. براي اينکار دو فايل apache_start.bat و mysql_start.bat را اجرا کرده و ديگر کاري به آنها نداشته باشيد. آنها را Minimize کرده و مابقي کارها را انجام دهيد.
حال مرورگر دلخواه خود را باز کرده و عبارت http://localhost (يا http://127.0.0.1) را تايپ نماييد. با انجام اينکار مي بايست صفحه بنفش رنگي نمايان شود.

چگونگي اجرا کردن اسکريپتهاي PHP به وسیله XAMPP
اسنادي را که خواهان اجراي آن به وسيله XAMPP هستيد، مي بايست درون پوشه htdocs کپي نماييد. ولي در نوشتن آدرس آن در مرورگر، نيازي به نوشتن اين پوشه نيست. به عنوان مثال فايل %XAMPP%\htdocs\weblog\index.php را در مرورگر مي بايست به صورت http://localhost/weblog/index.php اجرا نمود…

شروع کار با PHP
در برنامه نویسی هیچ چیز لذت بخش تر از کد نویسی نیست. همین حالا برنامه Notepad خود را باز کرده و کدهای زیر را در آن بنویسید:
<html>
<head>
<title>PHP Info</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
</head>

<body>
<?php
phpinfo();
?>
</body>

</html>

این فایل را در محل %XAMPP%\htdocs\PHP\phpinfo.php ذخیره کرده و به وسیله مرورگر خود، آدرس http://localhost/PHP/phpinfo.php را اجرا نمایید. با انجام این کار، صفحه ای که مشخصات PHP نصب شده بر روی سیستم را به شما نشان می دهد، نمایان خواهد شد.
آشنایی با PHP
همان طور که در مثال بالا مشاهده کردید، کد زیر با بقیه کدهای HTML فرق داشت:
<php
phpinfo();
?>
این تکه کدی است که به وسیله PHP نوشته شده است. برای نوشتن کدهای PHP، می بایست آنها را در بین تگهای ?> و <?php یا ?> و <? قرار داد. همچنین یک راه میانبر نیز است که به صورت <?=SOMETHING?> به کار می رود. در این مقاله از همان روش ?> و <?php استفاده می شود.
عبارات (Statements)

به طور کلی در PHP، عبارات به دو دسته زیر تقسیم می شوند:
• تک خطی (Single Line)
• چندخطی (Multi Line)
در انتهای هر عبارت PHP، یک علامت سمی کالن (;) قرار می گیرد. به وسیله این علامت، PHP متوجه می شود که یک عبارت به اتمام رسیده و عبارت دیگری در حال شروع است. به مثالهای زیر توجه کنید:
<?php
echo(“Hello World!”);
echo(“Mojtaba”);
?>

<?php
echo(“Hellow World”); echo(“Mojtaba”);
?>
هر دو کد بالا صحیح است. چرا که بعد از اتمام هر یک از عبارت PHP، یک علامت سمی کالن قرار داده شده است. برنامه نویسان معمولا از کد بالایی استفاده می کنند. چرا که در آن، هر یک از کدهای PHP در یک خط مجزا قرار گرفته و در نتیجه نگهداری کد آسان تر خواهد شد. حال به کد زیر توجه کنید:
<?php
echo(“Hello World!”)
echo(“Mojtaba”)
?>

اجرای این کد سبب خطا می شود. چرا که عبارت در آن از هم جدا نشده است و عبارتی همانند عبارت echo(“Hello World”) echo(“Mojtaba”) برای PHP ناآشناست.
تا به اینجای کار، عبارت تک خطی مورد بررسی قرار گرفتند و اما عبارات چند خطی. عبارات چندخطی که به کد بلاک (Code Block) معروف است، در PHP توسط آکولادها { } احاطه می شوند. این عبارات با همدیگر اجرا می شوند. به عنوان مثال در یک عبارت شرطی (عبارات شرطی در جلوتر مورد بررسی قرار می گیرند)، برای PHP تعیین می کنیم که اگر شرط درست بود، این سری عبارات و در غیر این صورت، سری دیگری عبارات را اجرا نماید:

<?php
if (8 > 5) {
echo(“True”);
echo(“8 is greater than 5”);
} else {
echo(“False”);
echo(“The statement is false”);
}
?>

فعلا زیاد به معنای این قطعه کد کار نداشته باشید. من فعلا می خواهم به شما ساختار عبارات چند خطی را نشان بدهم. در این قطعه کد اگر شرط درست باشد، دو عبارت بالایی و در غیر این صورت، دو عبارت پایینی اجرا می شوند. همان طور که می بینید، عبارت در بین آکولادها قرار گرفته اند. همچنین در انتهای هر عبارت، یک علامت سمی کالن قرار داده شده است. انجام این کار را هیچ موقع فراموش نکنید: قرار دادن یک سمی کالن در انتهای هر عبارت.
در اینجا بد نیست به نکته دیگری نیز اشاره کنم. شما می توانید کدهای PHP را همراه با کدهای HTML مخلوط کنید.

ابتدا به مثال زیر توجه کنید تا درباره آن بیشتر توضیح دهم:
<?php
if (8 > 5) {
echo(“8”);
?>
<br>is greater than<br>
<?php
echo(“5”);
}
?>
همان طور که مشاهده می کنید، در قطعه کد بالا، ما از دو بلاک PHP استفاده کردیم و در بین آنها یک خط کد HTML قرار داده ایم. در این کد همان طور که مشاهده می کنید، از عبارات چند خطی استفاده شده است (به آکولادها دقت داشته باشید). آکولاد آغازین در قطعه کد اول و آکولاد پایانی در قطعه کد دوم قرار داده شده است. خروجی این عبارت به صورت زیر خواهد بود.
۸
is greater than
5
توضیحات (Comments)

همانند توضیحات در HTML، در PHP هم می توان از توضیحات استفاده کرد. به نظر من توضیحات یکی از اصلی ترین بخشهای برنامه نویسی می باشد. به وسیله توضیحات، می توانید بعد از نگاه مجدد به کد نوشته شده، ساختار آن را بفهمید. شاید در نگاه اول با خود بگویید کدی را که خودم نوشتم، دیگر نیازی به توضیحات ندارد. اما فرض کنید شما برنامه ای نوشته اید و هم اکنون، ۱ سال است که دیگر به کدهای آن نگاهی نینداخته اید. در این صورت توضیحات، با ارزشترین چیز برای شما خواهد بود.

توضیحات در PHP به دو نوع توضیحات تک خطی و چند خطی تقسیم می شود. برای قرار دادن توضیحات تک خطی، از دو روش زیر می توانید استفاده کنید:
• استفاده از دابل اسلش (//)
• استفاده از کاراکتر شارپ (#)
همچنین برای قرار دادن توضیحات چندخطی، از توضیحات نوع جاوا یا C++ (که در CSS نیز از آنها استفاده می شود)، استفاده می کنیم. برای این کار توضیحات خود را در بین علامتهای */ و /* قرار می دهیم.
همچنین به این نکته دقت داشته باشید که توضیحاتی که در بین کدهای PHP قرار می دهید، پس از اجرا در مرورگر، در Source صفحه به نمایش در نخواهند آمد. به کد زیر توجه کنید:
<?php

/* The below statements,
print “Hello World”
to the browser */
echo(“Hello”); // Print “Hello” to the browser
echo(“World”); # Print “World” to the browser
?>
همچنین می توانید توضیحات را در جاهای دیگر نظیر وسط کدهای PHP نیز، قرار دهید. هر دو قطعه کد زیر درست می باشند.
<?php
echo(/*Quantity*/ 2 /*Operation*/ * /*Price*/ 150);
?>
همان طور که مشاهده می کنید، تمامی عبارات /*Quantity*/ و /*Operation*/ و /*Price*/ به عنوان توضیح مد نظر گرفته شده اند. علامت * که در بین دو عبارت /*Price*/ و /*Operation*/ قرار گرفته، علامت ضرب می باشد که دو عبارت ۲ و ۱۵۰ را در یکدیگر ضرب می نماید. خروجی این مثال، ۳۰۰ می باشد.

<?php
echo(
2 #Quantity
* //Operation
150 #Price
);
?>
متغیرها (Variables) یا لیترالها (Literals)
متغیرها (که به آنها لیترال نیز می گویند)، پرکاربردترین چیز در PHP می باشند. به طور کلی متغیرها به دسته های زیر تقسیم می شوند:
• متغیرهای متنی (رشته ای Strings)
• متغیرهای عددی (اعداد صحیح، اعداد اعشاری، اعداد اعشاری با دقت مضاعف)
• متغیرهای بولین (Boolean) که درست (True) یا غلط (False) می باشند
• آرایه ها (Arrays)
برای ساخت متغیرها، از علامت دلار ($) استفاده می کنیم. بدین ترتیب که ابتدا یک علامت $ نوشته، سپس بعد از آن نام متغیر مورد نظر خود را می نویسیم. سپس یک علامت تساوی (=) گذاشته و مقدار آن متغیر را می نویسیم. دقت داشته باشید که نام متغیرها Case-Sensitive می باشند. این بدین معناست که دو متغیر $mojtaba و $Mojtaba برای PHP، دو متغیر متفاوت از هم می باشند.

<?php
$name = “Mojtaba”;
?>
در این مثال ما مقدار Mojtaba را که به صورت یک رشته (String) می باشد، درون متغیری به نام $name قرار داده ایم.
رشته ها معمولا در بین کوتیشنهای دوتایی (“) یا کوتیشنهای تکی (‘) قرار می گیرند. در زیر درباره فرق این دو نوع کوتیشن بحث شده است.
• متغیرها در کوتیشن تکی ترجمه نمی شود.
<?php
$name = “Mojtaba”;
echo (‘My name is $name’);
?>
خروجی این عبارت My name is $name خواهد بود. حال اگر همین کار را به وسیله کوتیشن دوتایی انجام می دادیم، خروجی به صورت My name is Mojtaba به نمایش در می آمد.
<?php
$name = “Mojtaba”;
echo (“My name is $name”);
?>
• در کوتیشن تکی، عباراتی نظیر \n یا \t مورد بررسی قرار نمی گیرند (این عبارات جلوتر مورد بررسی قرار می گیرند).

همان طور که در بالا گفته شد، می توانید رشته ها را در بین کوتیشنهای تکی یا دوتایی قرار دهید. حال فرض کنید که می خواهید داخل رشته خود، از علامت ” یا ‘ نیز استفاده کنید. به عنوان مثال می خواهید عبارت My name is “Mojtaba” را بر روی مرورگر به نمایش در آورید. ممکن است برای این کار از کد زیر استفاده نمایید:
<?php
echo(“My name is “Mojtaba””);
?>
اما اجرای این کد سبب خطا می شود. چرا که PHP در هنگام برخورد با کوتیشن دوم، تصور می کند که رشته تمام شده است و در نتیجه مابقی عبارت که Mojtaba””); می باشد، برای آن نامعقول است. برای این کار می بایست قبل از علامت کوتیشنی که می خواهید در مرورگر به نمایش در آید، یک علامت Backslash (\) قرار دهید. یعنی کد بالا به صورت زیر در می آید:
<?php
echo(“My name is \”Mojtaba\””);
?>
پرکاربردترینهای Backslash به شرح زیر می باشد:
o \n سبب ایجاد یک خط جدید در کد HTML (و نه در خروجی مرورگر) می شود.
o \t سبب ایجاد یک Tab در کد HTML (و نه در خروجی مرورگر) می شود.
o \\ سبب نمایش یک Backslash می شود.
o \$ سبب نمایش علامت دلار می شود.
o \” سبب نمایش کوتیشن دوتایی می شود.
برای درک بیشتر این کاربردها، به مثال زیر توجه کنید:
<?php
echo(“C:\\PHP\n”);
echo(“<table>”);
echo(“\n\t<tr>”);
echo(“\n\t\t<td>”);
echo(“\”Mojtaba\””);
echo(“</td>”);
echo(“\n\t</tr>”);
echo(“\n</table>\n”);
?>
خروجی این مثال به صورت زیر خواهد بود:
C:\PHP
“Mojtaba”
همچنین اگر Source صفحه را مشاهده کنید، عبارات به صورت زیر خواهند بود (برای مشاهده Source صفحه، از منوی View گزینه Source را انتخاب کنید (مرورگر IE)).
C:\PHP
<table>
<tr>
<td>”Mojtaba”</td>
</tr>
</table>
ساختارهای کنترلی
همانند تمامی زبانهای برنامه نویسی، PHP هم دارای عبارات شرطی، حقله ها و غیره می باشد. در این قسمت از مقاله، با این نوع ساختارها آشنا می شویم.

عبارات شرطی
عبارات شرطی در PHP، به دو صورت زیر می تواند ساخته شود:
• if
• switch
عبارت شرطی if
ساختار عبارت شرطی if (که به معنای اگر می باشد)، به صورت زیر می باشد:
if (condition) {
statements;
}
اگر عبارت داخل پرانتز، یک عبارت صحیح (True) باشد، عبارات درون آکولاد به اجرا در خواهند آمد. مثال:
<?php
$totalPrice = 100000;
if ($totalPrice >= 70000) {
$free = 0.1 * $totalPrice;
$lastPrice = $totalPrice – $free;
echo(“$lastPrice”);
}
?>
این مثال مقدار متغیر $totalPrice را گرفته و چنان چه مقدار آن بیشتر از ۷۰۰۰۰ بود، عبارات درون شرط if را اجرا می کند. کار آن این است که ۱۰ درصد $totalPrice را حساب کرده و آن را از $totalPrice کم کرده و درون متغیر $lastPrice قرار می دهد. سپس مقدار نهایی را به کاربر نشان می دهد. از آنجا که مقدار $totalPrice در ابتدای اسکریپت برابر ۱۰۰۰۰۰ می باشد، در نتیجه شرط برقرار بوده و عبارات درون آن پردازش می شوند. خروجی این مثال ۹۰۰۰۰ خواهد بود (بعدا یاد خواهید گرفت که چگونه اطلاعات را از کاربر جمع آوری کرده و بر روی داده های وارد شده توسط کاربر، عملیات انجام دهید).

کامل کردن عبارت شرطی if به وسیله elseif
تا به اینجای کار، در صورتی که شرط درست بود، عبارات اجرا می شدند. حال می خواهیم بگوییم به PHP بگوییم که اگر شرط نادرست باشد، چه کار باید بکند. برای این کار می توانیم از elseif و else استفاده کنیم. به مثال زیر توجه کنید:
<?php
$age = 20;
if ($age < 13 && $age > 0) {
echo(“Baby”);
} elseif ($age >=13 && $age < 18) {
echo(“Teenager”);
} elseif ($age >= 18 && $age <= 25) {
echo(“Young”);
} else {
echo(“Your age is greater than 25”);
}
?>
در این مثال، متغیر $age برابر ۲۰ می باشد. به وسیله شرطها ما عبارات مختلفی را به کاربر نشان می دهیم:
• اگر $age مابین ۰ و ۱۳ بود، عبارت Baby به نمایش در می آید.
• اگر $age مابین ۱۳ و ۱۸ بود، عبارت Teenager به نمایش در می آید.
• اگر $age مابین ۱۸ و ۲۵ بود، عبارت Young به نمایش در می آید.
• اگر هیچ یک از شرطهای بالا برقرار نبود، عبارت Your age is greater than 25 به نمایش در خواهد آمد.
خروجی این مثال Young می باشد.
در این مثال ما از عملگرهایی نظیر && استفاده کردیم. به این عملگرها، در حقیقت عملگرهای منطقی می گویند. در زیر با این عملگرها آشنا می شویم.

عملگرهای عددی
این عملگرها، همان عملگرهای درون ریاضی هستند:
• عملگر * که به وسیله آن می توان اعداد را در یکدیگر ضرب نمود
• عملگر + که به وسیله آن می توان اعداد را با یکدیگر جمع نمود
• عملگر – که به وسیله آن می توان اعداد را از یکدیگر تفریق نمود
• عملگر / که به وسیله آن می توان اعداد را بر یکدیگر تقسیم نمود
• عملگر % که در حقیقت، همان عملگر mod در ریاضیات می باشد و باقی مانده یک تقسیم را بدست می آورد. به عنوان مثال ۵%۲ برابر ۱ خواهد بود.
عملگر انتساب و تساوی
در قبل تر مشاهده نمودید که برای انتساب یک مقدار به یک متغیر، از علامت = استفاده کردیم. حال فرض کنید که می خواهید به وسیله شرط if بررسی نمایید که اگر مقدار متغیر $name برابر Mojtaba بود، عبارت Hello Mojtaba را بر روی مرورگر به نمایش در آورد. ممکن است برای این کار شما از کد زیر استفاده نمایید:
<?php
$name = “Sara”;
if ($name = “Mojtaba”) {
echo(“Hello Mojtaba”);
} else {
echo(“You are not Mojtaba”);
}
?>

این اسکریپت به درستی کار نخواهد کرد. از آنجا که در ابتدای اسکریپت ما مقدار Sara را به متغیر $name داده ایم، و در پایین تر آن، شما به وسیله شرط if می خواهید بررسی کنید که آیا مقدار متغیر $name برابر با Mojtaba هست یا نه، این اسکریپت می بایست عبارت You are not Mojtaba را نشان دهد. چرا که مقدار متغیر $name برابر Mojtaba نبوده و در حقیقت شرط برقرار نمی باشد. اما در واقع این گونه نیست. چرا که برای مقایسه یک متغیر با یک مقدار، می بایست از عملگر == و نه = استفاده کنید. در اسکریپت بالا، در حقیقت درون شرط، شما مقدار Mojtaba را به متغیر $name نسبت داده اید و از آنجا که دیگر شرطی وجود ندارد، یعنی به نوعی شرط درست می باشد، مقدار Hello Mojtaba به نمایش در خواهد آمد. اسکریپت بالا، به صورت زیر صحیح می باشد.

<?php
$name = “Sara”;
if ($name == “Mojtaba”) {
echo(“Hello Mojtaba”);
} else {
echo(“You are not Mojtaba”);
}
?>
عبارت شرطی switch
ساختار این نوع شرط به صورت زیر است:
switch (expression) {
case value1:
statements;
break;
case value2:
statements;
break;
default:
statements;
}
این نوع شرط مقدار expression را مورد بررسی قرار داده و مقدار آن را با مقدارهای value1 و value2 و … می سنجد و در صورت درستی هر یک از آنها، statements به اجرا در خواهند آمد. عبارت break هم سبب می شود که مابقی عبارات مورد پردازش قرار داده نشوند. برای درک بیشتر به مثال زیر توجه کنید:
<?php
$s = “Male”;
switch ($s) {
case “Male”:
echo(“Man”);
break;
case “Female”:
echo(“Woman”);
break;
}
?>
حلقه ها
حلقه ها سبب اجرای یک بلاک کد به تعداد دفعات معینی می شود. یکی از نمونه های کاربرد حلقه ها، برای نمایش رکوردهای یک پایگاه داده می باشد. حلقه ها سه نوع اند:
• حلقه while
• حلقه do…while
• حلقه for
حلقه while
حلقه while تا زمانی که شرط برقرار باشد اجرا می شود. ساختار این شرط به صورت زیر می باشد:
while (condition) {
statements;
}
برای مثال برای چاپ اعداد ۱ تا ۱۰، می توانیم از حلقه زیر استفاده کنیم:
<?php
$i = 1;
while ($i <= 10) {
echo(“$i<br>”);
$i++;
}
?>
حلقه do…while
حلقه do…while دقیقا مشابه حلقه while می باشد، با این تفاوت که در حلقه های while، شرط در ابتدای هر حلقه تست می شود، اما در حلقه های do…while، شرط در انتهای هر حلقه. با این حساب، حلقه های do…while، حتی اگر شرط آن هم غلط (False) باشد، حداقل یک بار اجرا خواهند شد. ساختار این حلقه به صورت زیر است:
do {
statements;
} while (condition);
به عنوان مثال، برای چاپ اعداد ۱ تا ۱۰، می توانیم از حلقه زیر استفاده کنیم:
<?php
$i = 1;
do {
echo(“$i<br>”);
$i++;
} while ($i <= 10);
?>
حلقه for
حلقه for نوعی دیگر از انواع حلقه می باشد. بر خلاف حلقه while که تا ناصحیح شدن شرط حلقه، ادامه پیدا می کرد، این حلقه برای تعداد دفعات مشخص تکرار می شود. ساختار این نوع حلقه به صورت زیر می باشد:
for (variable assignment; test expression; variable increment) {
statements;
}
در پارامتر اولیه (variable assignment)، یک مقدار را به یک متغیر نسبت می دهیم. پارامتر دوم (test expression) عبارت شرطی ما می باشد و پارامتر سوم (variable increment)، یک مقدار را به مقدار اولیه متغیر (variable) افزایش می کند. به عنوان مثال برای چاپ اعداد ۱ تا ۱۰۰، می توانیم از کد زیر استفاده کنیم:
<?php
for ($i=1; $i<=100; $i++) {
echo(“$i”);
echo(“<br>”);
}
?>
مثالی دیگر: حال می خواهیم اعداد اول بین ۱ تا ۱۰۰ را چاپ کنیم. برای این کار از تلفیق ساختار حلقه for و ساختار شرطی if استفاده می کنیم. البته ممکن است اگر عدد ۱۰۰ را به مقدار بالاتری (مثلا ۱۰۰۰۰۰۰) افزایش دهیم، دیگر اسکریپت به درستی کار نکند و در بین آن اعداد، بعضی اعداد غیر اول هم پدیدار شوند.
<?php
for ($i=1; $i<=100; $i++) {
if (($i==1) || ($i==2) || ($i==3) || ($i==5) || ($i==7)) {
echo(“$i”);
echo(“<br>”);
} elseif (($i%2!=0) && ($i%3!=0) && ($i%5!=0) && ($i%7!=0)) {
echo(“$i”);
echo(“<br>”);
}
}
?>
توابع
توابع بیشتر برای برنامه نویسی ماژولار استفاده می شود و به وسیله آن، رفع اشکال بهتر انجام می گردد. برای درک بهتر تابع، به تابع ریاضی زیر که در دوره راهنمایی با آن آشنا شدید، نگاهی بیاندازید:
y = x + 4
حال اگر یک ورودی را به x بدهیم، یک خروجی برای y به دست می آوریم. این ورودیها را به نام پارامتر یا آرگومان (Argument) می شناسند. برای تعریف یک تابع، از کلمه کلیدی function استفاده می کنیم.
function FunctionName(parameters) {
statements;
}
به عنوان مثال، همان تابع ریاضی بالا را در نظر بگیرید. اسم این تابع را مثلا Math می گذاریم. این تابع به صورت زیر در می آید:
<?php
function Math($x) {
$y = $x + 4;
echo(“$y”);
}
?>
تا به اینجای کار ما فقط تابع را تعریف کردیم. حال می خواهیم به عنوان مثال، عدد ۵ را به عنوان ورودی به تابع بدهیم. برای این کار، نام تابع را نوشته و آرگومان مورد نظر خود را درون پرانتزها می نویسیم:
Math(5);
برای مثال، خروجی کد زیر ۹ خواهد بود:
<?php
function Math($x) {
$y = $x + 4;
echo(“$y”);
}

Math(5);
?>
ارتباط با کاربر
حال که با مختصرات PHP آشنا شدید، بهتر است به چگونگی اینجاد فرمها و ارتباط با کاربر بپردازیم.
همان طور که می دانید، برای ساختن اجزاء صفحات وب، از تگهای HTML که معمولا به صورت </tag> و <tag> می باشند، استفاده می کنیم (بعضی از اجزا، دارای تگ پایانی نیستند. همانند تگ <img>). برای ساختن فرمها در HTML، ما از تگ <form> استفاده می کنیم:
<form>
<!– Form Components –>
</form>
تگ <form> دارای دو خاصیت بسیار مهم می باشد:
• خاصیت action
• خاصیت method
خاصیت action محل اسکریپت پردازش فرم را تعیین می کند و خاصیت method، نوع ارسال داده ها به اسکریپت مورد نظر. خاصیت method، خود دارای دو مقدار می باشد:
• get
• post
اما فرق این دو متد در چیست؟ در متد get، داده های ما به صورت Query String به اسکریپت پردازش فرم ارسال می شود. اما در متد post این طور نیست. حالا شاید برای شما این سوال پیش بیاید که Query String چیست؟ به قطعه کد زیر توجه کنید تا در مورد آن توضیح دهم:
http://www.site.com/?name=mojtaba&familyname=dashti
این قطعه کد در واقع از دو خط کد زیر تشکیل شده است:
http://www.site.com/
?name=mojtaba&familyname=dashti
خط اول که آدرس سایت می باشد. اما خط دوم که به Query String معروف است، شامل داده های ما می باشد که در PHP، مقدار mojtaba در متغیر name و مقدار dashti در متغیر familyname ذخیره می شود.
معمولا برای ارسال داده های کم، از Query String استفاده می شود (متد get). اما برای ارسال داده های بلند و رمزهای عبور (Password)، متد post بهترین انتخاب می باشد.

ساخت یک Text-Box
Text-Boxها برای دریافت عبارات یک خطی، همانند نام، آدرس ایمیل، آدرس سایت، کلمه عبور و … در وب به کار می روند. برای ساخت Text-Boxها از تگ <input>، به صورت زیر استفاده می کنید:
<input type=”text” [size=”m”] [name=”name”] [value=”optional value”]>

خاصیت type=”text” به مرورگر می گوید که با این تگ <input> یک کادر متنی بسازد (بعضی دیگر از اجزای فرم نیز با همین تگ، ولی با خاصیت type متفاوت ساخته می شوند). دیگر خاصیتها برای کادر متنی، اختیاری می باشد. برخی از این خاصیتهای مهم به صورت زیر است:
• خاصیت size: اندازه Text-Box را بر حسب تعداد کاراکتر نشان می دهد. دقت داشته باشید که این خاصیت، در واقع در اندازه نمایش Text-Box و نه مقدار کاراکتری که می تواند دریافت کند، اثر می گذارد.

• خاصیت name: این خاصیت برای ایجاد فرمهای تعاملی بسیار مهم می باشد. با اختصاص یک نام به یک Text-Box، به راحتی می تواند به وسیله اسکریپتها، داده وارد شده توسط کاربر را دریافت کرده و بر روی آن عملیات انجام دهید.
• خاصیت value: به طور Default، کادرهای متنی هنگام نمایش خالی می باشند. اگر می خواهید متنی را درون Text-Box قرار دهید، عبارت مورد نظر خود را در قسمت value قرار دهید.

ساخت Text-Area
Text-Areaها در واقع نوع پیشرفته تر Text-Box می باشند که می توانند بیش از یک خط داده را از کاربر دریافت کنند. برای ساخت Text-Area از تگ <textarea> استفاده می کنیم:
<textarea [name=”name”] [rows=”m”] [cols=”m”]>
Optional Text
</textarea>
خاصیتهای rows و cols، به ترتیب نمایانگر تعداد سطرها و کاراکترهای Text-Area می باشند.

کادرهای پسورد (Password)
برای ساخت کادرهای پسورد، از تگ <input>، به صورت زیر استفاده می کنیم. کادرهای Password در واقع نوعی Text-Box هستند، با این تفاوت که در این نوع کادرها، داده های وارد شده به صورت ستاره (*) در ویندوزهای ۹۸/ME/2000 و دایره (●) در ویندوز XP نمایش داده می شوند.
<input type=”password” [name=”name”] [size=”m”] [value=”optional value”]>
کادرهای انتخاب (Check-Box)

حتما تا به حال با Check-Boxها در ویندوز برخورد کرده اید: مربع های کوچکی که کاربر می تواند آنها را انتخاب کند. برای ایجاد کردن Check-Boxها از تگ <input> به صورت زیر استفاده می کنیم:
<input type=”checkbox” [name=”name”] [value=”value”] [checked=”checked”]>
مقدار خاصیت value در صورتی که Check-Box انتخاب شده باشد، به سرور فرستاده می شود. اگر خاصیت value را برای Check-Box در نظر نگیرید، به طور اتوماتیک مقدار on به سرور فرستاده می شود. خاصیت checked=”checked” سبب انتخاب شدن Check-Box هنگام لود شدن صفحه می شود.
دکمه های رادیویی (Radio Buttons)

Radio Buttonها همانند Check-Boxها می باشند. با این تفاوت که در Check-Boxها، کاربر می تواند از بین چندین انتخاب، هر کدام را که بخواهد انتخاب کند (۱، ۲، ۳ و یا بیشتر). اما در Radio Buttonها، کاربر از بین چندین انتخاب، تنها می تواند یکی از آنها را انتخاب کند.

حال که با بعضی از اجزای فرم آشنا شدید، بهتر است یک فرم تعاملی بسازیم که یکسری اطلاعات از کاربر گرفته و آنها را در صفحه ای مجزا نمایش دهد. کد HTML مورد نظر ما، به صورت زیر می باشد. آن را در فایلی تحت عنوان index.php در محل دلخواه خود، ذخیره کنید (در محلی که فایلهای php قادر به اجرا شدن هستند).
<html>

<head>
<title>Getting Information</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
</head>

<body>

<div style=”text-align: center”>
<div style=”width: 420px; text-align: justify “>
<form method=”post” action=”result.php”>
<table border=”0″ width=”100%”>
<tr>
<td width=”200px” style=”text-align: right”>Username</td>
<td width=”20px”>&nbsp;</td>
<td width=”200px” style=”text-align: left”>
<input type=”text” name=”username” size=”20″>
</td>
</tr>
<tr>
<td width=”200px” style=”text-align: right”>Password</td>
<td width=”20px”>&nbsp;</td>
<td width=”200px” style=”text-align: left”>
<input type=”password” name=”password” size=”20″>
</td>

</tr>
<tr valign=”top”>
<td width=”200px” style=”text-align: right”>Feedback</td>
<td width=”20px”>&nbsp;</td>
<td width=”200px” style=”text-align: left”>
<textarea name=”feedback”
rows=”5″ cols=”25″></textarea>
</td>
</tr>
<tr valign=”top”>
<td width=”200px” style=”text-align: right”>Hobbies</td>
<td width=”20px”>&nbsp;</td>
<td width=”200px” style=”text-align: left”>
<input type=”checkbox” id=”internet” name=”internet”
value=”Internet” checked=”checked”>
<label for=”internet”>Internet</label><br>
<input type=”checkbox” id=”computer”
name=”computer” value=”Computer”>
<label for=”computer”>Computer</label><br>
<input type=”checkbox” id=”hack”
name=”hack” value=”Hack”>
<label for=”hack”>Hack, Cra

ck</label><br>
</td>
</tr>
<tr valign=”top”>
<td width=”200px” style=”text-align: right”>Show Password</td>
<td width=”20px”>&nbsp;</td>
<td width=”200px” style=”text-align: left”>
<input type=”radio” id=”no” name=”passwordio”
value=”no” checked=”checked”>
<label for=”no”>No</label><br>
<input type=”radio” id=”yes”
name=”passwordio” value=”yes”>
<label for=”yes”>Yes</label>
</td>
</tr>
<tr>
<td colspan=”3″ style=”text-align: center”>
<input type=”submit” value=” Submit Data “>
</td>
</tr>
</table>
</form>
</div>
</div>
</body>

</html>

حال که فرم HTML خود را ساختیم، ساخت اسکریپت مورد نظر خود را، که در اینجا result.php می باشد، شروع می کنیم.
<html>

<head>
<title>Result</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
</head>

<body>
<p>Hello, you can see your information below ;)</p>
Username: <b><?=$username?></b><br>
<?php if ($passwordio == “yes”) { ?>
Password: <b><?=$password?></b><br>
<?php } else { ?>
Password: <b><font color=”red”>Password is hidden</font></b><br>
<?php } ?>
Feedback:<br>
<b><?=$feedback?></b><br>
Hobbies:<br>
<?php echo(“$internet<br>$computer<br>$hack”);?><br>

</body>

</html>