آموزش php – درس هفتم – دستور شرطی if و elseif

طراحی سایت » آموزش PHP » آموزش php – درس هفتم – دستور شرطی if و elseif
۸ شهریور ۱۳۹۲ چاپ

دستورات شرطی و حلقه ها جزو عناصر اصلی و جدایی ناپذیر هر زبان برنامه نویسی ساختار یافته هستند و تقریبا در تمامی برنامه ها کاربرد دارند. دستورات شرطی با برقراری شرط خاصی، مجموعه ای از دستورالعمل ها را اجرا میکنند. در php دو نوع دستور شرطی داریم که عبارتند از if و switch. در این درس به بررسی دستور if میپردازیم و در جلسه بعد نحوه ی کار با دستور switch را یاد میگیرید.

به طور کلی دستورات مربوط به if به سه شکل قابل اجرا هستند. این سه شکل عبارتند از:

  1. (شرط)if
  2. else (شرط اول)if
  3. else (شرط دوم)elseif (شرط اول)if

دستور شرطی if

اگر بخواهیم تنها یک دستور را به صورت شرطی اجرا کنیم باید از دستور if استفاده کنیم. هنگامی که از این دستور استفاده کنیم، php شرط را ارزیابی میکند و یک مقدار بولی (Boolean) را باز میگرداند. همانطور که در درس قبل گفته بودیم، داده های بولی تنها دو مقدار True و False را برمیگردانند. پس اگر دستور شرط صحیح باشد، نتیجه true ارزیابی شده و دستورالعمل اجرا میشود در غیر اینصورت مقدار false ارزیابی میشود و از اجرا شدن دستورالعمل چشم پوشی میشود.

دستور شرطی if در php

نحوه ی استفاده از دستور if به این شکل است که ابتدا شرط را بیان میکنیم و سپس با استفاده از آکولاد باز ” { ” و آکولاد بسته ” } ” دستورالعمل را بیان میکنیم. به ساختار زیر توجه کنید:

<?php
if (شرط) {
دستورالعمل
}
?>

مثال: فرض کنید که قصد داریم اگر سن کاربر ۲۰ سال باشد پیامی را به وی نمایش دهیم، یعنی شرط ما ۲۰ ساله بودن کاربر است و دستورالعمل نیز پیامی که نمایش داده میشود:

<?php
$age= 20;
if ($age = 20){
echo " شما ۲۰ ساله هستید ";
}
?>

با توجه به اینکه متغیر age مقداری برابر ۲۰ دارد، پس شرط مقدار true را باز میگرداند و دستور اجرا شده و پیام مورد نظر نمایش داده میشود. اگر مقدار ۲۰ را تغییر دهیم دیگر پیامی نمایش داده نمیشود.

دستور if…else

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

نحوه ی استفاده از این دستور نیز مانند دستور if است با این تفاوت که بعد از بسته شدن آکولاد دستور if، دستور else اجرا میشود:

<?php
if(شرط){
دستورالعمل
}
else{
دستورالعمل
}
?>

حال بیایید مثال قبلی را کاملتر کنیم، اگر سن کاربر بالای ۲۰ سال بود پیام ” سن شما بیش از ۲۰ سال است ” را به وی نمایش میدهیم در غیر اینصورت پیام ” شما کمتر از ۲۰ سال سن دارید ” را نمایش میدهیم :

<?php
$age=17;
if($age>20){
echo "سن شما بیش از ۲۰ سال است ";
}
esle{
echo " شما کمتر از ۲۰ سال سن دارید ";
}
?>

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

دستور if…elseif…else

این دستور این امکان را فراهم میکند تا در صورت عدم برقراری شرط دستور if، شرطهای دیگری را نیز بررسی کنیم. ساختار کلی استفاده از این دستور به شرح زیر است:

<?php
if(شرط){
دستورالعمل
}
elseif(شرط دوم){
دستورالعمل
}
else{
دستورالعمل
}
؟>

اجازه دهید مثال قبلی را که سن ۲۰ سال را پوشش نمیداد با استفاده از این دستور تکمیل کنیم، برای اینکار باید ابتدا سن کمتر از ۲۰ سال را بررسی کنیم، سپس سن بالای ۲۰ سال را بررسی کنیم، اگر سن کاربر جزو هیچکدام از این دو گروه نبود، پس مسلما سن وی برابر ۲۰ سال است:

<?php
$age= 20;
if($age<20){
echo " سن شما کمتر از ۲۰ سال است ";
}
elseif($age>20){
echo " سن شما بیش از ۲۰ سال است ";
}
else{
echo " شما ۲۰ ساله هستید ";
}
?>

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

اجرای شرطی دستورات HTML

علاوه بر اجرای دستورالعملها در صورت برقرار بودن یک شرط، میتوانیم کدهای html را نیز اجرا کنیم. یعنی در صورتی که یک شرط برقرار بود قطعه کد html نمایش داده شود، در غیر اینصورت از نمایش داده شدن آن صرف نظر شود. در این موارد، بجای اینکه از آکولاد بازشونده ” { ” استفاده کنیم، باید از دونقطه ” : ” استفاده کنیم و بجای اینکه دستور را با آکولاد ببندیم ” } ” از دستور endif; استفاده میکنیم.

به ساختار زیر توجه نمایید:

<?php if (شرط) : ?>
قطعه کد html
<?php endif; ?>

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

<?php if ($a=$b) : ?>
<table>
<tr>
<td>
سلول شماره یک
</td>
<td>
سلول شماره دو
</td>
</tr>
</table>
<?php endif; ?>

در مثال بالا اگر مقدار متغیر a با مقدار متغیر b برابر باشد، جدولی که با استفاده از html ایجاد شده نمایش داده میشود، در غیر اینصورت از نمایش داده شدن این جدول چشم پوشی میشود.

یادگیری دستورات شرطی یکی از مهمترین موارد در زبانهای برنامه نویسی است. در درس بعد دستور شرطی switch را بررسی خواهیم کرد.

گفتگو پیرامون آموزش php – درس هفتم – دستور شرطی if و elseif

(منتشر شده: 26 | در انتظار تایید: 0)
abdullah

اولی:
دومی:ID, ‘thumbnail’, ‘alt=”‘ . $post->post_title . ‘”‘); ?>

پاسخ دهید
عصرعلم

در پاسخ به abdullah

سلام
کدها رو با استفاده از ابزاری که برای ارسال کدها در نظر گرفتیم ارسال کنید تا به صورت کامل برای ما فرستاده بشوند.

پاسخ دهید
abdullah

من میخوام اگه تابع اول درست باشه اجرا شه نباشه تابع دوم اجرا شه :کدش چه جوری میشه لطفا ایمیل بزنید تا مطلع شم باتشکر
اولی:
دومی:ID, ‘thumbnail’, ‘alt=”‘ . $post->post_title . ‘”‘); ?>

پاسخ دهید
امین

سلام خسته نباشید یک سوالی داشتم این !important چه تاثیری داره که تو css ازش استفاده میکنن.

پاسخ دهید
عصرعلم

در پاسخ به امین

سلام
!important باعث میشه تا کلاسهای مشابه که مقدار مشابهی دارند رونویسی نشوند. بعضی موارد هستند که امکان ویرایش فایل css اصلی رو نداریم و یا توسط یک ماژول یا افزونه یک کلاس css به ظاهر سایت متصل میشه که کنترلی روی اون نداریم. با استفاده از این دستور css اعلام میکنیم که تمام مقادیر مشابه رو نادیده بگیر و این مقداری که با important تعیین شده رو روی همه ی موارد اجرا کن! برای مثال
.myclass{
background:red !important;
}
.myclass{
background:blue;
}

در حالت طبیعی اگر از important استفاده نکنید، رنگ زمینه برای کلاس myclass باید آبی باشه چون بعد از رنگ قرمز اومده، ولی چون از imporant برای رنگ قرمز استفاده کردیم از رنگ آبی چشم پوشی میکنه و همون رنگ قرمز رو نمایش میده.

پاسخ دهید
alireza

تاثیر justify رو فهمیدم همه طراز شدن
آفرین آفرین

پاسخ دهید
alireza

این مشخصه چه کاری انجام میده ؟
اضافه کردم ولی تغییری ندیدم !
راستی در سوالهای قبلم تو قسمت listab شما گفتین که
از مشخصه ی text-align میتونید استفاده کنید و مقدار right رو بهش بدید تا متن راست چین بشه.
می خواستم بدونم اونجا مگه
direction:rtl نبود پس این دو چه فرقی با هم داشتند؟

پاسخ دهید
امین

در پاسخ به alireza

text-align برای چینش کلمات بکار میره اگه تمام کلماتت فارسی باشند و هیچ کلمه انگلیسی رو استفاده نکنید از رایت میتونید استفاده کنید.اگه از کلمات انگلیسی یا اعداد لاتین استفاده کنید از rtl استفاده میکنند. این نظر شخصی خودمه.

پاسخ دهید
alireza

خدا ما رو خیلی دوست داره که شما رو گذاشته برامون

زنده باشی

پاسخ دهید
عصرعلم

در پاسخ به alireza

اگر مشخصه ی text-align:justify رو هم به کلاس entry اضافه کنید نحوه ی نمایش متنها زیباتر و بهتر خواهد شد.

پاسخ دهید
alireza

خدا خیرتون بده
الزکات العلم نشرهُ/ زکات علم نشر آن است.

پاسخ دهید
عصرعلم

در پاسخ به alireza

برای کلاس box از مشخصه ی min-height استفاده کنید. این مشخصه باعث میشه تا بتونید حداقل طول هر باکس رو تعیین کنید و اگر در اثر وجود مطالب این باکس بیش از مقدار تعیین شده در min-height بشه، طول به صورت اتوماتیک تنظیم میشه.
با توجه به اینکه شما فقط خلاصه مطلب رو نمایش میدید پس ارتفاع (طول) از حد خاصی تجاوز نمیکنه و میتونید با تعیین مقدار ثابتی برای min-height تمام باکسها رو یکسان سازی کنید،به نظر میرسه ۴۰۰ پیکسل کافی باشه:

.box{
min-height:400px;
}

پاسخ دهید
alireza

بازم سلام
می دونم خیلی مزاحم میشم
اما امیدوارم که تحملم کنین اگر هم نکنین حق داریم.
چرا ستون های box و altbox سایت من هم اندازه نیست طولشون؟
.box{
width:320px;
float:left;
clear:left!important;
color:#555;
border-bottom:1px dotted #ccc;
background:#f4f4f4;
margin-bottom:14px;
padding-bottom:15px;
position:Relative;
}
.altbox{
float:right;
clear:right!important;
}

پاسخ دهید
عصرعلم

در پاسخ به alireza

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

پاسخ دهید
alireza

سلام عزیز جان
چه تغییری در این خط بدم که در تمام مرورگرها یکسان تنظیم بشه
.listab h3{direction:rtl;font-weight:normal;font-size:16px;}
الان تو کروم چسبیده به چپ ولی تو اپرا و فایرفاکس راست چین هست
چی کار کنم که در کروم هم راست چین بشه؟

پاسخ دهید
عصرعلم

در پاسخ به alireza

سلام
از مشخصه ی text-align میتونید استفاده کنید و مقدار right رو بهش بدید تا متن راست چین بشه.
.listab h3{direction:rtl;font-weight:normal;font-size:16px;text-align:right;}

پاسخ دهید
فرهاد

سلام ؛
آموزشاتون بسیار مفید هست.
لطفا آموزش عضویت کاربری رو به زبان پی اچ پی قرار بدین.
و آموزش ساخت آپلود سنتر حرفه ای به زبان پی اچ پی (از سطح ساده شروع بشه و رفته رفته امکاناتی حرفه ای بهش اضافه کنید)
ممنون میشم این اموزش ها رو هم بزارید.

پاسخ دهید
عصرعلم

در پاسخ به فرهاد

سلام
سعی میکنیم آموزشها رو آماده کنیم، البته اگر سطح اطلاعاتمون یاری بده 🙂

پاسخ دهید
alireza

مطالب پس زمینه سفید دارند
رنگ بندی رو تیره انتخاب کردم که چشم رو اذیت نکنه

ممنون ازینکه وقت گذاشتین

پاسخ دهید
alireza

دوست عزیز مشکل حل شد بجای اینکه دسته جدید بسازم در منوهای سر صفحه فهرست میساختم
فهرستها رو پاک کردم و با دسته ساختن منوها رو تکمیل کردم

خیلی ممنون که راهنماییم کردی بدجور مسئله شده بود

راستی اگه میشه نظرتون رو در رابطه با ظاهر سایت بفرمایید بصورت پیشنهاد یا نقد

بازهم ممنون

پاسخ دهید
عصرعلم

در پاسخ به alireza

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

پاسخ دهید
alireza

من این کلاس رو از قبل داشتم تو css بدین صورت البته:

#catmenu li.current_page_item a {
background:#003366;
color: #fff;
border-left:2px solid #212121;
border-right:2px solid #212121;
}
وقتی کد شما رو گذاشتم درست شد
اما
فقط واسه منوی دوم فعال شده یعنی برگه فرهنگ و هنر
منوی دوم به بعد باز مثل قبل هست

پاسخ دهید
عصرعلم

در پاسخ به alireza

به این خاطر که شما فقط لیست منو رو ایجاد کردید و صفحاتی (یا دسته بندی مربوط) با اون نامها رو نساختید و پیام “صفحه پیدا نشد” نمایش داده میشه. اگر صفحات (یا دسته بندی) مربوط به اون عناوین رو ایجاد کنید مشکل سایر منوها هم برطرف میشه.

* لطفا برای درج کدها در بخش دیدگاه ها از ابزار Encoding استفاده کنید.

پاسخ دهید
alireza

سلام بر شما دوست عزیز که
مطالب واقعا مفیدتون در css و html واقعا مفید و کار آمد هست
من یک سوالی برام در قسمت css برای طراحی menu پیش اومده
صدها بار قسمتهای catmenu رو تغییر دادم اما نتونستم مشکلم رو حل کنم
این سایت من هست
منوی سایت من بک گراند سیاه داره
وقتی در صفحه ی نخست هستیم بک گراند این منو سرمه ای هست
اما وقتی به برگه های دیگه میرم بک گراندهاشون بدون تغییر همون مشکی هست
چه کار میتونم بکنم که وقتی وارد هر کدوم از این صفحات شدم
صفحه ای که توش هستم بک گراند منوش (مثل صفحه ی نخست) سرمه ای بشه بدون اینکه دیگر منوها بک گراندشون تغییری کنه
باورکنین صدها بار دستورات menu رو امتحان کردم ولی نتونستم به مقصودم برسم
لطفا کمکم کنید

پاسخ دهید
عصرعلم

در پاسخ به alireza

سلام
اتفاقا راه حل مشکل شما خیلی خیلی ساده است. کافیه در css یک کلاس جدید رو تعریف کنید:

#catmenu li.current-menu-item a {
background: none repeat scroll 0 0 #003366;
border-left: 2px solid #212121;
border-right: 2px solid #212121;
color: #FFFFFF;
}

خود وردپرس به آیتم منویی که در حال نمایشه کلاسهای current-menu-item و current_page_item رو اضافه میکنه که با تعریف این دو کلاس در css میتونید اونها رو کنترل کنید. کلاس دومی در css شما تعریف شده است برای همین زمینه ی صفحه ی نخست سورمه ای نمایش داده میشه ولی کلاس اول تعریف شده نیست و سایر صفحات بدون تغییر نمایش داده میشن.

پاسخ دهید

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