بایگانی دسته: آموزش

آموزش PHP – جلسه دوازدهم: درج اطالاعات در بانک اطلاعاتی MySQL

در جلسه قبل، از سری آموزش‌های پی‌اچ‌پی شما را با نحوه اتصال به بانک اطلاعاتی MySQL آشنا کردیم. در ادامه قصد داریم نحوه درج اطلاعات جدید به جداول موردنظرمان در بانک اطلاعاتی که ساخته‌ایم را به شما توضیح دهیم. در ادامه مطلب با ما همراه باشید.

همان‌طور که گفتیم، ۴ عملیات اصلی در کار با بانک‌های اطلاعاتی وجود دارد. درج اطلاعات، مشاهده، حذف و نهایتا ویرایش اطلاعات. در این جلسه روش درج اطلاعات جدید به جدول Posts که در بانک داده CMS ساختیم را به شما آموزش دهیم.

اگر جلسه قبل را مطالعه نکرده‌اید لازم است پیش از ادامه مطالعه این مبحث، جلسه قبل را به‌خوبی فرا بگیرید. برای درج اطلاعات جدید به بانک اطلاعاتی ایجاد شده در جلسه قبل ابتدا باید یک فرم مناسب طراحی کنیم. پیش از هر چیز نرم‌افزار Xampp را اجرا و دو سرور apache و mysql را درست همانند جلسه قبل فعال کنید. یک فایل جدید در پوشه cms که جلسه قبل ساخته بودید ایجاد کنید و نام آن را insert.php بگذارید. در این فایل یک فرم برای درج مطلب جدید در جدول posts از بانک اطلاعات cms طراحی می‌کنیم. از آنجا که نیاز به دو فیلد برای درج هر رکورد جدید در جدول posts داریم پس برای فرم درج مطلب نیز باید دو فیلد را در نظر بگیریم. یک فیلد متنی برای عنوان و یک textarea برای متن مطلب. کد زیر را در فایل insert.php وارد کنید.

<!DOCTYPE html>
<html dir=”rtl” lang=”fa-IR”>
<head>
<title>درج مطلب</title>
<meta charset=”utf-8″ />
</head>
<body style=”font-family: tahoma; font-size:14px;”>
<center>
<form action=”sendpost.php” method=”post”>
عنوان مطلب : <input type=”text” name=”postTitle” size=”40″><br>
متن مطلب: <br>
<textarea name=”postText” rows=”10″ cols=”50″></textarea>
<br>
<input type=”submit” value=”ثبت مطلب”>
</form>
</center>
</body>
</html>

در فرم بالا یک فیلد به نام postTitle و دیگری به اسم postText وجود دارد. همچنین محتویات فرم با متد post به صفحه‌ای به نام sendpost.php ارسال می‌شود. پس یک فایل جدید به نام sendpost.php ایجاد کنید و کد زیر را در آن قرار دهید:

<!DOCTYPE html>
<html dir=”rtl” lang=”fa-IR”>
<head>
<title>درج مطلب</title>
<meta charset=”utf-8″ />
</head>
<body style=”font-family: tahoma; font-size:14px;”>
<center>
<?php
include (“config.php”);
$title = trim ($_POST[‘postTitle’]);
$text = trim ($_POST[‘postText’]);
if($title != “” && $text != “”){
//do insert
$query_res = mysql_query(“INSERT INTO `posts` (`title`, `text`) VALUES (‘$title’,’$text’)”);
if($query_res){
echo “مطلب شما با موفقیت در بانک داده درج شد.”;
}else{
echo “مشکلی در ثبت مطلب رخ داده، لطفا مجددا تلاش کنید. <a href=insert.php>بازگشت</a>”;
}
}else{
echo ‘برای درج مطلب جدید باید عنوان و متن مطلب را وارد کنید. <a href=insert.php>بازگشت</a>’;
}
?>
</center>
</body>
</html>

حال به تحلیل کد بالا می‌پردازیم. اگر خاطرتان باشد در جلسه قبل گفتیم برای فهم بهتر این جلسه بهتر است سری به مقالات آموزش در مورد MYSQL بزنید تا آمادگی بیشتری برای این جلسه داشته باشید. همان‌طور که می‌بینید ابتدا فایل confing.php را فراخوانی کرده‌ایم. سپس مقادیر وارد شده در دو فیلد فرم درج مطلب را در دو متغیر title و text ذخیره کرده‌ایم. سپس با یک دستور if بررسی کرده‌ایم که آیا مقداری توسط کاربر در این دو فیلد وارد شده یا خیر. اگر وارد نشده باشد پیام خطای مناسب به وی نمایش داده می‌شود و اگر عنوان و متن مطلب وارد شده باشد عملیات درج در بانک اطلاعاتی را انجام می‌دهیم.

با استفاده از تابع mysql_query مقادیر وارد شده توسط کاربر را به جدول posts در بانک اطلاعاتی cms وارد می‌کنیم. خروجی این تابع یعنی مقداری که بر می‌گرداند یا true است یا false. پس با یک دستور if بررسی می‌کنیم که آیا عملیات درج انجام شده یا نه. اگر عملیات با موفقیت انجام شده باشد مقدار true برگردانده می‌شود و در نتیجه شرط ما برقرار خواهد بود و پیام درج موفقیت‌آمیز مطلب جدید به کاربر نمایش می‌یابد.

اگر نتیجه شرط false شود، یعنی به هر دلیلی، درج اطلاعات در جدول posts انجام نشود، با پیام خطا مناسب مواجه خواهد شد. حال اگر تمامی مراحل را به درستی انجام داده باشید می‌توانید مطالب جدیدی را در جدول ساخته شده‌مان وارد کنید. این کار را چند بار انجام دهید تا چند مطلب در جدول posts اضافه شود. همان‌طور که در تصاویر زیر می‌بینید ما توانستیم با موفقیت چند مطلب در جدول مورد نظر اضافه کنیم.

b8c0632f-30b2-4363-ad60-41a8237df537پس از پر کردن فیلدهای فرم بالا و ثبت فرم صفحه زیر نمایان شده که نشان از درج موفق مطلب در جدول posts می‌دهد.

e5e39d40-e2c7-44dc-bf77-49e55454b455

اما بیایید کمی در مورد کوئری (پرس و جو) درج رکورد جدید در بانک اطلاعاتی mysql بپردازیم. مطمئنا پیش از هر چیز باید به بانک اطلاعاتی خود متصل شویم که این کار از طریق فایل config.php انجام شده است. پس از انتخاب جدول موردنظر، می‌توان با انجام query چهار عملیات اصلی درج، خواندن، حذف و ویرایش اطلاعات را انجام داد. این کوئری‌ها ساختار ساده‌ای دارند و یادگیری آن وقت چندانی نخواهد برد و فقط نیاز به کمی تمرین دارد.

برای درج اطلاعات جدید از کوئری زیر استفاده می‌کنیم:

INSERT INTO `TABLE_NAME` (`f1`, `f2`) VALUES (‘value1’, ‘value2’)

همانطور که می‌بینید ابتدا دو کلمه کلیدی INSERT INTO را باید حتما بنویسید. سپس نام جدولی که قصد دارید در آن یک رکورد جدید درج کنید را به جای TABLE_NAME جایگزین می‌کنیم. سپس به تعداد فیلد‌هایی که جدول ما برای اضافه شدن هر رکورد نیاز دارد نام فیلد‌های مورد نظر را می‌نویسیم. در پروژه ما جدول posts سه فیلد داشت، اما اگر دقت کرده باشید ما فقط دو فیلد title و text را در کوئری آن نوشتیم. چراکه همانطور که در جلسه قبل توضیح دادیم فیلد id یا شناسه منحصر به فرد هر مطلب به صورت خودکار توسط MYSQL با اضافه شدن هر رکورد یک واحد افزایش می‌یابد. پس از نام فیلد‌ها کلمه کلیدی VALUES و سپس به تعداد فیلد‌هایی که نوشته‌ایم، داده‌های موردنظرمان را برای درج در آن فیلد‌ها در کوئری وارد می‌کنیم. به عنوان مثال در پروژه ما دو فیلد title و text را با مقادیری که کاربر وارد کرده بود و آن‌ها را در متغیرهایی به نام title$ و text$  ذخیره کرده‌ بودیم پر کردیم. پس این داده‌ها هر کدام در فیلد مربوط به خود در یک سطر جدید در جدول موردنظر اضافه شده‌اند. برای درک بهتر این مطلب به آدرس http://127.0.0.1/phpmyadmin بروید. سپس در سمت چپ روی نام بانک اطلاعاتی که جلسه قبل ساختیم یعنی cms کلیک کنید. سپس در سمت راست روی تب Structure کلیک کنید. حال روی نام جدول یعنی posts کلیک کنید. حال می‌توانید لیست رکوردهای درج شده در این جدول را مشاهده کنید. همانند تصویر زیر.

۵۹ec2c0a-3b9c-4160-8582-1329b4834166

بدین طریق به راحتی می‌توان اطلاعات موردنظر را در جداول MySQL از طریق پی‌اچ‌پی درج کنیم. به عنوان تمرین شما سعی کنید یک جدول جدید با فیلد‌های بیشتر بسازید و سپس فرم موردنظر آن را ساخته و به همین طریق اقدام به درج اطلاعات کنید.

در صورتی که هرگونه سوالی در این مورد دارید آن را در بخش نظرات اعلام کنید. در جلسه بعدی روش خواندن و حذف اطلاعات از بانک اطلاتی MySQL را به شما آموزش خواهیم داد.

منبع: زومیت

آموزش PHP – جلسه یازدهم: اتصال به بانک اطلاعاتی MySQL

در سری آموزش‌های پی‌اچ‌پی تا‌کنون با مباحث زیادی آشنا شده‌اید و حال نوبت مبحث اتصال به بانک‌های داده است. در واقع پویا بودن صفحات وب پی‌اچ‌پی بدون اتصال به بانک‌های اطلاعاتی بی‌معنی به نظر می‌رسد. در این جلسه می‌خواهیم روش اتصال به یکی از محبوب‌ترین و پرکاربردترین بانک‌های اطلاعاتی یعنی MySql را به شما آموزش دهیم. در ادامه با ما همراه باشید.

با اتصال به بانک‌های اطلاعاتی تحت سرور می‌توانیم داده‌های موردنظرمان را در جداول این بانک‌های اطلاعاتی ذخیره کنیم و در مواقع لزوم به سرعت به آن‌ها دسترسی داشته باشیم. همچنین در مواقعی نیاز به به‌روزرسانی اطلاعات و نیز حذف آن‌ها خواهیم داشت.

پی‌اچ‌پی از بانک‌های اطلاعاتی مختلفی پشتیبانی می‌کند. اما یکی از محبوب‌ترین و پراستفاده‌ترین بانک‌های اطلاعاتی در بین برنامه‌نویسان از زبان MySQL است. در این جلسه روش اتصال به این بانک داده را با PHP به شما آموزش خواهیم داد و نیز ۴ عملیات اصلی کار با بانک‌های اطلاعاتی را به مرور فرا خواهید گرفت.

از این جلسه شروع به ساخت یک CMS (سیستم مدیریت محتوا = Content Managment System) می‌کنیم. قبل از هر چیز نیاز است الگوریتم ساده‌ای برای این پروژه ایجاد کنید. اما در اینجا برای جلوگیری از سنگین شدن این جلسه بخش الگوریتم را به خودتان واگذار می‌کنیم.

در کل باید بدانید قصد داریم یک پروژه‌ بسازیم که با بانک اطلاعاتی MYSQL ارتباط داشته باشد و بتوان با استفاده از آن مطالب جدیدی را در بانک داده ذخیره‌سازی کرد. هدف ما ایجاد بخشی برای ارسال مطلب، بخشی برای ویرایش مطالب ارسال شده، امکان حذف مطالب ارسال شده و نیز نمایش مطالب ارسال شده است. چهار عمل اصلی در ارتباط با بانک‌های داده وجود دارد که به اختصار آن‌ها را CURD می‌نامند. C برای ساختن (Create) و U برای به‌روزرسانی (Update) و R برای خواندن (Read) و نهایتا D برای حذف (Delete).

اتصال به بانک داده

قبل از این کار یک پوشه جدید در پوشه htdocs نرم‌افزار Xampp ایجاد کنید و نام آن را cms بگذارید. حالا در پوشه cms یک فایل به نام config.php ایجاد کنید. این فایل در واقع تنظیمات مربوط به سیستم‌ ما را نگه‌داری خواهد کرد. همچنین از طریق این فایل به بانک داده متصل خواهیم شد.

اما ابتدا باید بانک اطلاعاتی موردنظرمان را ایجاد کنید. پس از اجرای Xampp در پنل مدیریت این نرم‌افزار سرویس MySQL را نیز همانند سرویس Apache اجرا کنید.

۷۵c58fb6-1b54-4669-8a90-d3ff9e89c143حالا مرورگر خود را باز کرده و به آدرس http://127.0.0.1/phpmyadmin بروید. در این بخش شما می‌توانید بانک‌های اطلاعاتی سرور محلی خود را مشاهده، ایجاد و حذف کنید. پس از اجرای آدرس فوق باید با صفحه‌ای مانند زیر مواجه شوید.

ecbe80cb-025a-4b01-a3d1-12e6a6bf924cهمان‌طور که در تصویر با کادر قرمز مشخص شده، روی Database کلیک کنید. در این بخش می‌توانید یک بانک اطلاعاتی جدید بسازید. نام بانک اطلاعات موردنظر خود را باید در کادر مربوطه همانند تصویر زیر وارد کنید. همچنین نوع یونیکد موردنظر برای این بانک‌ داده را هم با استفاده از منو کشویی مقابل فیلد نام آن، می‌توانید تعیین کنید. از آنجا که زبان ما فارسی است بهترین کار در این مرحله انتخاب یونیکد utf-8 است. پس همانند تصویر زیر نام بانک اطلاعاتی جدید خود را cms و نوع آن را هم utf8-general-ci تعیین کنید.

۴۳۵۲۷۰۳۵-۲۷۵۷-۴e28-936f-9286b9b6ca89  حال باید جداول موردنظرتان را ایجاد کنید. اما برای جلوگیری از سنگین شدن مبحث و این‌که هدف ما آموزش php است، جداول موردنیاز برای این پروژه را ساخته‌ایم و شما نیز برای ساختن این جداول مراحل زیر را پس از ساختن بانک اطلاعاتی یاد شده انجام دهید. پس از اینکه روی دکمه Create کلیک کنید، بانک اطلاعاتی cms ایجاد خواهد شد. حالا وارد بخش sql شوید و همانند تصویری که در ادامه می‌بینید، کد زیر را در بخش مربوطه قرار داده و سپس بر روی دکمه Go کلیک کنید.

— phpMyAdmin SQL Dump
— version 4.5.1
— http://www.phpmyadmin.net

— Host: 127.0.0.1
— Generation Time: May 28, 2016 at 02:13 PM
— Server version: 10.1.9-MariaDB
— PHP Version: 5.6.15

SET SQL_MODE = “NO_AUTO_VALUE_ON_ZERO”;
SET time_zone = “+00:00”;

/*!۴۰۱۰۱ SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!۴۰۱۰۱ SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!۴۰۱۰۱ SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!۴۰۱۰۱ SET NAMES utf8mb4 */;


— Database: `cms`

— ——————————————————–


— Table structure for table `posts`

CREATE TABLE `posts` (
`id` int(11) NOT NULL,
`title` varchar(200) NOT NULL,
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


— Indexes for dumped tables


— Indexes for table `posts`

ALTER TABLE `posts`
ADD PRIMARY KEY (`id`);


— AUTO_INCREMENT for dumped tables


— AUTO_INCREMENT for table `posts`

ALTER TABLE `posts`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
/*!۴۰۱۰۱ SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!۴۰۱۰۱ SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!۴۰۱۰۱ SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

کد بالا برای ایجاد یک جدول به نام posts است که این جدول سه فیلد دارد. برای هر مطلب یک فیلد برای شماره مطلب وجود دارد که این شماره برای هر رکورد از جدول یکتا خواهد بود. همچنین یک فیلد برای عنوان و یک فیلد نیز برای متن مطلب درنظرگرفته‌ایم. یونیکد این جدول و تمامی فیلد‌های آن نیز utf8-general-ci است.

۲c03ac69-2d22-491a-bf6c-6232831e599fاصلا نگران این بخش نباشید چرا که بعدا مفصلا به آن خواهیم پرداخت. فقط به یاد داشته باشید که تاکنون چه کارهایی انجام دادیم.

حالا برگردیم به بخش پی‌اچ‌پی. فایل config.php را باز کنید و کد زیر را در آن قرار دهید:

<?php
$dbhost = “localhost”;
$dbuser = “root”;
$dbname = “cms”;
$dbpass = “”;

$connect_db = mysql_connect ($dbhost, $dbuser, $dbpass);

if ($connect_db){
echo “we Connected to db successfully!”;
}else{
echo “error in connecting db”;
}
?>

در کد بالا ابتدا ۴ متغیر تعریف کرده و آن‌ها را مقداردهی کردیم. برای اتصال به بانک‌اطلاعاتی mysql در php نیاز به ۴ مشخصه خواهید داشت. آدرس میزبان بانک داده که در اینجا متغیر dbhost است، نام کاربری بانک داده که در اینجا dbuser است، نام بانک داده که در اینجا dbname است و نهایتا رمزعبور کاربر بانک داده که در اینجا dbpass است. در بیشتر مواقع آدرس میزبان بانک داده همان localhost خواهد بود. در نرم‌افزار زمپ نام کاربری تمام بانک‌های داده‌‌ای که می‌سازیم root است و این کاربر رمزعبور ندارد و به همین دلیل مقدار dbpass را خالی گذاشته‌ایم. نام بانک داده‌ نیز همان نامی خواهد بود که در هنگام ساختن بانک اطلاعاتی موردنظر خود تعیین کرده‌اید و در این پروژه نام تعیین شده ما cms بود. 

حال باید با استفاده از تابع mysql_connect به بانک داده متصل شویم. این تابع سه آرگومان ورودی دارد که به ترتیب آدرس میزبان بانک داده، نام کاربری بانک داده و رمزعبور کاربر بانک داده هستند. خروجی این تابع نیز یا true خواهد بود یا false. در کد بالا ما خروجی این تابع را در متغیر connect_db ذخیره می‌کنیم و سپس با یک دستور if بررسی کرده‌ایم که اگر اتصال به درستی برقرار شد پیام مناسب به کاربر نمایش داده شود و اگر اتصال انجام نشده بود پیام خطای عدم اتصال به بانک داده نمایان شود. 

پس از این‌که مراحل فوق را انجام دادید یک فایل دیگر به نام index.php در پوشه cms ایجاد کنید. سپس در این فایل کد زیر را قرار دهید:

<?php
include (“config.php”);
?>

همان‌طور که احتمالا متوجه شده‌اید ما فایل config.php را با کد بالا در فایل index.php فراخوانی کرده‌ایم. حالا اگر آدرس http://127.0.0.1/cms/index.php را در مروگرتان اجرا کنید، باید با عبارت we Connected to db successfully! مواجه شوید. در غیر این‌صورت یکی از مراحل را اشتباه انجام داده‌اید، چراکه در این صورت اتصال به بانک داده انجام نشده است. اما اگر پیغام یاد شده را مشاهده می‌کنید یعنی با موفقیت به بانک داده cms متصل شده‌ایم. اگر همه چیز به درستی انجام شده بخش if فایل config.php را حذف کنید یا آن را به صورت کامنت درآورید.  همچنین یک دستور دیگر برای انتخاب بانک اطلاعاتی cms که آن را در مراحل قبلی ایجاد کردیم به این فایل اضافه می‌کنیم. در نهایت کد config.php شما باید شبیه به زیر باشد:

<?php
$dbhost = “localhost”;
$dbuser = “root”;
$dbname = “cms”;
$dbpass = “”;

$connect_db = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname,$connect_db);
?>

با استفاده از تابع mysql_select_db می‌توانید به بانک اطلاعاتی موردنظر خود در سرور mysql متصل شوید. همان‌طور که می‌بینید این تابع دو آرگومان دارد که ورودی اول نام بانک اطلاعاتی که قصد متصل شدن به آن را داریم است و مورد دوم که تعریف آن اجباری هم نیست، به خروجی تابع متصل شدن به سرور MySQL اشاره دارد. در اینجا ما خروجی تابع را در متغیر connect_db قرار داده بودیم و از همین رو در آرگومان دوم تابع mysql_select_db نام این متغیر را وارد کرده‌ایم.

اما برای درک بهتر ادامه این آموزش باید با ساختار جدولی که ساخته‌ایم آشنا شوید. به شکل زیر دقت کنید:

۱۴۹d0301-ff36-4d47-a55c-acf3c0b1e76d

در نتیجه ما یک بانک اطلاعاتی به نام cms داریم. هر بانک اطلاعاتی می‌تواند شامل چند جدول باشد و هر جدول نیز شامل یکسری فیلد است.

در اینجا جدول ما posts نام دارد و هر سطر آن (هر رکورد) شامل سه فیلد id و title و text است. تعیین نام فیلد‌ها و نوع آن‌ها در هنگام ساخت جدول انجام می‌شود و در این مورد نام‌های انتخابی ما سه موردی بود که اشاره کردیم. همان‌طور که در تصویر بالا می‌بینید هر مطلب به صورت یک سطر جدید در جدول posts ذخیره خواهد شد و هر مطلب سه مشخصه id یا شناسه یکتای مطلب، title برای عنوان و text برای متن مطلب را شامل می‌شود. 

در جلسه بعد پروژه خود را ادامه خواهیم داد و رفته رفته آن را کامل‌تر می‌کنیم. پیشنهاد می‌کنیم برای درک بهتر آموزش‌های بعدی کمی در مورد بانک اطلاعاتی mysql و نیز دستورات sql در گوگل جستجو کنید و در میان مطالب بسیار زیاد فارسی منتشر شده در این مورد کمی تحقیق کنید تا با آمادگی بیشتری بتوانید ادامه آموزش‌ها را پیگیری کنید.

اگر هرگونه سوالی در مورد مباحث این جلسه برایتان پیش‌ آمده آن را در بخش نظرات اعلام کنید.

منبع: زومیت

آموزش PHP – جلسه دهم: پروژه ارسال ایمیل

در این جلسه از سری آموزش‌های پی‌اچ‌پی می‌خواهیم اولین پروژه کاربردی را با این زبان برنامه‌نویسی محبوب ایجاد کنیم. پروژه ما اسکریپتی برای ارسال ایمیل است. بدین صورت شما با نحوه ارسال ایمیل و توابع مربوط به آن در PHP نیز آشنا خواهید شد. در ادامه مطلب با ما همراه باشید.

اگر آموزش‌های پی‌اچ‌پی را تا اینجا دنبال کرده‌اید پس تمامی پیش‌نیازهای لازم برای شروع کار یک پروژه کاربردی را دارید. می‌خواهیم در این جلسه یک اسکریپت کاربردی برای ارسال ایمیل ایجاد کنیم و سعی می‌کنیم علاوه بر استفاده از مباحث قبلی، موارد جدیدی را هم به شما آموزش دهیم.

خب اگر یادتان باشد در جلسات اولیه گفتم که مهم‌ترین مرحله برای ایجاد یک پروژه، الگوریتم آن است. شاید بسیاری از افراد فکر کنند که یک پروژه ساده چه نیازی به الگوریتم دارد. خب شاید تا حدی گفته این افراد درست باشد زیرا بسیاری از پروژه‌های کوچک را بدون الگوریتم‌نویسی نیز می‌توان ایجاد کرد. اما اگر بخواهیم بعدا اسکریپت خود را ارتقا دهیم و امکانات جدیدی به آن اضافه کنیم یا اشکلاتش را رفع کنیم، در صورتی که از الگوریتم استفاده کرده باشیم کار ما بسیار آسان‌تر خواهد شد.

پس اولین کاری که برای ایجاد پروژه ارسال ایمیل انجام می‌دهیم ترسیم یک الگوریتم است. پیش از این‌که بخواهید الگوریتم را ایجاد کنید باید در نظر داشته باشید که اسکریپتی که قصد ایجادش را دارید قرار است چه کاری را انجام دهد؟ خب در اینجا ما می‌خواهیم سیستم ارسال ایمیل تحت وب ایجاد کنیم پس مهم‌ترین بخش‌هایی که پروژه ما باید داشته باشد به شرح زیر است:

  • یک فیلد برای وارد کردن ایمیل مقصد (آدرسی که ایمیل به آن ارسال خواهد شد)
  • یک فیلد برای وارد کردن نام ارسال کننده
  • یک فیلد برای وارد کردن موضوع ایمیل
  • یک فیلد برای نوشتن متن ایمیل
  • یک دکمه برای ارسال ایمیل
  • یک دکمه برای ریست کردن فرم
  • یک صفحه پی‌اچ‌پی که عملیات پردازش و ارسال ایمیل را انجام دهد

خب این‌ موارد مهم‌ترین بخش‌هایی هستند که ما باید ایجاد کنیم. ما باید دو فایل ایجاد کنیم که البته می‌توان کل پروژه را در یک فایل ایجاد کرد اما بهتر است هر بخش را در یک فایل جداگانه ایجاد کنیم. الگوریتم ساده‌ای که من برای این پروژه در نظر گرفته‌ام به این صورت است:

  1. کاربر اطلاعات خواسته شده را در فرم وارد می‌کند
  2. اطلاعات به صفحه بررسی و ارسال ایمیل ارسال می شوند
  3. در صفحه بررسی و ارسال ایمیل چک می‌کنیم که آیا کاربر تمامی فیلد‌ها را پر کرده یا خیر. اگر فیلدها به درستی پر شده بود به مرحله ۴ می‌رویم و اگر پر نشده بود کاربر را به مرحله ۱ انتقال می‌دهیم
  4. حال براساس اطلاعاتی که کاربر وارد کرده ایمیل موردنظر را با کمک PHP ارسال می کنیم.
  5. بررسی می‌کنیم که آیا ایمیل با موفقیت ارسال شده یا خیر. اگر با موفقیت ارسال شده بود، باید پیامی مبنی بر ارسال موفق ایمیل به کاربر نمایش داده شود در غیر این صورت پیام خطای مناسب به کاربر نمایش داده شود

همان‌طور که می‌بینید در ۵ مرحله به ساده‌ترین حالت ممکن الگوریتم پروژه ارسال ایمیل را ایجاد کردیم. البته می‌توان از الگوریتم‌های دیگری هم استفاده کرد و شاید الگوریتم موردنظر شما بسیار بهتر از الگوریتمی باشد که در بالا نوشته‌ام. اما برای یکپارچه شدن آموزش براساس همین الگوریتم پروژه را ایجاد می‌کنیم.

ابتدا نرم‌افزار زمپ را اجرا کرده و در پوشه htdocs یک پوشه جدید به نام email می‌سازیم. سپس در این پوشه دو فایل به نام‌های index.php و send.php ایجاد می‌کنیم. فایل اول قرار است فرم ما را نشان دهد و فایل دوم پردازشگر و ارسال کننده ایمیل است.

در فایل index.php مطابق با نیاز خود که در بالا به آن اشاره کردم یک فرم با فیلد‌های موردنظر ایجاد می‌کنیم. برای زیباتر شدن نتیجه کار می‌توانید از دستورات اچ‌تی‌ام‌ال بهره ببرید ولی ما به منظور ساده‌تر بودن هر چه بیشتر کدها از حداقل کد ممکن استفاده کرده‌ایم.

<form method=”post” action=”send.php”>
email to : <input type=”text” name=”email”><br>
your name : <input type=”text” name”uname”><br=
subject : <input type=”text” name=”subject”><br>
message : <textarea name=”message” rows=”3″ cols=”4″></textarea>
<input type=”reset” value=”Reset”>
<input type=”submit” value=”Send Email”>
</form>

در فرم بالا ما به تعداد مورد نیاز فیلد ایجاد کرده‌ایم. فیلد ایمیل، نام کاربر، موضوع و متن پیام و نیز دو دکمه ریست و ثبت فرم.

حالا در فایل send.php باید کد زیر را قرا دهید:

<?php
$mailto = trim($_POST[’email’]);
$username = trim($_POST[‘uname’]);
$subject = trim($_POST[‘subject’]);
$message = trim($_POST]’message’]);

//merge name and message
$final_message = $username . ” : ” . $message;

if ($mailto != “” && $username !=”” && $subject !=”” && $message != “”)
{
//we know user filled the form
$email_send = mail ($mailto, $from_mail, $final_message);
//check for send email
if ($email_send){
echo “Your Email Has Been Send Successfully!”;
}else{
echo “sorry, there is problem in sending email, try again!”;
}
}else{
echo ‘You Must Fill All Fields! Go <a href=”index.php”>Back</a>’;
}
?>

حال می‌خواهیم کد بالا را تحلیل کنیم. در واقع تمامی نکات کد بالا را قبلا یاد گرفته‌اید اما در اینجا یک مرور کلی به کد داریم. ابتدا مقادیری که کاربر در فرم وارد کرده را درون چند متغیر قرار داده‌ایم. همچنین از تابع trim پی‌اچ‌پی استفاده کرده‌ایم تا فاصله‌های اضافه اول و آخر عبارات وارد شده در هر فیلد به صورت خودکار حذف شود. سپس با یک دستور if بررسی کرده‌ایم که در صورتی‌که تمامی فیلدها خالی نباشند و کاربر یک مقدار در آن‌ها وارد کرده باشد کد بخش صحیح بودن شرط اجرا شود و در غیر این صورت پیام خطایی به او نمایش داده می‌شود و یک لینک برای بازگشت به صفحه فرم در اختیار وی قرار می‌گیرد. اما در صورت صحیح بودن شرط با استفاده از تابع mail اقدام به ارسال ایمیل می‌کنیم و سپس مقدار بازگشتی این تابع را در متغیر email_send قرار می‌دهیم. 

در مورد مقادیر بازگشتی در جلسه آموزش تابع مفصلا توضیح دادیم. اما در اینجا بد نیست بدانید در صورتی که ارسال ایمیل موفق باشد این تابع مقدار true را برمی‌گرداند و اگر ایمیل به هر دلیلی ارسال نشود مقدار بازگشتی تابع false خواهد بود.

پس در نتیجه مقدار متغیر email_send یا true می‌شود یا false. سپس با یک دستور if مجددا بررسی کرده‌ایم که اگر ارسال ایمیل موفق بوده یعنی email_send = true بوده باشد، پیام موفق بودن ارسال ایمیل و در غیر این صورت، (یعنی email_send = false بوده) پیام خطای ارسال نشدن ایمیل به کاربر نمایش می‌یابد.

نکته: ما نام کاربر و متن پیام او را به هم ترکیب کرده‌ایم و در یک متغیر دیگر به نام final_message قرار داده‌ایم تا کسی که ایمیل را دریافت می‌کند بداند این ایمیل از طرف چه شخصی برایش ارسال شده است. 

تابع ارسال ایمیل را می‌توان با تنظیمات و سفارشی‌سازی‌های زیادی مورد استفاده قرار داد. اما برای شروع کار باید بدانید که این تابع به صورت پیش‌فرض و در ساده‌ترین حالت ممکن چند ورودی دریافت می‌کند. همان‌طور که در کد زیر می‌بینید در هنگام استفاده از این تابع باید حداقل سه ورودی داشته باشد. آرگومان اول آدرس ایمیلی است که قصد داریم به آن ایمیل ارسال کنیم. آرگومان دوم موضوع ایمیل و آرگومان سوم متن ایمیل است.

<?php
mail(’email@domain.com’, ‘subject’, ’email message’);
?>

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

اگر دقت کرده‌ باشید اسکریپت نوشته شده توسط ما دقیقا منطبق بر همان الگوریتم ساده اولیه‌ای است که نوشته بودیم. یعنی تک تک مراحل به‌خوبی در پی‌اچ‌پی پیاده‌سازی شده‌اند.

با کمی تغییرات و زیباتر کردن کد بالا می‌توانید یک اسکریپت کاربرپسند و کاربردی‌تر ایجاد کنید. به عنوان تمرین از css و html به منظور زیباتر شدن فرم ارسال ایمیل و حتی صفحه ارسال ایمیل و نمایش پیام‌ها بهره ببرید. همچنین در صورتی که هرگونه سوالی در این مورد برایتان پیش آمده آن را در بخش نظرات اعلام کنید.

همچنین می‌توانید از آنچه که در این جلسه یاد گرفتید به منظور ایجاد فرم تماس با ما برای سایت خود استفاده کنید.

در جلسات آینده و در پروژه‌های پیچیده‌تر روش ارسال ایمیل با ضمیمه و نیز ایمیل‌های HTML و UTF-8 را خواهید آموخت. فعلا سعی کنید مباحثی که تا اینجا آموزش داده شده را به صورت روان و کامل یاد بگیرید چراکه رفته رفته با بکار گرفتن پروژه‌های سنگین‌تر کار شما کمی بیشتر می‌شود. 

منبع: زومیت

آموزش PHP – جلسه نهم: متغیرهای پیش فرض و فرم ها

در این بخش از سری آموزش برنامه‌نویسی وب با PHP می‌خواهیم درباره‌ی مبحث جذاب فرم‌ها صحبت کنیم. علاوه بر این با متغیرهای کاربردی و پیش‌فرض پی‌اچ‌پی نیز آشنا خواهیم شد. در ادامه با ما همراه باشید.

متغیرهای پیش‌فرض

در جلسات قبل اعلام کردیم، در نام‌گذاری متغیرها در php نباید از نام‌های از پیش رزرو شده این زبان برنامه‌نویسی استفاده کنید. PHP شامل یکسری از متغیرهای از پیش تعریف شده است که مقادیر مشخصی را نگه‌داری می‌کنند و به برنامه‌نویس امکانات خوب و کاربردی‌ را ارائه می‌دهند. می‌توانید به‌راحتی و تنها با دانستن نام این متغیرها در هرجای کدهای پروژه خود از آن‌ها استفاده کنید.

متغیر SERVER_$

این متغیر در واقع یک آرایه از داده‌ها است که در آن اطلاعاتی از قبیل هدرها (Headers)، مسیرها (Paths) و … وجود دارد. همان‌طور که در بخش آموزش آرایه‌ها توضیح دادیم برای دسترسی به هر عضو یک آرایه باید نام آن عضو را در مقابل نام آرایه به‌کار ببرید. در مورد آرایه SERVER_$ باید از کدی شبیه به کد زیر استفاده کنید:

<?php
echo $_SERVER[‘SCRIPT_NAME’];
?>

کد بالا را در یک فایل به نام phpvars.php نوشته و در پوشه‌ای به نام new در پوشه htdocs سرور زمپ خود ذخیره کنید. بدین صورت فرضا اگر Xampp را در درایو C خود نصب کرده باشید، مسیر فایل باید به صورت زیر باشد:

C:/Xampp/htdocs/new/phpvars.php

سپس سرور را اجرا کنید. حالا باید این فایل از طریق آدرس http://127.0.0.1/new/phpvars.php در دسترس باشد. کد بالا باعث می‌شود مسیر جاری فایل در مرورگر نمایش یابد. برای ما نتیجه اجرای کد بالا به صورت زیر بود:

d34c52a0-453d-4b2f-9fb3-9290a5241836همان‌طور که می‌بینید مسیر فایل فراخوانی شده در سرور نمایش یافته است. حال بیایید ببینیم این متغیر چه اطلاعات دیگری را می‌تواند نشان دهد. به کد زیر دقت کنید:

<?php
echo $_SERVER[‘HTTP_HOST’];
?>

کد بالا هدر هاست کنونی را برمی‌گرداند. از آنجا که ما این کد را در سرور محلی اجرا کرده‌ایم نتیجه آن به صورت زیر خواهد بود:

ec1ab67a-64c8-4b4f-923e-49f64d394169شاید بپرسید این موارد به چه کار می‌آیند؟ یک مثال خوب می‌زنم. فرض کنید تصاویر زیادی روی سرور شما وجود دارند. حالا به هر دلیلی تصمیم می‌گیرید مسیر تصاویر را در سرور تغییر دهید یا به صورت کلی دامین خود را می‌خواهید تغییر دهید. در این صورت باید هرجا که از این تصاویر استفاده کرده‌اید، مسیردهی را برای تک تک فایل‌ها تغییر دهید که این عملیات طبیعتا بسیار وقت‌ گیر و کم‌بازده است. در عوض می‌توانید تنها با چند کد ساده مسیر تمامی عکس‌های سرور خود را به مسیر جدید تغییر دهید. به مثال زیر توجه کنید. برای این کار کافی است یک فایل با نام دلخواه مثلا config.php ایجاد کنید و کد زیر را در آن قرار دهید.

<?php

$host = $_SERVER[‘HTTP_HOST’];
$image_path = $host . ‘/images/’;

?>

دقت کنید که به عنوان مثال تصاویر را به پوشه‌ای به نام images منتقل کرده‌ایم. ابتدا هدر هاست را همان‌طور که در بالا اشاره کردیم در متغیر جدیدی به نام host قرار داده‌ایم. سپس مسیر جدیدی را با ترکیب متغیر host و مسیر دلخواه جدید که در اینجا پوشه images است، در متغیر دیگری به نام image_path قرار داده‌ایم. به عنوان مثال در سرور محلی آنچه در متغیر image_path ذخیره می‌شود چیزی شبیه به مسیر زیر خواهد بود:

۱۲۷٫۰٫۰٫۱/images/

نکته مهم: اگر دقت کرده باشید بین متغیر host$ و مسیر ‘/images/’ از یک نقطه استفاده کرده‌ایم. در پی‌اچ‌پی برای اتصال رشته‌های متنی به یکدیگر و نیز اتصال متغیرها به یکدیگر و همچنین اتصال متغیر‌ها به رشته‌های متنی می‌توانید از نقطه استفاده کنید.

حالا در فایل‌های پروژه خود هر کجا که از عکس‌های جدید خود بخواهیم استفاده کنیم کافی است ابتدا فایل Config.php که در بالا ایجاد کردیم را به صفحه include یا require اضافه کنیم و سپس از متغیر image_path در هرجا که خواستیم استفاده کنیم. به مثال زیر توجه کنید:

<?php

require (“config.php”);
echo ‘<img src=’ . $image_path . ‘header.jpg>’;

?>

در کد بالا در تگ img که در html به منظور نمایش تصاویر از آن استفاده می‌کنیم، به جای آدرس ثابت عکس از آدرس جدیدی که ایجاد کرده‌ایم، بهره بردیم. به نوع استفاده از کاراکتر نقطه در کد بالا نیز توجه کنید چراکه در پی‌اچ‌پی بارها و بارها شرایطی پیش خواهد آمد که نیاز به ترکیب رشته‌ها خواهید داشت. همچنین اگر فکر می‌کنید این کد کمی برایتان گیج‌کننده است پیشنهاد می‌کنیم ابتدا دستورات HTML را ب‏ه‌خوبی فرا گرفته و سپس شروع به یادگیری php کنید زیرا همان‌طور که در جلسه اول گفتیم، پیش‌نیاز این آموزش‌ها آشنایی شما با دستورات HTML و تا حدودی دستورات CSS است. در جدول زیر لیست سایر اعضای آرایه SERVER_$ که می‌توانید از آن‌ها استفاده کنید را برایتان لیست کرده‌ایم:

جدول اعضای آرایه SERVER_$ در PHP

نام فایل کنونی که در سرور اجرا شده را بر می‌گرداند $_SERVER[‘PHP_SELF’]
آدرس آی‌پی سرور کنونی را بر می‌گرداند $_SERVER[‘SERVER_ADDR’]
نام سرور کنونی را بر می‌گرداند $_SERVER[‘SERVER_NAME’]
هدر هاست کنونی را بر می‌گرداند $_SERVER[‘HTTP_HOST’]
آی‌پی سروری قبلی‌ای که کاربر از آن به سایت ما وارد شده را بر می‌گرداند $_SERVER[‘REMOTE_ADDR’]
پورت دستگاهی که کاربر از طریق آن با سرور ارتباط برقرار کرده را بر می‌گرداند $_SERVER[‘REMOTE_PORT’]
نام مسیر دقیق فایلی که فراخوانی شده را بر می‌گرداند $_SERVER[‘SCRIPT_FILENAME’]
پورتی که سرور از آن برای ارتباطات خود استفاده می‌کند را برمی‌گرداند $_SERVER[‘SERVER_PORT’]
نام دقیق فایلی که فراخوانی شده را بر می‌گرداند $_SERVER[‘SCRIPT_NAME’]
آدرس URI $_SERVER[‘REQUEST_URI’]

می‌توانید تک تک موارد بالا را خودتان برای تمرین تست کنید و نتیجه را در مرورگر مشاهده کنید. مطمئن باشید که این داده‌ها بارها و بارها به‌کارتان خواهد آمد، پس سعی کنید آنقدر آن‌ها را تمرین کنید که همیشه در ذهن‌تان باقی بمانند.

فرم‌ها در PHP

در پی‌اچ‌پی از دو متغیر POST_$ و GET_$ به منظور جمع‌آوری اطلاعات ثبت‌شده در فرم‌ها استفاده می‌کنیم. فرم‌ها در طراحی صفحات وب بخش غیرقابل انکاری هستند و به منظور تعامل کاربر و انجام اکثر کارهایی که به نوعی با اطلاعات سروکار دارند باید از فرم‌ها استفاده کنیم. فرم‌ ثبت‌نام، فرم ورود به محوطه کاربری، فرم بازیابی رمزعبور و … از جمله مهم‌ترین کاربردهای فرم‌ها در تولید وب‌سایت‌ها هستند.

با استفاده از تگ FORM در اچ‌تی‌ام‌ال می‌توانیم فرم موردنظر خود را ایجاد کنیم. تمامی فیلدهای ورودی باید در داخل این تگ به‌کار گرفته شوند. به مثال زیر توجه کنید:

<FORM action=”send.php” method=”post”>

name : <input type=”text” name=”username”>

<input type=”submit” name=”send” value=”Submit Your Name!”>

</form>

در کد بالا همان‌طور که می‌بینید یک فرم ایجاد کرده‌ایم که شامل یک فیلد ورودی برای وارد کردن نام است. این فیلد از نوع متنی بوده و خاصیت name آن را username تعیین کرده‌ایم. همچنین از یک دکمه از نوع Submit برای ثبت فرم استفاده کرده‌ایم و خاصیت نام این دکمه را send و متن روی دکمه را با خاصیت value برابر Submit Your Name! قرار داده‌ایم.

مهم‌ترین نکته کد بالا دو خاصیت action و method در تگ FORM است. در قسمت action ما عبارت send.php را نوشته‌ایم. این یعنی اطلاعات فرم ما پس از ثبت، به صفحه‌ای که در بخش action تعیین کرده‌ایم ارسال خواهد شد. همچنین در بخش method می‌توان از دو حالت get و post استفاده کرد. تفاوت این دو روش را نیز به شما توضیح خواهیم داد اما در کل نتیجه کار در هر دو حالت یکی خواهد بود.

کد بالا را در یک فایل به نام form.php قرار دهید و سپس این فایل را در همان پوشه new که در ابتدای آموزش ایجاد کرده بودید قرار دهید. حالا یک فایل دیگر به نام send.php ایجاد کنید و کد زیر را در آن قرار دهید:

<?php
$user = $_POST[‘username’];
echo “your name is : ” . $user;
?>

از آنجا که در بخش method فرم خود از روش post استفاده کرده‌ایم در اینجا برای دریافت اطلاعات فرم خود، از متغیر POST_$ استفاده کرده‌ایم. سپس در مقابل نام این متغیر (در واقع آرایه) به عضو مورد نظرمان که در اینجا name تعیین شده برای فیلد نام در فرم بالا است، را وارد کرده‌ایم. سپس نتیجه را در متغیر user ذخیره کرده و نهایتا آن را با دستور echo نمایش داده‌ایم. پس مثال بالا شامل دو فایل شد. یکی فایل form.php که فقط کدهای html را در آن به‌کار بردیم و دیگری فایل send.php که اطلاعات فرم ما به این صفحه ارسال می‌شود. سپس با دستورات پی‌اچ‌پی، اطلاعات وارد شده در فیلد username را از فرم گرفته و آن را چاپ کردیم.

اگر در هنگام تست کدهای بالا به آدرس URL در مرورگر توجه کنید ابتدا از آدرس http://127.0.0.1/new/form.php به فرم دسترسی یافته‌ و پس از ثبت فرم آدرس صفحه به http://127.0.0.1/new/send.php تغییر خواهد کرد. از آنجا که ما در ثبت فرم از متد post استفاده کرده‌ایم، اطلاعات به صورت امن و بدون این‌که به کاربر نمایش داده شوند به صفحه جدید که در اینجا send.php است ارسال شده است. اما تفاوت این روش با get چیست؟ در کد form.php در بخش method این‌بار به جای post از get استفاده کنید و فایل را ذخیره کنید. کد form.php شما در این حالت باید مثل زیر باشد:

<FORM action=”send.php” method=”get”>
name : <input type=”text” name=”username”>
<input type=”submit” name=”send” value=”Send Your Name!”>
</form>

حالا فایل send.php را نیز به صورت زیر تغییر دهید:

<?php
$user = $_GET[‘username’];
echo “your name is : ” . $user;
?>

می‌بینید که این‌بار به جای POST_$ از GET_$ استفاده کرده‌ایم و بقیه مراحل مشابه با روش قبل است. اما یک تفاوت بسیار مهم در این روش نسبت به روش post وجود دارد. اگر فرم را در این حالت ثبت کنید و به آدرس URL در مرورگر توجه کنید باید چیزی شبیه به عکس زیر را ببینید. من در صفحه form.php در فیلد نام عبارت mojtaba را نوشته و فرم را ثبت کردم. 

۵۸۴۲۲b2d-5982-4a82-83b5-81c895506efe

همان‌طور که در تصویر بالا هم می‌بینید این‌بار نام فیلد ثبت‌شده و نیز مقدار وارد شده در آن در آدرس مرورگر نمایان شده است. حال اگر کمی خلاقیت به خرج دهید کافی است به جای mojtaba در آدرس URL بالا، هر مقدار دیگری را که دوست دارید وارد کنید. نتیجه چه خواهد شد؟ نام جدید در مرورگر چاپ خواهد شد بدون این‌که نیاز باشد آن را از طریق فرم ثبت کنید! حالا اگر تعداد فیلدهای ما بیشتر باشد چه کاری باید انجام داد؟ فرض کنید در فرم خود ۳ فیلد با نام‌های user و age و city داریم. اگر این فرم را با متد GET ارسال کنیم آدرس URL صفحه‌ای که فرم به آنجا ارسال می‌شود به صورت زیر خواهد بود. فرض کنید نام صفحه مقصد mypage.php است:

mypage.php?user=mojtaba&age=25&city=tehran

می‌بینید که نام فیلد اول یعنی user پس از علامت سوال ? قرار گرفته و بعد = و سپس مقدار وارد شده در این فیلد. برای فیلدهای دوم به بعد نام هر فیلد پس از علامت & قرار می‌گیرد و مجددا = و سپس مقدار فیلد. به هر تعدادی که فیلد داشته باشیم از فیلد دوم به بعد به همین صورت در آدرس URL اضافه خواهند شد.

برای درک بهتر این بخش یک مثال دیگر می‌زنیم. یک فایل جدید به نام my.php در پوشه new ایجاد کنید و کد زیر را در آن قرار دهید:

<?php
$name = $_GET[‘name’];
$age = $_GET[‘age’];
$city = $_GET[‘city’];

echo “your name is $name and yor age is $age and your city is $city”;
?>

حالا آدرس زیر را در مرورگر خود اجرا کنید:

http://127.0.0.1/new/my.php?name=mojtaba&age=25&city=tehran

اگر کد بالا را اجرا کنید می‌بینید که ما مقادیر را به صورت مستقیم و بدون نیاز به فرم از طریق آدرس به صفحه موردنظر خود ارسال کرده‌ایم. نتیجه اجرای کد بالا در مرورگر به صورت زیر خواهد بود:

your name is mojtaba and yor age is 25 and your city is tehran

شما می‌توانید به جای مقادیر این سه متغیر در آدرس URL از مقادیر دلخواه خود استفاده کنید تا مبحث get را بهتر درک کنید.

برای تمرین سعی کنید یک فرم جدید ایجاد کنید که به جای یک فیلد دارای چند فیلد باشد و سپس با استفاده از دو متد post و get داده‌های ثبت شده توسط فرم را با پی‌اچ‌پی دریافت کرده و آنها را نمایش دهید. با استفاده از آنچه تا به این لحظه یادگرفته‌اید می‌توانید یک ماشین حساب ساده بسازید. ابتدا دو عدد را با فرم از کاربر دریافت کنید و سپس با پی‌اچ‌پی عملیات ریاضی موردنظر را انجام دهید. این کار بسیار ساده است و باعث می‌شود مبحث این جلسه را نیز به‌خوبی یاد بگیرید.

در جلسه بعدی رفته رفته وارد مباحث پیشرفته‌تر خواهیم شد. همچنین در صورتی که سوالی در مورد این جلسه دارید آن را از طریق بخش نظرات اعلام کنید.

منبع: زومیت

آموزش PHP – جلسه هشتم: توابع

در این جلسه از سری آموزش‌های پی‌اچ‌پی قصد داریم تا به یکی از مهم‌ترین و در عین حال لذت‌بخش‌ترین مباحث بپردازیم. توابع در هر زبان برنامه‌نویسی کاربرد بسیاری دارند و باعث می‌شوند تا در هنگام کدنویسی بتوانیم پروژه خود را منسجم‌تر تولید کنیم. در ادامه مطلب با ما همراه باشید.

توابع از جمله مهم‌ترین مباحثی است که در آموزش پی‌اچ‌پی باید یاد بگیرید. این مبحث علی‌رغم اهمیت بالا و کاربرد فراوان بسیار آسان و لذت‌بخش است. پس خود را برای یک سفر کوتاه اما به یادماندنی در دنیای PHP آماده کنید.

تابع (Function) چیست؟

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

۰aceda39-23c2-43ea-87c6-d98c6bef7bb2<?php
function MyFunc (){
//some oprates on code!
}
?>

همان‌طور که در کد بالا می‌بینید برای تعریف یک تابع ابتدا باید کلمه کلیدی function را نوشته و سپس نام موردنظر را برای تابع تایپ کنیم. سپس در صورتی که تابع ما نیاز به ورودی داشته باشد باید آن‌ها را در پرانتز مقابل نام تابع تعریف کنیم. در نهایت نیز عملیاتی که باید بر روی داده‌ها انجام شود بین } و { قرار داده می‌شود. دقت کنید در کد بالا ما نام تابع را MyFunc قرار داده‌ایم و این نام دلخواه است. فقط باید توجه داشته باشید در نامگذاری توابعی که تعریف می‌کنید، کلمات کلیدی پی‌اچ‌پی نظیر دستورات پیش‌فرض را به عنوان نام تابع نمی‌توانید انتخاب کنید.

در پی‌اچ‌پی می‌توان توابعی تعریف کرد که نیاز به ورودی نداشته باشند و این نوع توابع در واقع ساده‌ترین نوع ممکن توابع به حساب می‌آیند. به مثال زیر دقت کنید:

<?php
//define func
function bigHello()
{
echo “<h1>hello!</h1>”;
}

//call or using func
bigHello();
?>

در کد بالا ابتدا یک تابع به نام bigHello را معرفی کردیم و کد داخل آن را چاپ عبارت hello در بین تگ h1 تعیین کرده‌ایم. اما همان‌طور که اشاره شد تا زمانی که تابع را فراخوانی نکنیم هیچ اتفاقی نخواهد افتاد و به همین دلیل در خط بعدی با نوشتن نام تابع به صورتی که مشاهده می‌کنید آن را فراخوانی کرده‌ایم. نتیجه کد بالا چاپ عبارت Hello! در بین تگ h1 خواهد بود. حال شما می‌توانید به هر تعداد که می‌خواهید این تابع را فراخوانی کنید و طبیعتا به ازای هر بار فراخوانی تابع، یکبار کد داخل آن اجرا می‌شود.

این یکی از دلایل شیرین بودن مبحث توابع است که در اول مطلب اشاره کردم. شما یک‌بار کد موردنظر را می‌نویسید و سپس می‌توانید هر چقدر که نیاز داشته باشید از آن در پروژه خود استفاده کنید. در پروژه‌های بزرگ‌تر استفاده از توابع باعث می‌شود تا کدنویسی شما به حداقل برسد.

پارامتر‌ها در توابع یا همان ورودی توابع

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

<?php

function myFunc ($name, $age)
{

echo “your name is $name and your age is $age”;

}

myFunc(“mojtaba”, “25”);

?>

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

اگر در کد بالا، به جای دو ورودی، یک ورودی را وارد کنید، با خطای پی‌اچ‌پی مواجه خواهید شد چرا که کامپایلر php در این شرایط نیاز دارد تا دو ورودی به تابع ما ارسال شود.

برای درک بهتر ورودی‌ها در توابع به مثال دیگری توجه کنید. قصد داریم یک تابع بنویسیم که دو عدد را از کاربر گرفته و آن‌ها را در هم ضرب و سپس نتیجه را چاپ کند.

<?php

function Zarb ($a, $b)
{
$c = $a * $b;
echo $c;
}

//using our Zarb Function
Zarb (3, 5);
?>

نتیجه اجرای کد بالا چاپ عدد ۱۵ در مروگر کاربر خواهد بود.  در مثال بالا ابتدا دو ورودی از کاربر گرفته و آن‌ها را در متغیرهایی به نام a و b ذخیره کرده‌ایم. سپس یک متغیر داخلی به نام c در تابع خود تعریف می‌کنیم و مقدار حاصل از ضرب a و b را در آن قرار می‌دهیم. سپس مقدار c را به عنوان خروجی تابع چاپ می‌کنیم.

استفاده از آرگومان‌های ورودی پیش‌فرض در توابع

در مثال‌های قبل همان‌طور که اشاره کردیم به تعداد پارامترهای ورودی که برای هر تابع تعریف می‌کنیم، باید در هنگام فراخوانی آن تابع، به همان تعداد ورودی برای آن تعریف کنیم. اما می‌توانید یک مقدار پیش‌فرض برای هر کدام از ورودی‌های تابع تعریف کنیم تا در صورتی که کاربر آن ورودی را تعریف نکرد، اسکریپت نوشته شده توسط ما با خطا مواجه نشود.

به مثال زیر دقت کنید:

<?php

function myFunc ($name = “mojtaba”)
{
echo $name;
}

myFunc();

?>

در کد بالا همان‌طور که می‌بینید ما یک آرگومان ورودی برای تابع خود تعریف کرده‌ایم. اما این‌بار یک مقدار پیش‌فرض را نیز به آن نسبت داده‌ایم. سپس تابع را فراخوانی کرده‌ایم ولی هیچ آرگومانی را به آن نسبت نداده‌ایم! در این حالت دیگر با خطای پی‌اچ‌پی مواجه نخواهیم شد چرا که مقدار پیش‌فرض متغیر name چاپ خواهد شد.

مقادیر بازگشتی در توابع

تا اینجای کار ما خروجی توابع موردنظرمان را چاپ می‌کردیم. اما گاهی در کدنویسی شرایطی پیش می‌آید که نیاز به مقدار بازگشتی یک تابع داریم. اما مقدار بازگشتی یعنی چه؟ در تعریف متغیرها اگر به یاد داشته باشید گفتیم که هر متغیر یک مقدار را در خود جای داده است. حال اگر بخواهیم خروجی یک تابع را در یک متغیر ذخیره کنیم تا بتوانیم بعدا اعمال دیگری را بر روی آن انجام دهیم، در این شرایط استفاده از روش‌های بالا به کارمان نمی‌آید.

در مثال زیر می‌خواهیم یک تابع تعریف کنیم که دو عدد را از ورودی گرفته و آن‌ها را در هم ضرب می‌کند. اما این‌بار به جای چاپ خروجی، مقدار نهایی حاصل‌ضرب دو عدد ورودی را به صورت یک متغیر خروجی بازگشت می‌دهد.

<?php
function Zarb($a, $b)
{
$c = $a * $b;
return $c;
}

echo Zarb(2,3);
?>

در مثال بالا برای روشن‌تر شدن موضوع ابتدا مقدار بازگشتی تابع Zarb را در متغیری به نام c ریخته‌ایم و سپس مقدار c را با دستور echo چاپ کرده‌ایم. نهایتا خروجی کد بالا عدد ۲۰ خواهد بود. حالا احتمالا به خوبی مفهوم مقدار بازگشتی در توابع را یاد گرفته‌اید.

مبحث توابع نیز در این لحظه به پایان رسید. برای تمرین این جلسه سعی کنید چند تابع با کاربردهای مختلف برای خود بنویسید و از آن‌ها در کدهای خود استفاده کنید. همچنین سعی کنید توابعی بنویسید که مقدار بازگشتی داشته باشند و سپس با مقادر بازگشتی همانند مثال بالا، عملیات‌ خاصی را انجام دهید.

در جلسه بعد اولین پروژه عملی این دوره آموزشی را با هم ایجاد خواهیم کرد و در هر جلسه علاوه بر یادگیری مباحث جدید و کاربردی، پروژه خود را کامل‌تر می‌کنیم. همچنین در صورتی که سوالی در مورد مباحث این جلسه دارید آن را در بخش نظرات اعلام کنید.

منبع: زومیت

آموزش PHP – جلسه هفتم: دستور Switch و آشنایی با Include و Require

در این جلسه از آموزش پی‌اچ‌پی  می‌خواهیم در مورد دستورات پایه‌ای نهایی صحبت کنیم. با فراگیری این درس می‌توان ساخت پروژه‌های ساده را آغاز کرد و سپس رفته رفته با ساخت پروژه‌های کاربردی‌تر پیش خواهیم رفت. دستور Switch یکی از دستورات کاربردی و بسیار خوب php است که عملکرد آن در واقع شبیه به if … else if است. در ادامه مطلب با ما همراه باشید.

اگر خاطرتان باشد در جلسات قبل مفصلا در مورد دستور if و نیز else if صحبت کردیم و گفتیم که برای بررسی چند شرط می‌توان از آن استفاده کرد. اما در پی‌اچ‌پی دستور دیگری به نام Switch وجود دارد که کار اصلی‌اش بررسی چندگانه شرط‌ها است. حالت استاندارد استفاده از Switch به صورت زیر است:

<?php
$a = 1;

switch ($a)
{
case “1”:
echo “moteqayer 1 ast”;
break;

case “2”:
echo “moteqayer 2 ast”;
break;

default:
echo “motaqyer 1 va 2 nist”;
break;

}
?>

اگر به کد بالا دقت کنید، ابتدا ما یک متغیر به نام a تعریف کرده‌ایم و مقدار ۱ را به آن نسبت داده‌ایم. سپس دستور Switch را نوشته و در پرانتز مقابل آن نام متغیری که تعریف کرده بودیم را قرار دادیم. سپس به ازای هر شرط از یک دستور case در داخل دستور Switch استفاده کرده‌ایم. تا اینجا ما به پی‌اچ‌پی می‌گوییم که هدف ما بررسی مقدار متغیر a است. سپس هر case مانند یک else if عمل می‌کند و ما به پی‌اچ‌پی اعلام کرده‌ایم در صورتی که مقدار متغیر ۱ باشد عبارت moteqayer 1 ast چاپ شود و اگر مقدار a عدد ۲ بود عبارت moteqayer 2 ast چاپ شود و اگر مقدار a هیچ کدام از مواردی که بررسی شده نبوده، عبارت motaqyer 1 va 2 nist در مرورگر چاپ شود.

اگر کمی در مورد این دستور سردرگم شده‌اید اصلا نگران نباشید. کافی است همان‌طور که اشاره کردیم مثل دستور else if به آن نگاه کنید با این تفاوت که در دستور switch بررسی شروط به صورتی است که در بالا مشاهده می‌کنید و از انسجام بهتری برخوردار است. بسیاری از توسعه‌دهندگان PHP پیشنهاد می‌کنند که اگر در کدنویسی نیاز به بررسی چندین شرط دارید، بهتر است از Switch استفاده کنید چراکه در چنین شرایطی، استفاده از else if برای بررسی شرط‌های زیاد، نسبت به Switch بهینه نیست.

خب پس اصول کلی استفاده از Switch را به صورت خلاصه اگر بخواهیم اعلام کنیم به صورت زیر خواهد بود:

  1. قرار دادن آنچه قصد بررسی مقدارش را داریم (متغیر یا دستوراتی که نهایتا یک خروجی داشته باشند) در پرانتز مقابل دستور Switch
  2. به ازای هر شرط یک دستور case را نوشته و علامت دو نقطه “:” را در مقابل آن می‌نویسیم.
  3. کد مورد نظر برای شرطی که در مرحله قبل نوشتیم را می‌نویسیم.
  4. با استفاده از عبارت break و سپس قرار دادن علامت نقطه ویرگول ; شرط یاد شده را پایان می‌دهیم.
  5. به ازای هر شرط دیگری که قصد بررسی آن را داریم مراحل ۲ تا ۴ را مجددا تکرار می‌کنیم.
  6. همانند مثال بالا، در نهایت شرط Case default را در پایین‌ترین بخش دستور switch می‌نویسیم تا در صورتی که هیچ کدام از شرط‌های نوشته شده برقرار نبود، این دستور اجرا شود.

برای درک بهتر این دستور یک مثال دیگر می‌زنیم. فرض کنید یک ورودی از کاربر گرفته‌ایم و فقط در صورتی می‌خواهیم به وی پیام خوشامد را نشان دهیم که او نام شهر خود را tehran اعلام کرده باشد.

<?php
$userCity = 20;

switch ($userCity)
{
case “tehran”:
echo “welcome you are from tehran!”;
break;

case default:
echo “you are not from tehran!”;
break;

}
?>

همان‌طور که مشاهده می‌کنید ابتدا متغیر userCity را تعریف و مقداردهی کرده‌ایم. در صورتی که مقدار این متغیر را tehran تعیین کنیم، شرطی اولی که در switch نوشته‌ایم برقرار خواهد بود و در نتیجه عبارت welcome you are from tehran! برای وی نمایش می‌یابد و در غیر این صورت you are not from tehran! را مشاهده می‌کنید. دقت کنید که نوشتن بخش default اجباری نیست ولی به شما پیشنهاد می‌کنیم که در پروژه‌های خود حتما این بخش را هم بکار ببرید چراکه باعث کنترل بهتر شرایط خواهد شد.

معرفی Include و require

هنگام نوشتن پروژه‌های بزرگ، معمولا بهترین کار این است که هر بخش از کد را در فایل جداگانه بنویسیم. روش درست و بهینه ایجاد ساختار پروژه‌ها را در مثال‌های عملی آینده به شما آموزش خواهیم داد. اما بهتر است از همین حالا با استفاده از دستورات include و require کمی به فایل‌های پروژه‌ها و کدهای خود سر و سامان بدهیم. از همین لحظه قصد داریم یک پروژه کوچک را با هم شروع کنیم. اما پیش از آن شما را با دو دستور یاد شده آشنا می‌کنیم.

با استفاده از include می‌توانید محتویات یک فایل دیگر را در فایل مورد نظر خود اضافه کنید. در پوشه htdocs نرم‌افزار سرور مجازی xampp یک پوشه جدید به نام mysite ایجاد کنید. در این پوشه سه فایل پی‌اچ‌‌پی به نام‌های head.php و index.php و footer.php ایجاد کنید. ساختار پروژه شما باید شبیه به زیر باشد:

fac133b1-73e4-4031-b779-b997fa825bb0

اگر دقت کرده باشید بخش هدر یا همان بالای وب‌سایت‌ها و نیز بخش پایینی یا همان فوتر آن‌ها همیشه در تمامی صفحات یکسان است. حالا فرض کنید تعداد فایل‌های یک پروژه برای وب‌سایتی که قصد ساختش را داریم زیاد شود و در چنین شرایطی بخواهیم برای هر صفحه یک فایل جداگانه ایجاد کنیم. اگر در این حالت بخشی در هدر یا فوتر نیاز به تغییر داشته باشد باید آن را در تک تک فایل‌ها اعمال کنیم و این کار معمولا خسته‌کننده و کم‌بازده است.

اما بهترین کار تکه‌تکه کردن کدها و فایل‌ها است و این فقط شامل مثال بالا نمی‌شود. فرض کنید پروژه ما رفته‌رفته در حال گسترش باشد. بهترین کار این است که برای هر بخش، فایل‌ها و نیز پوشه‌های خاص آن را ایجاد کنید. مثلا توابع نوشته شده را در یک فایل قرار دهیم، کدهای مربوط به ثبت نام کاربر را در یک فایل و ….

در این صورت ساختار پروژه ما از انسجام بیشتری برخوردار خواهد شد و توسعه و عیب‌یابی آن هم بسیار آسان‌تر می‌شود. اما برگردیم به سراغ پروژه mysite. پس از ایجاد سه فایل یاد شده، ابتدا فایل head.php را باز کنید و کد زیر را در آن قرار دهید:

<!DOCTYPE html>
<html>
<style>
#header {
background-color:black;
color:white;
text-align:center;
padding:5px;
}
#section {
padding:10px;
}
#footer {
background-color:black;
color:white;
clear:both;
text-align:center;
padding:5px;
}
</style>
</head>
<body>

<div id=”header”>
<h1>My Site</h1>
</div>

سپس فایل index.php را باز کرده و کد زیر را هم در این فایل قرار دهید:

<?php
include (“head.php”);
?>
<div id=”section”>
<h2>Mehrastan PHP Tuts</h2>
<p>we learning php in mehrastan weblog. php is very powerful for developing any kind of web applications. so we love it!</p>
</div>
<?php
include (“footer.php”);
?>

همان‌طور که احتمالا متوجه شده‌اید ما در بالا و پایین کد فایل index.php دو دستور ساده پی‌اچ‌پی را بکار برده‌ایم. در بالا کد با دستور include فایل head.php را به ابتدای فایل اضافه کرده‌ایم. و در پایین نیز فایل footer.php را به کد اضافه می‌کنیم. در این صورت هر تغییری که در فایل‌های head.php یا footer.php اعمال کنید، در فایل index.php نیز همان تغییرات اعمال خواهد شد.

در نهایت کدهای زیر را در هم در فایل footer.php قرار دهید:

<div id=”footer”>
Copyright © mehrastan.ac.ir
</div>
</body>
</html>

حالا مرورگر خود را باز کرده و این پروژه را در مرورگر تست کنید. اگر طبق مراحل به‌درستی پیش رفته باشید آدرس این پروژه در سرور محلی Xampp شما http://127.0.0.1/mysite/index.php خواهد بود. اگر این آدرس را اجرا کنید می‌توانید نتیجه نهایی را که باید چیزی شبیه به عکس زیر باشد، مشاهده کنید:

۲۹a0da34-1929-4b11-8bee-3b1e5aa519feحالا در مرورگر خود روی صفحه راست کلیک کرده و View Source را انتخاب کنید. در این صورت کد سورس نهایی تولید شده توسط پی‌اچ‌پی در واقع ترکیبی از سه فایلی است که ما ایجاد کردیم. یعنی در فایل index.php به جای دستور include همان فایلی که فراخوانی کردیم به آن بخش از کد اضافه شده است.

و اما دستور require نیز کارکردی دقیقا مشابه با include دارد. تنها تفاوت این دو دستور در نوع بررسی خطاها است. در دستور require همان‌طور که از نامش هم پیداست، در شرایطی که فایل فراخوانی شده وجود نداشته باشد یا مسیر آن اشتباه باشد، پی‌اچ‌پی خطا نشان خواهد داد.

روش استفاده از این دستور دقیقا مشابه include است. به عنوان مثال در پروژه بالا اگر بخواهیم فایل head.php را با require به فایل index.php اضافه کنیم باید دستور را به شکل زیر بکار ببریم:

<?php
require (“head.php”);
?>

دقت کنید از آنجا که ما هر سه فایل را در یک پوشه قرار داده‌ایم هنگام فراخوانی آ‌ن‌ها مسیر فایل به شکل بالا خواهد بود. مسیردهی فایل‌ها و پی‌اچ‌پی بسیار آسان است و در کدهای علمی و پروژه‌هایی که از این پس با آن‌ها سروکار داریم به‌خوبی آن را فرا خواهید گرفت.

این جلسه نیز در همین‌جا به پایان می‌رسد. شما اولین پروژه پی‌اچ‌پی را ایجاد کردید و با دستورات پایه‌ای و اساسی آن آشنا شده‌اید و می‌توان از این پس به سراغ مباحث پیشرفته‌تر برویم. ما همین پروژه را در جلسات آینده استفاده می‌کنیم پس بهتر است بخوبی آن را انجام دهید و مباحث را تا اینجا تمرین کرده و کاملا بر آن‌ها مسلط شوید تا در جلسات آینده بتوانید کار را ادامه دهید.

در صورتی که هرگونه سوال یا مشکلی در مورد مباحث این جلسه دارید مانند همیشه آن را در بخش دیدگاه‌ها اعلام کنید.
منبع: زومیت

 

 

آموزش PHP – جلسه ششم: حلقه‌ های While و For

در ادامه سری آموزش‌های php می‌خواهیم به مبحث حلقه‌ها بپردازیم. از حلقه‌ها به منظور تکرار اجرای کدها به تعداد دفعات دلخواه می‌توانیم استفاده کنیم. در ادامه آموزش با ما همراه باشید.

گاهی در برنامه‌نویسی‌ شرایطی پیش می‌آید که نیاز داریم بخش خاصی از کد چندین مرتبه اجرا شود. در این حالت می‌توانیم از حلقه‌ها بهره ببریم. همانند سایر زبان‌های‌ برنامه‌نویسی در php هم از چند نوع حلقه پشتیبانی می‌‌شود. حلقه while و for از جمله مهمترین آن‌ها هستند.

حلقه while

با استفاده از این حلقه می‌توان کد مورد نظر را تا زمانی که شرط برقرار باشد اجرا کرد. به مثال زیر که ساده‌ترین حالت استفاده از حلقه while است توجه کنید.

<?php
while ($var < 10)
{
echo “var is now < 10”;
}
?>

همان‌طور که در کد بالا مشاهده می‌کنید، تا زمانی‌که شرط داخل پرانتز برقرار باشد، کدی که در داخل حلقه نوشته شده، اجرا خواهد شد. پس مشخصا اگر شرط حلقه هیچ‌گاه false نشود، حلقه ما تا بی‌نهایت بار ادامه خواهد یافت.

کار را با یک مثال دیگر ادامه می‌دهیم.در مثال زیر ابتدا متغیر i را برابر با عدد ۱ قرار داده و در شرط حلقه، اعلام می‌کنیم تا زمانی‌که مقدار i از عدد ۷ کوچک‌تر است، کد داخل حلقه اجرا شود. در کد حلقه ابتدا مقدار کنونی i را چاپ کرده و سپس با استفاده از عملگر افزایشی که در جلسات پیش با آن آشنا شدید، در هربار اجرای حلقه یک واحد به مقدار کنونی متغیر i اضافه می‌کنیم. بدین صورت کد حلقه تا زمانی‌که مقدار i کوچک‌تر از عدد ۷ باشد، اجرا خواهد شد و‌ نتیجه مثال زیر چاپ اعداد ۱ تا ۶ خواهد بود.

<?php
$i = 1;
while ($i < 7)
{
echo “$i <br>”;
$i++;
}
?>

اما فرض کنید شرط حلقه به نحوی باشد که از همان ابتدا مقدار False را برگرداند. در این حالت کد داخل حلقه هیچ‌گاه اجرا نمی‌شود. اما در پی‌اچ‌پی راهی تعبیه شده تا در صورت نیاز کد موردنظر ما در حلقه حتی اگر شرط هم برقرار نباشد، حداقل یک بار اجرا شود. در این شرایط باید از دستور Do…While استفاده کنیم.

حلقه Do…While

همان‌طور که گفتیم در صورتی که می‌خواهید کد موردنظر شما حتی در حالت برقرار نبودن شرط حلقه یک‌بار اجرا شود، باید از Do … While استفاده کنید. روش کلی استفاده از این نوع حلقه در مثال زیر آورده شده است:

<?php
$i = 8;
do{
echo “meqdare i aknun $i ast”;
$i++;
}while ($i < 7);
?>

در کد بالا ابتدا مقدار متغیر i را برابر ۸ تعیین می‌کنیم. سپس با دستور Do… while ابتدا یک دستور چاپ echo را وارد کرده‌ایم که مقدار کنونی i را نمایش دهد. (دقت کنید برای این‌که قصد دارید مقدار متغییر در دستور echo چاپ شود از دابل کوتیشن استفاده کرده‌ایم.) سپس با عملگر افزایش ++ یک واحد به مقدار کنونی i اضافه کرده‌ایم. تا زمانی‌که شرط داخل While برقرار باشد کد ما نیز اجرا خواهد شد. اما از آنجا که در شرط حلقه فوق برقرار نیست، فقط یک بار شاهد اجرای دستور نوشته شده در این حلقه خواهیم بود.

پس با اضافه کردن Do به حلقه While مشاهده کردید که چگونه می‌توان کد موردنظر را حداقل یک‌بار در صورتی که شرط هم برقرار نباشد اجرا کنیم. ذکر این نکته هم ضروری به نظر می‌رسد که اگر شرط برقرار باشد باز هم کد قرار گرفته در بخش do اجرا خواهد شد.

برای درک بهتر به مثال دیگری در این مورد توجه کنید. در کد زیر ابتدا مقدار متغیر i را برابر ۵ تعیین می‌کنیم و سپس با استفاده از حلقه do…while اعلام می‌کنیم تا هنگامی که شرط ما یعنی کوچک‌تر یا مساوی بودن i با عدد ۷ برقرار است، کد حلقه که این‌بار در بخش do نوشته شده، اجرا شود.

<?php
$i = 5;
do {
echo “number is now $i <br>”;
$i++;
}while($i <= 7);
?>

در کد حلقه باز هم ابتدا مقدار کنونی i را چاپ کرده و سپس به ازای هر بار اجرا حلقه یک واحد به آن اضافه می‌کنیم. پس خروجی کد بالا در مرورگر به صورت زیر خواهد بود:

۵
۶
۷

اما در پی‌اچ‌پی برای استفاده از حلقه‌ها باز هم محدود به این دو روش نیستید. روش بعدی استفاده از حلقه For است.

حلقهFor

اگر به مثال‌هایی که در بخش توضیحات حلقه While آوردیم دقت کرده باشید، متوجه شده‌اید که در هر مثال از یک متغیر به نوعی به عنوان یک شمارشگر بهره برده‌ایم تا در هر بار اجرای حلقه بتوانیم تعداد دفعات تکرار اجرا شدن آن را کنترل کنیم. در حلقه For بر خلاف While شما حتما باید در دستور اصلی این حلقه یک شمارنده تعریف کنید. برای اینکه بهتر موضوع را درک کنید به کد زیر توجه کنید که ساده‌ترین حالت استفاده از حلقه For در پی‌اچ‌پی است:

<?php
//using for in php in simplest mode!
for (init; test; incremnet){
code to run
}
?>

در کد بالا منظور از init در واقع تعریف و مقداردهی یک شمارشگر است. test شرط حلقه خواهد بود و تا زمانی‌که این شرط برقرار باشد (یعنی true را برگرداند) حلقه اجرا خواهد شد و در نهایت incremnet مقدار اضافه شدن یا کاسته شدن شمارشگر حلقه در هربار اجرای حلقه است (دقیقا همان کار عملگر افزایش و کاهشی که در while استفاده کردیم را می‌کند). همچنین به این نکته توجه کنید که بین هر کدام از این موارد باید علامت نقطه‌ویرگول (;) را تایپ کنید. برای درک بهتر این‌بار به مثال عملی زیر توجه کنید:

<?php
for ($i = 1; $i < 7; $i++)
{
echo “$i <br>”;
}
?>

در کد بالا ابتدا شمارنده حلقه را با متغیری به نام i تعریف کرده و مقدار پیش‌فرض آن را عدد ۱ تعیین کردیم. سپس شرط حلقه را نوشته‌ایم که به پی‌اچ‌پی می‌گوید تا زمانی‌که مقدار i کوچکتر از عدد ۷ است حلقه را اجرا کند. در آخر مقدار متغیر شمارنده را به نحوی تعیین کرده‌ایم که بعد از هربار اجرای حلقه یک واحد افزایش داده شود. کد داخل حلقه نیز مقدار کنونی متغیر i را چاپ خواهد کرد. در نتیجه خروجی کد بالا در مرورگر به صورت زیر خواهد بود:

۱
۲
۳
۴
۵
۶

استفاده از حلقه For نسبت به while باعث می‌شود کدنویسی شما کمتر شود و از نظر بسیاری از توسعه‌دهندگان این حلقه به نوعی حرفه‌ای‌تر است. ولی نتیجه کار همان‌طور که متوجه شده‌اید در هر صورت یکی خواهد بود.

حلقه‌ها بسیار ساده هستند ولی در عین حال قدرت زیادی دارند. با کمی خلاقیت می‌توان استفاده‌های بسیار خوبی از این دستورات ببریم. به عنوان مثال ما با استفاده از کد ساخت جدول در HTML و حلقه‌های پی‌اچ‌پی که در این جلسه به صورت کامل با آن‌ها آشنا شدید، یک جدول ضرب بسیار ساده را تولید کرده‌ایم:

<table align=”center”>
<?php
for($i=1; $i<=10; $i++){
for($j=1; $j<=10; $j++){
echo “$i*$j”;
echo ” – “;
}
echo “</br>”;
echo “</br>”;
}
?>
</table>

تنها نکته‌ای که در مثال بالا وجود دارد، این است که همانند دستورات تو در توی if در اینجا نیز از حلقه for به صورت تو در تو استفاده کرده‌ایم. شما می‌توانید همانند IFهای تودرتو بی نهایت حلقه While یا For را هم به همان شکل مورد استفاده قرار دهید. خروجی کد بالا در مرورگر کاربر به صورت زیر خواهد بود:

۱*۱ – ۱*۲ – ۱*۳ – ۱*۴ – ۱*۵ – ۱*۶ – ۱*۷ – ۱*۸ – ۱*۹ – ۱*۱۰ –

۲*۱ – ۲*۲ – ۲*۳ – ۲*۴ – ۲*۵ – ۲*۶ – ۲*۷ – ۲*۸ – ۲*۹ – ۲*۱۰ –

۳*۱ – ۳*۲ – ۳*۳ – ۳*۴ – ۳*۵ – ۳*۶ – ۳*۷ – ۳*۸ – ۳*۹ – ۳*۱۰ –

۴*۱ – ۴*۲ – ۴*۳ – ۴*۴ – ۴*۵ – ۴*۶ – ۴*۷ – ۴*۸ – ۴*۹ – ۴*۱۰ –

۵*۱ – ۵*۲ – ۵*۳ – ۵*۴ – ۵*۵ – ۵*۶ – ۵*۷ – ۵*۸ – ۵*۹ – ۵*۱۰ –

۶*۱ – ۶*۲ – ۶*۳ – ۶*۴ – ۶*۵ – ۶*۶ – ۶*۷ – ۶*۸ – ۶*۹ – ۶*۱۰ –

۷*۱ – ۷*۲ – ۷*۳ – ۷*۴ – ۷*۵ – ۷*۶ – ۷*۷ – ۷*۸ – ۷*۹ – ۷*۱۰ –

۸*۱ – ۸*۲ – ۸*۳ – ۸*۴ – ۸*۵ – ۸*۶ – ۸*۷ – ۸*۸ – ۸*۹ – ۸*۱۰ –

۹*۱ – ۹*۲ – ۹*۳ – ۹*۴ – ۹*۵ – ۹*۶ – ۹*۷ – ۹*۸ – ۹*۹ – ۹*۱۰ –

۱۰*۱ – ۱۰*۲ – ۱۰*۳ – ۱۰*۴ – ۱۰*۵ – ۱۰*۶ – ۱۰*۷ – ۱۰*۸ – ۱۰*۹ – ۱۰*۱۰ –

با کمی خلاقیت بیشتر و اضافه کردن رنگ و حاشیه به کد HTML مربوط به ساخت جدول، می‌توانید یک جدول ضرب کاربری و زیبا را تنها با چند خط کدنویسی در php تولید کنید.

نکته دیگر این‌که حلقه‌ دیگری به نام For Each در پی‌اچ‌پی وجود دارد که کاربرد آن کمی پیشرفته‌تر از دو حلقه مورد بحث است و به دلیل این‌که قصد ما آموزش آسان و روان پی‌اچ‌پی است، ترجیح می‌دهیم در ساخت پروژه‌های عملی چنین بخش‌هایی را به شما آموزش دهیم.

این جلسه نیز در همین‌جا به پایان رسید. مثل همیشه برای شما یک تمرین در نظر داریم. سعی کنید جدول ضرب بالا را با استفاده از حلقه While در php تولید کنید. در صورتی که سوالی در مورد مباحث این جلسه برایتان پیش آمده نیز می‌توانید در بخش دیدگاه‌ها آن را اعلام کنید.

یک خبر خوب هم به شما می‌دهیم که با مطالعه این شش جلسه، مقدمات و پایه و اساس لازم برای نوشتن پروژه‌ها و مثال‌های کاربردی ساده را یاد گرفته‌اید و از جلسه بعد سعی می‌کنیم آمورش‌ها را با ایجاد پروژه‌های کاربردی به پیش‌ ببریم و در طی این آموزش‌ها سایر مباحث را نیز فرا بگیریم. پس همچنان پیگیر این سری آموزشی در وبلاگ ما باشید.

منبع: زومیت

آموزش PHP – جلسه پنجم: عبارات شرطی، دستور if

در سری مقالات آموزش پی‌اچ‌پی در وبلاگ مهرآستان تقریبا پایه‌ کار برای کدنویسی کاربردی‌تر را یاد گرفته‌اید. در این جلسه می‌خواهیم کدنویسی شرطی را به شما آموزش دهیم و یاد بگیریم که چگونه شرایط مختلف را در پروژه‌های خود کنترل کنیم. در ادامه مطلب با ما همراه باشید.

گاهی در برنامه‌نویسی شرایط پیش‌آمده را باید بتوانید پیش‌بینی و کنترل کنید. به عنوان مثال اگر کاربر هر نوع ورودی را وارد کرد، باید بدانید که چه عملیاتی بر روی ورودی انجام شود و تا نتیجه موردنظر به وی نمایش داده شود. این اصول ساده عبارت شرطی در پی‌اچ‌پی است! 

در تمامی کلاس‌هایی که طی دوران برنامه‌نویسی‌ برگزار کرده‌ام همیشه یک نکته مهم را یادآوری کرده‌ام؛ همیشه سعی کنید یک الگوریتم مناسب را پیش از شروع کدنویسی در مورد پروژه مدنظرتان آماده کنید. ما در اینجا نمی‌خواهیم وارد مبحث الگوریتم شویم اما طرح کلی پروژه همراه با پیش‌بینی‌ شرایط مختلفی که ممکن است رخ دهد را الگوریتم می‌گوییم. باز هم اشاره می‌کنیم که این تعریف صرفا به منظور فهم بهتر افراد تازه‌وارد به دنیای پی‌اچ‌پی است و بنابراین زیاد به جزئیات آن توجه نکنید. بهتر است کمی در مورد الگوریتمنویسی و اصول آن در گوگل جستجو کنید پیش از  هر پروژه، ترجیحا الگوریتم آن را آماده کنید.

دستور شرطی If

همانند تمامی زبان‌های برنامه‌نویسی، دستور شرطی if یکی از مهم‌ترین دستورهایی است که باید آن را یاد بگیرید. بعید به نظر می‌رسد در یک پروژه به دفعات از این دستور استفاده نکنید و همواره یکی از پراستفاده‌ترین و البته کاربردی‌ترین ابزارها برای کنترل شرایط مختلف در کدنویسی محسوب می‌شود. همانطور که در بالا اشاره کردیم، کنترل شرطی به کامپایلر پی‌اچ‌پی می‌گوید که اگر (if) شرایط خاصی رخ داد آنگاه کدام عملیات را باید انجام داد. پیش از اینکه به سراغ ادامه آموزش برویم بهتر است یادآوری کنیم که این آموزش ادامه و دنباله آموزش‌های قبلی است و برای درک این بخش باید سه جلسه قبلی را به‌خوبی فرا گرفته باشید.

برای استفاده از این دستور ابتدا if را نوشته و سپس در پرانتز مقابل آن شرط موردنظر را می‌نویسیم و در نهایت قطعه کدی که در صورت صحیح بودن شرط قرار است اجرا شود را بین علامت } و { می‌نویسیم. به قطعه کد مثال زیر دقت کنید: (برای استفاده و اجرای این مثال مانند قبل xampp را اجرا کنید و یک فایل php جدید را با نام دلخواه براساس آموزش‌های جلسات قبل ایجاد کنید. سپس کدهای زیر را در آن فایل نوشته و نتیجه را در مرورگر تست کنید.)

<?php
//usiing if
$var1 = “weblog”;
$var2 = “mehrastan”;

if ($var1 == “weblog”)
{
echo ‘you will go to weblog’;
}
?>

خب در کد بالا ابتدا دو متغیر را تعریف و مقداردهی کرده‌ایم. سپس دستور if را بکار گرفته‌ایم و در شرط آن با استفاده از عملگرهای کنترلی که در جلسه قبل به صورت کامل و مفصل آن‌ها را توضیح دادیم، شرط موردنظر را وارد می‌کنیم. در صورتیکه شرط داخل پرانتز برقرار باشد، کدی که بین } و { قرار گرفته اجرا خواهد شد و در غیر اینصورت هیچ کدی اجرا نمی‌شود. از آنجا که شرط کد بالا برقرار است و نتیجه آن true است، پس کد بین براکت‌ها اجرا خواهد شد و بنابراین عبارت you will go to weblog در مرورگر کاربر نمایش خواهد یافت.

اما بگذارید شرط را تغییر دهیم تا این بار برقرار نباشد و در نتیجه False را برگرداند. 

<!?php
//usiing if
$var1 = “weblog”;
$var2 = “mehrastan”;

if ($var2 == “weblog”)
{
echo ‘you will go to weblog’;
}
?>

از آنجا که مقدار متغیر var2 در کد بالا برابر با weblog نیست پس شرط داخل پرانتز نتیجه false را بر می‌گرداند و در نتیجه کدی که بین } و { قرار گرفته این بار اجرا نمی‌شود.

کنترل بیشتر شرط با else

مثال‌های بالا در واقع ساده‌ترین شکل استفاده از دستور شرطی if بودند. اما می‌توانیم این دستور را در حالت پیشرفته‌تری نیز بکار ببریم. مثلا بگوییم اگر شرط موردنظر برقرار بود یک کد و اگر شرط برقرار نبود کد دیگری اجرا شود. برای این منظور باید از else نیز در دستور if استفاده کنیم. به مثال زیر توجه کنید:

<?php
//using if … else

$var1 = “weblog”:
$var2 = “mehrastan”;

if ($var1 == “weblog”)
{
echo “you will go to weblog”;
}else{
echo “you will not go to weblog”:
}

همانطور که می‌بینید استفاده از else بسیار آسان است و کافی است آن را در دنباله دستور if بنویسیم و شرط موردنظر برای شرایطی که عبارت مقابل if برقرار نباشد را در این بخش وارد کنید. در کد بالا ابتدا توسط دستور if بررسی می‌کنیم که آیا مقدار متغیر var1 برابر با weblog است یا خیر.  اگر شرط برقرار بود عبارت you will go to weblog در مرورگر کاربر نمایش خواهد یافت و اگر شرط برقرار نبود، کدی که در بخش else قرار داده شده اجرا می‌شود که در اینجا عبارت you will not go to weblog است. 

حالا یک تمرین برایتان داریم! در کد بالا چون شرط برقرار است، مشخصا عبارتی که در مرورگر نمایان می‌شود you will go to weblog خواهد بود. شما کد را به نحوی تغییر دهید که شرط برقرار نباشد و عبارت you will not go to weblog در مرورگر نمایان شود.

روش کلی و استاندارد استفاده از if به همین سادگی بود که خدمتتان توضیح دادیم. اما می‌توان از if به صورت مختصرتر و کاربردی‌تری هم استفاده کرد که فعلا کاری با آن روش‌ها نداریم چراکه قصد ما ارائه روش آموزشی بسیار ساده و به دور از پیچیدگی است. در ادامه دروس و در مثال‌های کاربردی‌تر و عملی‌تر با این حالات مختلف هم آشنا خواهید شد.

گفتیم که در عبارات شرطی که در دستور if بکار می‌بریم همیشه دو حالت بیشتر پیش نمی‌آید: یا شرط برقرار است که در این حالت مقدار true را بر می‌گرداند یا شرط برقرار نیست که در این حالت مقدار false را بر می‌گرداند. در برخی مواقع در کدنویسی شرایطی پیش‌ می‌آید که نیاز دارید از این نکته با یک روش بسیار آسان بهره ببرید. ابتدا طبق معمول توجه شما را به مثال زیر جلب می‌کنیم و در ادامه آن را به طور دقیق مورد بررسی قرار می‌دهیم:

<?php
$x = true;
$y = false;

if ($x){
echo “we are ture!”;
}else{
echo “we are false!”;
}
?>

حتما تعجب کرده‌اید که چرا به جای نوشتن یک شرط در مقابل دستور if فقط نام متغیر x را آورده‌ایم. به‌نظر شما نتیجه اجرای کد بالا چه خواهد بود؟ اگر نکات گفته شده را به‌خوبی فرا گرفته باشید باید بدانید که نتیجه کد بالا چاپ عبارت we are ture! در مرورگر خواهد بود. اما چرا؟ گفتیم هدف از شرطی که در پرانتز نوشته می‌شود نهایتا به دست آمدن یک true یا false یا همان صحیح و غلط بودن است. از آنجا که مقدار متغیر x را true تعیین کرده‌ایم پس دستور if کاری به هیچ چیز ندارد جز خروجی که در این مثال خروجی متغیر x همان true است و در این حالت شرط برقرار بوده و در نتیجه we are true چاپ می‌شود. اما اگر به جای x در شرط دستور بالا y را قرار دهیم چه می‌شود؟ عبارت بخش else یعنی we are false! در مرورگر نمایان خواهد شد.

کنترل چند عبارت شرطی با else if

اما باز هم می‌توان دستور if را پیشرفته‌تر از این هم مورد استفاده قرار داد. فرض کنید در پروژه خود با شرایطی مواجه شده‌اید که باید چند حالت مختلف را بررسی کنید و در صورتی که هر کدام از شرایط موردنظر برقرار بود کد خاصی اجرا شود. در اینجا دو سناریو یا به اصطلاح برنامه‌نویس‌ها، دو سولوشن (solution) یا همان راه‌حل اصلی برای این منظور وجود دارد. اول این‌که برای هر شرایطی یک دستور if  جداگانه بنویسیم و دوم این‌که یک دستور if چند شرطه را مورداستفاده قرار دهیم. در پی‌اچ‌پی می‌توانید چندین شرط را به صورت همزمان با یک دستور if بررسی کنید. بدین منظور دقیقا مانند else باید از دستور else if استفاده کنید با این تفاوت که این بار در مکان else if هم می‌توانید مثل if اصلی شرط تعیین کنید. البته دستورات دیگری نیز برای بررسی چند شرط وجود دارند و اصولا در php برای هر مسئله‌ای تعداد زیادی روش وجود دارد. به کد زیر توجه کنید:

<?php
$site1 = “weblog”;
$site2 = “forum”;
$site3 = “mehrastan”;

if ($site1 == “weblog”)
{
echo “site is weblog”;
}else if ($site1 == “forum”)
{
echo “site is forum”;
}else if ($site1 == “mehrastan”)
{
echo “site is mehrastan”;
}else{
echo “site is not in list”;
}
?>

مثال بالا را به نوعی می‌توان حالت استاندارد استفاده از دستور کامل if دانست. در ابتدا سه متغیر معرفی و مقداردهی شده‌اند. سپس با دستور if شرط اول را بررسی می‌کنیم که اگر مقدار متغیر site1 برابر با weblog بود عبارت site is weblog چاپ شود. سپس شرط دیگری را با else if بررسی می‌کنیم و می‌گوییم اگر متغیر site1 برابر با forum بود عبارت site is forum چاپ شود. در نهایت شرط سومی را نیز مجددا با دستور else if بررسی کرده‌ایم که اگر site1 برابر با mehrastan بود، عبارت site is mehrastan چاپ شود. سپس در آخر با استفاده از دستور else به پی‌اچ‌پی اعلام می‌کنیم که در صورت برقرار نبودن هیچ‌کدام از این شرط‌ها عبارت site is not in list در مرورگر چاپ خواهد شد.

استفاده از if به صورت تو در تو

دستور if را می‌توانید به صورت تو در تو نیز استفاده کنید. با بزرگ‌تر شدن پروژه‌ها رفته رفته نیاز به استفاده از if به صورت تو در تو خواهید داشت. همچنین برای ساده سازی برخی کارها می‌توان به صورت زیرکانه از if های تو در تو بهره گرفت. البته چون فعلا نیازی به استفاده از چنین حالتی نداریم و نیز نمی‌خواهیم مبحث را سنگین‌تر کنیم برای این حالت در حال حاضر یک مثال ساده می‌آوریم و در بخش‌های پیشرفته‌تر و انجام کدنویسی برای تمرینات عملی، بیشتر با این حالات و تکنیک‌ها آشنا خواهید شد.

<?php
$fname = “mojtana”;
$lname = “bolhasani”;

if ($fname == “mojtaba”){
if ($lname == “bolhasani”)
{
echo ” your full name is mojtaba bolhasani”:
}
}else{
echo “your are not in list”;
}

سعی کنید کد بالا را ابتدا خودتان تحلیل کنید. در ابتدا دو متغیر تعریف و مقداردهی شده‌اند. سپس در شرط اول بررسی می‌کنیم که آیا متغیر fname برابر با mojtaba است یا خیر. در صورتی که شرط برقرار نباشد کد بخش else اجرا خواهد شد و در صورتی که درست باشد پی‌اچ‌پی به سراغ if دوم می‌رود و سپس در این if جدید بررسی می‌کنیم که آیا متغیر lname برابر با bolhasani است یا نه. اگر این شرط هم برقرار باشد در نهایت عبارت your full name is mojtaba bolhasani در مرورگر نمایان خواهد شد.

این حالت ساده استفاده از if تو در تو بود ولی همان‌طور که اشاره کردیم پی‌اچ‌پی آنقدر دست توسعه‌دهنده را باز می‌گذارد که برای انجام هر کاری می‌توان از روش‌ها و سولوشن‌های ابتکاری و پیش‌فرض زیادی بهره برد.

بررسی چند شرط به صورت همزمان

گاهی نیاز است تا چند شرط به صورت همزمان با هم برقرار باشند تا به کد اجازه دهیم عملیات خاصی را انجام دهد. بیایید ثابت کنیم پی‌اچ‌پی چرا انقدر محبوب است! خب مثال بخش قبلی را به خاطر بیاورید که دو شرط را به صورت تو در تو بررسی کردیم. می‌توان کد بالا را به این صورت هم نوشت:

<?php
$fname = “mojtana”;
$lname = “bolhasani”;

if ($fname == “mojtaba” && $lname == “bolhasani”)
{
echo ” your full name is mojtaba bolhasani”:
}else{
echo “your are not in list”;
}
?>

اگرچه کد بالا نسبت به مثال قبلی بسیار خلاصه‌تر و خواناتر است اما نتیجه کار یکی است! یکی از دلایل لذت‌بخش بودن برنامه‌نویسی با پی‌اچ‌پی همین موارد است! در جلسه قبلی با عبارات کنترلی آشنا شدید و حالا در این مثال از آن‌ها کمی استفاده کردیم. در دستور if می‌توانید هر چقدر که دلتان می‌خواهد شرایط مختلف را به صورت همزمان با هم بررسی کنید. در کد بالا دو شرط به صورت همزمان بررسی می‌شوند و در صورتی که هر دو درست باشند، عبارت your full name is mojtaba bolhasani چاپ خواهد شد و در غیر این صورت هم که دیگر خودتان می‌دانید!  البته چون در بین دو شرط نوشته شده عبارت && را قرار داده‌ایم وضعیت به این صورت پیش‌ می‌رود چراکه && در صورتی true را بر می‌گرداند که هر دو طرف آن با هم برابر باشند. زیاد نگران این بخش هم نباشید و فقط سعی کنید آن را برای خود تحلیل کنید.

دیدید که با استفاده از دستور if می‌توان شرایط مختلف و وضعیت‌های گوناگون را در برنامه‌نویسی با php پیش‌بینی و کنترل کرد. برای فراگرفتن هرچه بهتر این مبحث سعی کنید برای خود چند مثال ایجاد کنید. چند شرط را در نظر بگیرید و برای آن کد بزنید! سعی کنید از آرایه‌ها نیز استفاده کنید. همچنین چند شرط را در دستور if بکار بگیرید تا بخوبی این مبحث را هم درک کنید.

اگر سوالی در مورد هر یک از مباحث مطرح شده داشتید، آن را در بخش دیدگاه‌ها بپرسید. ما و سایر کاربران در حد توان پاسخ شما را خواهیم داد.

منبع: زومیت

آموزش PHP – جلسه چهارم: آرایه ها

در ادامه سری آموزش‌های پی‌اچ‌پی امروز قصد داریم تا به مبحث مهم آرایه‌ها بپردازیم. آرایه در زبان ساده محلی است که می‌توان در آن بیش از یک مقدار را ذخیره‌سازی کرد. در ادامه مطلب با ما همراه باشید.

در جلسات گذشته آموزش‌های ابتدایی زبان برنامه‌نویسی پی‌اچ‌پی را با هم گذراندیم. حالا می‌خواهیم در این جلسه به آرایه‌ها بپردازیم.

آرایه‌ها در پی‌اچ‌پی

اگر خاطرتان باشد در جلسات قبل به صورت مفصل در مورد متغیرها در پی‌اچ‌پی با شما صحبت کردیم و انواع آن را نیز موردبررسی قرار دادیم. متغیرها می‌توانند یک مقدار را برای ما نگهداری کنند و در مواقع نیاز می‌توان به آن مقدار دسترسی داشت. اما این روش برای ذخیره‌سازی اطلاعات همیشه کاربردی نیست و فرض کنید تعداد زیادی داده از یک نوع خاص را بخواهیم ذخیره کنیم. در چنین شرایطی طبیعا معرفی و استفاده چند متغیر کاربردی به نظر نمی‌آید. اینجاست که آرایه‌ها وارد عمل می‌شوند.

آرایه به زبان ساده همان متغیر است با این تفاوت که می‌توان بیش از یک مقدار را در آن قرار داد. (حتی می‌توان از آرایه‌های سه‌بعدی استفاده کرد که فعلا کاری با آن‌ها نداریم و فعلا آرایه‌های معمولی را موردبررسی قرار خواهیم داد.)

آرایه‌های خطی (دوبعدی)

خب برای معرفی و استفاده از آرایه‌ها همانند متغیرها یک علامت $ را تایپ کرده و نام موردنظر را برای آرایه انتخاب می‌کنیم. سپس علامت = را قرار داده و با عبارت کلیدی Array اقدام به ذخیره‌سازی داده‌ها در آن آرایه می‌کنیم. به مثال زیر توجه کنید:

<?php
$names = Array(“mehrastan”,”weblog”,”university”);
?>

همان‌طور که در کد بالا می‌بینید ما سه مقدار weblog ،mehrastan، و university را در آرایه‌ای به نام names ذخیره کردیم. اما چگونه می‌توان به مقدار موردنظر دسترسی داشت؟ فرض کنید در اسکریپت موردنظرتان نیاز دارید تا به داده‌ دوم یعنی weblog دسترسی داشته باشید. برای اینکار باید از ایندکسگذاری آرایه‌ها استفاده کنیم. دقت کنید در آرایه‌ها شماره هر داده با یک عدد منحصر به فرد که از ۰ شروع شده و یک واحد یک واحد به این مقدار اضافه می‌شود. مثلا برای آرایه بالا ایندکس داده‌ها به ترتیب از چپ به راست برابر با ۰ سپس ۱ و بعد از آن ۲ خواهد بود. نکته مهم اینجاست که شماره‌گذاری (ایندکس) داده‌ها در آرایه‌ها در تمام زبان‌های برنامه‌نویسی به همین شکل است و از عدد صفر شروع می‌شود. بنابراین طبیعی است که برای آرایه فوق که شامل ۳ عضو است این مقادیر ۰ و ۱ و ۲ باشند. با توجه به توضیح بالا برای دسترسی به مقدار weblog باید از کد زیر استفاده کنیم:

<?php
$names = Array(“mehrastan”,”weblog”,”university”);
//access and echo weblog from above array
echo $names[1]; //this will print : weblog
?>

همان‌طور که می‌بینید با قرار دادن شماره ایندکس عضو موردنظر در داخل [] و پس از نام آرایه می‌توانید به عضو موردنظر دسترسی داشته باشید. اما حال فرض کنید شرایطی پیش می‌آید که شما باید خودتان شماره‌گذاری ایندکس‌ها را به دست بگیرید. این‌کار در پی‌اچ‌پی به راحتی آب خوردن است! به کد زیر دقت کنید:

<?php
$user_details = Array(“name” => “mojtaba”, “age” => “25”, “fav” => “php”);
?>

همان‌طور که در کد بالا می‌بینید ما در آرایه‌ای به نام user_details یکسری از مشخصات کاربر را ذخیره کرده و برای هر داده یک ایندکس اختصاصی در نظر گرفتیم. در این شرایط باز هم البته می‌توانید از روش قبلی بهره ببرید و به عنوان مثال برای دسترسی به مقدار نام از ایندکس شماره صفر استفاده کنید. اما در آرایه بالا ما سه مشخصه نام، سن و علاقه را در یک آرایه قرار داده و برای هر کدام از این داده‌ها یک ایندکس دلخواه تعریف کردیم که در مثال بالا این ایندکس‌ها به ترتیب: name سپس age و در آخر fav هستند. حالا برای دسترسی به مقدار age کافی‌است از کد زیر استفاده کنید:

<?php
$user_details = Array(“name” => “mojtaba”, “age” => “25”, “fav” => “php”);

//access and echo age in user_details
echo $user_details[‘age’]; //this will prints: 25
?>

همانطور که مشاهده می‌کنید به جای شماره ایندکس داده موردنظر از ایندکس اختصاصی خودمان برای دسترسی به سن کاربر در آرایه فوق بهره گرفتیم. نکته مهم اینجاست که به نحوه نوشتن آرایه‌ها و نیز اختصاص ایندکس دلخواه خیلی دقت کنید تا کد شما به درستی اجرا شود.

روش دیگر

روش دیگر برای اختصاص دادن مقدار به آرایه‌ها به  صورت زیر است:

<?php
$user_details[‘name’] = “mojtaba”;
$user_details[‘age’] = 25;
$user_details[‘fav’] = “php”;

echo $user[‘age’]; //this will prints 25
?>

کد بالا و مثال قبل عینا یک نتیجه را در برخواهند داشت و در این مرحله باید آنقدر پیشرفت کرده باشید که کد بالا را خودتان به‌راحتی تحلیل کنید. تنها روش در این بخش فرق کرده و نتیجه یکسان است. پی‌اچ‌پی در اکثر بخش‌ها به همین صورت دست توسعه‌دهنده را بسیار باز گذاشته و می‌توان حتی در مواردی با خلاقیت خود روش‌های جدیدی برای استفاده از پیش‌فرض‌های برنامه‌نویسی به‌دست آورد.

آرایه‌های چندگانه (چند بعدی)

همان‌طور که گفتیم آرایه‌ها فقط به صورت خطی مورداستفاده قرار نمی‌گیرند. یکی از بهترین قابلیت‌های پی‌اچ‌پی این است که شما می‌توانید آرایه‌هایی با بی‌نهایت بعد ایجاد کنید! خب این یعنی چه؟ بهتر است کار را با یک مثال دیگر ادامه دهیم:

فرض کنید شما داده‌های مرتبط با چند کاربر را از بانک داده گرفته‌اید و می‌خواهید آن‌ها را مورداستفاده قرار دهید. در این حالت بهترین کار این است که اطلاعات مرتبط با هر کاربر در یک آرایه مختص به خود او قرار گیرد و بعد از این‌کار به‌راحتی می‌توان به هر مشخصه از هر کاربر دسترسی یافت. استفاده از آرایه‌های چند بعدی درست شبیه آرایه‌های دوبعدی است و فقط کمی مراحل در اینجا بیشتر خواهد شد.

<?php
$users = Array (“user1” => array (“name” => “mojtaba”, “fav” => “php”), “user2” => array (“naem” => “miaad”, “fav” => “mehrastan”));
?>

همان‌طور که در کد بالا می‌بینید این‌بار به جای اختصاص دادن یک داده در واقع یک آرایه به هر عضو اختصاص داده شده است. اگر کد بالا کمی شما را سردرگم کرده اصلا جای نگرانی نیست چرا که با چندبار تمرین واقعی و نوشتن کد به شما قول می‌دهم این مبحث را آن‌چنان خوب یاد می‌گیرید که فکرش را هم نمی‌کنید! پس همین حالا دست به‌کار شوید و همزمان با خواندن آموزش کدها را بنویسید.

در کد بالا ما اطلاعات دو کاربر را که برای هر کدام شامل نام و علاقه وی می‌شود در آرایه‌ای به نام users قرار دادیم. اما برای دسترسی به هر عضو از این آرایه چگونه باید عمل کرد؟ فرض کنید می‌خواهیم نام کاربر اول را در خروجی چاپ کنیم. در این حالت باید از کد زیر استفاده کنیم:

<?php

$users = Array (“user1” => array (“name” => “mojtaba”, “fav” => “php”), “user2” => array (“naem” => “miaad”, “fav” => “mehrastan”));

echo $users[‘user1’][‘name’]; //this will prints : mojtaba
?>

خب همان‌طور که دیدید در اینجا کافی‌است از دو ایندکس استفاده کنیم. ایندکس اول user1 است که به پی‌اچ‌پی می‌گوید در آرایه users به دنبال عضوی به نام user1 هستیم. سپس در ایندکس دوم به پی‌اچ‌پی میگوییم به دنبال مشخصه name از عضو انتخاب شده هستیم. در اینجا همان‌طور که در کد هم به‌خوبی مشخص شده خروجی mojtaba خواهد بود. مبحث آرایه‌های چند بعدی همان‌طور که گفتیم فقط نیاز به تمرین دارد. اگر یادتان باشد در بخش آرایه‌های خطی مثال آوردیم تحت عنوان روش دیگر برای تمرین شما سعی کنید آن روش را برای آرایه‌های چندبعدی مثلا برای کد بالا مورداستفاده قرار دهید.

مبحث این جلسه از آموزش PHP نیز در همین‌جا به پایان می‌رسد. از جلسه بعد رفته رفته شروع به ساخت اسکریپت‌های کاربردی می‌کنیم و مباحث بیشتری را خواهیم آموخت. پس هم‌چنان پیگیر این سری آموزشی در وبلاگ مهرآستان باشید. در صورتی که سوالی در مورد محتوای این جلسه دارید نیز در بخش دیدگاه‌ها آن را اعلام نمایید.

منبع: زومیت

آموزش PHP – جلسه سوم: عملگرها

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

عملگرهای اصلی

ابتدا باید ببینیم عملگر چیست؟ عملگرها در واقع عملیاتی را بر روی داده‌ها انجام می‌دهند و از آنجا یک خروجی می‌گیریم. برای مثال در خط زیر عملگر جمع به‌کار رفته است و باعث شده تا دو عدد با یکدیگر جمع شوند:

۲ + ۲ = ۴

همان‌طور که دیدید عملگرهای اصلی در واقع همان عملیات‌ اصلی در ریاضیات هستند که در دوران ابتدایی با آن‌ها آشنا شدیم! عملگرهای اصلی در پی‌اچ‌پی از این قرار هستند:‌

عملگر جمع (+)، عملگر تفریق (-)، عملگر ضرب (*)، عملگر باقی‌مانده (٪) و عملگر تقسیم (/).

بهترین راه برای ثبت آموخته‌ها استفاده از مثال عملی است پس در ادامه برای این عملگرها به زبان پی‌اچ‌پی مثالی می‌آوریم. دقت کنید توضیحات هر خط از کد زیر به صورت کامنت مشخص شده است:

همان‌طور که دیدید ۴ عملگر اصلی به همین راحتی در پی‌اچ‌پی مورداستفاده قرار می‌گیرند. اما اگر حواس‌تان باشد، یک عملگر اصلی دیگر به نام باقی‌مانده هم در php وجود دارد. پیش از مثال لازم دانستیم در مورد این عملگر کمی بیشتر توضیح دهیم. از باقی‌مانده به منظور گرفتن خروجی باقی‌مانده تقسیم داده‌ها بر یکدیگر استفاده می‌شود. برای مثال در کد زیر، باقی‌مانده تقسیم دو عدد ۸ و ۳ به عنوان خروجی چاپ خواهد شد که این مقدار ۲ است.

<?php

//module

$num1 = 8;

$num2 = 3;

echo $num1 % $num2; //this will print 2

?>

عملگرهای افزایش و کاهشی

دو نوع عملگر دیگر نیز در PHP وجود دارند که از آن‌ها برای افزایش یا کاهش مقدار یک متغیر استفاده می‌شود. به مثال زیر توجه کنید:

<?php
$x++; //this code is same to this: $x = $x + 1;
$x–; //this code is same to this: $x = $x – 1;
?>

همان‌طور که احتمالا متوجه شده‌اید عملگر ++ باعث می‌شود یک واحد به مقدار قبلی متغیر x در کد بالا اضافه شود. در واقع ++x$ همان کار ۱ + x$ را انجام می‌دهد ولی طبیعتا روشی حرفه‌ای‌تر و سریع‌تر است. همین قضیه در مورد عملگر — نیز صدق می‌کند با این تفاوت که این‌بار یک واحد از مقدار متغیر x کم می‌شود.

اما گاهی در برنامه‌نویسی شرایطی پیش‌ می‌آید که نمی‌توان از عملگرهای افزایش و کاهشی به همین شکل استفاده کرد! فرض کنید می‌خواهید مقدار یک متغیر را ابتدا چاپ کنید یا از آن خروجی بگیرید و سپس آن را یک واحد افزایش دهید. در این شرایط کد بالا نمی‌تواند به شما کمک کند چرا که به حالت معمول نوشتن کدی مانند ++x$ باعث می‌شود ابتدا یک واحد به متغیر اضافه و سپس هرچه نتیجه باشد به عنوان خروجی مدنظر قرار می‌گیرد.

اگر می‌خواهید ابتدا به مقدار کنونی متغیر دسترسی یافته و سپس عملیات افزایش یا کاهش را انجام دهید باید از کدی مانند زیر استفاده کنید و عملگرهای مورد بحث را پیش از نام متغیر به‌کار بگیرید:

<?php
$x = 1;
echo ++$x; // first echo current value of $x and then increase 1 unit. so this will print 1;
echo “<br>”;
echo $x; // this will print 2 again! bcz $x now is $x + 1<span id=”CmCaReT”></span>
?>

توضیحات کد بالا به صورت کامنت در خود کد داده شده و از شما می‌خواهیم سعی کنید خودتان به‌خوبی آن را تحلیل کنید. در کد بالا عدد ۲ در خروجی دوبار چاپ خواهد شد. دقت کنید که ما از کد <br> که یک تگ اچ‌تی‌ام‌ال است نیز استفاده کرده‌ایم.

عملگرهای اختصاص دادن

از این نوع عملگر برای اختصاص دادن مقدار به متغیرها استفاده می‌کنیم. پیشتر با عملگر اصلی = آشنا شده‌اید و تاکنون در مثال‌ها از آن استفاده کرده‌ایم. کار این عملگر بسیار ساده است. هر چه در سمت راست وجود دارد به متغیر سمت چپ اختصاص داده خواهد شد. علاوه بر عملگر اصلی اختصاص دادن چند عملگر کاربردی دیگر نیز در پی‌اچ‌پی وجود دارند که کارکرد آن‌ها مشابه عملگرهای افزایش و کاهشی است. به مثال زیر توجه کنید:

<?php
$x = 50;
$x += 100; // this is same as this code : $x = $x + 100
echo $x; // this will print 150
?>

در کد بالا ابتدا مقدار ۵۰ را به متغیر x اختصاص دادیم. سپس با استفاده از عملگر اختصاص دادن =+ مقدار ۱۰۰ را به متغیر یاد شده اضافه و نتیجه را مجددا در خود متغیر ذخیره کردیم. در نهایت با دستور echo مقدار نهایی x$ را در مرورگر نمایش دادیم. عملگرهای اختصاص دادن به شرح زیر هستند:

عملگرهای اختصاص دادن در پیاچپی

عملگر کارکرد توضیح
$x += $y $x = $x + $y افزایشی
$x -= $y $x = $x – $y کاهشی
$x *= $y $x = $x * $y ضرب
$x /= $y $x = $x / $y تقسیم
$x %= $y $x = $x % $y باقی‌مانده

همان‌طور که می‌بینید می‌توان با استفاده از این عملگرها سرعت کدنویسی را بالا برد و علاوه بر این کد کمتری نوشت.

عملگرهای مقایسه‌ای

از این نوع عملگرها برای مقایسه دو داده استفاده می‌شود. این عملگرها خروجی دوحالته دارند بدین معنا که پس از انجام مقایسه یا مقدار صحیح (true) یا مقدار غلط (false) را باز می‌گردانند. در جدول زیر می‌توانید این عملگرها و کاربرد آن‌ها را ببینید:

عملگر نام مثال نتیجه
== برابری $x == $y اگر مقدار x و y برابر باشد true را برمی‌گرداند
=== یکسان $x == $y اگر مقدار x و y برابر و نوع آن‌ها نیز یکی باشد true را برمی‌گرداند
=! عدم برابری $x != $y اگر مقدار x و y برابر نباشد true را برمی‌گرداند
<> عدم برابری $x <> $y اگر مقدار x و y برابر نباشد true را برمی‌گرداند
==! عدم یکسان بودن $x !== $y اگر مقدار x و y برابر نباشد و نوع آن‌ها نیز یکی نباشد true را برمی‌گرداند

همان‌طور که می‌بینید می‌توان از انواع حالت مقایسه‌ای پیشرفته در پی‌اچ‌پی استفاده کرد. البته نیازی نیست که چندان نگران این بخش باشید و در کدها و پروژه‌های عملی که در جلسات آینده انجام می‌دهیم از تمامی این موارد استفاده خواهیم کرد تا علاوه بر یادگیری یک کار عملی هم انجام داده باشید.

اما پیشنهاد می‌کنیم با نوشتن چند خط کد نمونه خودتان را بیازمایید و مثال‌هایی برای استفاده از این عملگرها با توجه به آنچه تا کنون آموخته‌اید را نوشته و در Xampp سرور رایانه شخصی خود تست کنید. 

در صورتی که هرگونه سوالی در مورد مباحث بیان شده دارید می‌توانید در بخش دیدگاه‌ها اعلام کنید. جلسه بعدی آموزش پی‌اچ‌پی به مبحث آرایه‌ها اختصاص دارد.

منبع: زومیت