پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
داشتم عرض میکردم که روش دستیابی به اطلاعات متغیر های یک فرم خیلی مهمه
اگر به مثال بالا توجه کرده باشید حتما متوجه شدید ولی باز من توضیح می دم
سه روش برای این کار هست به عنوان مثال مثلا برای دستیابی به متغیر فرم pasqty که در مثال ch3-6.html قرار داره به دو روش زیر عمل میکنیم
pasqty$
یا
اگر بخواهیم از روش اول استفاده کنیم باید تغیراتی توی فایل php.ini ایجاد کنید به این ترتیب:
register_globals = on
تو حالت عادی یا مقدارش off هست یا بصورت توضیحاته و اجرا نمیشه
یادتون نره بعد از ایجاد تغیر سیستم رو ریست کنید
البته این روش پیشنهاد نمیشه چون مشکل امنیتی ایجاد میشه
اما روش دوم ،روش مناسب تریه . ولی تو نسخه های اولیه php یعنی پائین تر از php 4.1.0 قابل استفاده نیست
توی این روش بهتره برای متغیر ها از اسم های کوچیک استفاده کنید
پس شد به این صورت
کد PHP:
$p = $_POST['pasqty'];
دستور پنجم با استفاده از قیمت کتاب ها و تعداد درخواست . کل هزینه درخواست رو محاسبه می کنهو توی متغیر price$ قرار میده
دستورات 6 و 7 متغیر های sum$ و price$ رو در مرورگر نمایش میدن
توضیحات در برنامه php
تقریبا هممون میدونیم که توضیحات توی برنامه به دلیل بالا بردن میزان خوانایی برنامه قرار دادهمیشه
توی php برای قرار دادن توضیحات از دو روش استفاده میشه
1- استفاده از */و/* برای توضیحات چند سطری
2- استفاده از // برای توضیحات یک سطری
کد PHP:
/* this is a multiple
line cooments used in php
*/
//this is a single line comment
دستکاری رشته ها
رشته ها هم نوعی از داده ها هستن ،اعمالی مثل جست جو و مقایسه رشته ها و عبارات منظم ، به وفور مورد استفاده قرار میگیرن.
حذف فضاهای خالی
معمولا توی انجام مقایسه ها و و جست و جو ها از فضای خالی رشته ها صرف نظر میشه
برای این کار از چند تابعی که بهتون معرفیمیکنم استفاده میشه
تابع()ltrim: این تابع فضای خالی سمت چپ رشته ای رو حذف میکنه تابع ()chop این تابع فضای خالیه سمت راست رو حذف میکنه تابع ()trim فضای خالی سمت چپ و راست رو حذف میکنه
---------- Post added at 06:07 PM ---------- Previous post was at 04:36 PM ----------
اگر بشه این قسمت رو امشب تموم میکنم و از فردا میریم روی آرایه ها و ساختارهای کنترلی کار کنیم
تبدیل حروف به رشته ها
توابعی هم وجود دارن که میتونن حروف کوچیک رو به بزرگ و برعکس تبدیل کنن
تابع()stroupper: این تابع رشته را به حروف بزرگ تبدیل میکنه
تابع()strtolower: این تابع به حروف کوچیک تبدیل میکنه
تابع ()ucfirst: " " اولین حرف رشته رو به حرف بزرگ تبدیل میکنه
تابع ()ucwords: " " اولین حرف تمام کلمات رشته ای رو به حروف بزرگ تبدیل میکنه
روش استفاده این توابع به این صورت هست که اسم تابع نوشته میشه و داخل پرانتز نام متغیر قرار میگیره
مثال :
الحاق و تجزیه رشته ها
توابعی هم هستن که برای الحاق دو یا چند رشته یا تجزیه رشته به چند زیر رشته به کار میرن
تابع()explode: این تابع رشته رو دریافت کرده اون رو بر اساس جدا کننده ای که به عنوان پارامتر مشخص می شه تجزیه میکنه و توی آرای قرار میده.
کد PHP:
explode(separator.str[,int limit]);
separator کاراکتر جدا کننده
str$ رشته ای که باید تجزیه بشه
limit مشخص میکنه که چند تکه از رشته جدا شود
و در آرایه قرار بگیره
کد PHP:
$mail = "abcd@yahoo.com";
$ar = explode ('@', $mail);
دستور اول رشته ای رو تعریف میکنه
دستور دوم این رشته رو به دو بخش میکنه در آرایه ar$ میریزه
بطوری که [0]a$ برابر با abcd و [1]ar$ برابر با yahoo.com
فعلا رو اینا تمرین کنید تا دوباره شروع کنم
موفق باشید:57:
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
تابع ()implode :
این تابع برعکس تابع قبلیه و به صورت زیر استفاده میشه
implode(separator,array);
separator کاراکتر جدا کننده و array آرایه ایه که رشته های موجود توی اون باید الحاق بشن
تابع join هم دقیقا مثل تابع implode استفاده میشه
نابع stroke
هر بار که روی رشته ای اجرا بشه یک نشانه رو جدا میکنه
stroke(str,separator);
str رشته ایه که نشانه ای از اون با separator تفکیک شده ،جدا می شود.
$str = 'computer science';
$t = stroke($str, '');
با این دستور واژه computer در t$ قرار میگیره
تابعsubstr
این تابع زیر رشته ای را از یک رشته جدا میکنه
substr(str, start[,length]);
این تابع رشته ای را به طول length را با شروع از موقعیت start در رشته str برمیگرداند.اگر length مشخص نشه از start تا انتها ی رشته برگردونده میشه
$str = "you are learning php";
$sub = substr($str, 18,3);
این مثال رشته php رو جدا میکنه و در sub$ قرار می ده. موقعیت اولین کاراکتر هم صفره
---------- Post added at 02:22 PM ---------- Previous post was at 02:17 PM ----------
دوستان اگر کسی ایرادی اشکالی چیزی میبینه و میتونه، درستش کنه .
کمی سخته که این کار بدون کمک انجام بشه
دوستان توجه کنن چون اینکار زمان زیادی برای تایپ میبره و من هرچی تا حالا دیدید رو پای سیستم ،خودم دارم تایپ میکنم بنابر این غلط هایی هم ممکن دیده بشه که هم به بزرگی خودتون ببخشید و هم اگر ایرادها باعث شده بود چیزی رو متوجه نشید بگید تا یا درستش کنم یا توضیح بدم
ممنون از توجه و همکاریتون
---------- Post added at 04:03 PM ---------- Previous post was at 02:22 PM ----------
ساختارهای کنترلی و آرایه ها
ساختارهایی وجود دارن که باعث کنترل جریان برنامه یا اسکریپت میشن
به دو دسته هم تقسیم میشن 1- ساختار تصمیم گیری یا شرطی 2- ساختار تکرار یا حلقه
تصمیم گیری
ساختار تصمیم گیری تعدادی دستور هستن که شرطی رو تست میکنن اگر شرط برقرار باشه یه سری از دستورات رو اجرا میکنن
وگرنه دستورات دیگه ای اجرا میشه
بنابر این ساختار های تصمیم گیری می تونن جریان اجرای برنامه رو تغییر بدن.بدون این ساختارها دستورات برنامه رو از اول تا آخر اجرا می کنن.
ساختارهای تصمیم توی php دستورات if و else و switch هستند که دونه دونه روشون بحث نیکنیم
دستور if
برای پردازش داده هایی که کاربر در فرم وارد میکنه نیاز به تصمیم گیری داریم ویکی از دستوراتی که تصمیم گیری رو ممکن میکنه دستور if
هست.مثلا اگر سفارش کاربر کمتر از 1000 تومن بود تخفیف نداره و گرنه 5% تخفیف داره. برای این کار میتونیم از دستور if استفاده کنیم.
روش بکار بردن این دستور:
(شزط)if
}
دستور1 ;
...
دستور n ;
{
روش دوم
(شزط)if
}
دستور1 ;
...
دستور n ;
{
else
}
دستور e1
...
دستور en
{
اینم بگم که اگر دستوراتی که توی هر مورد باید اجرا بشن بیشتر از یک ی نباشه نیاز به {} نیست
برای اینکه بهتر متوجه بشید روی مثالی که قبلا با هم کار کرده بودیم و صفحه ای که برای خرید کتاب طراحی کرده بودیم رو یکمی روش کار
میکنیم و از دستور if توش استفاده میکنیم
با استفاده از if شرطی رو اضافه میکنیم که اگر کاربر میزان سفارشش بیش از 100000ریال بود 5% تخفیف بده و در نهایت تعداد خرید رو هم نشون بده
کد HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form action="ch4-1.php" method="post">
<table border=0>
<tr bgcolor="#CC0000">
<td align="center">booname</td>
<td align="center">Quantity</td>
</tr>
<tr bgcolor="#999999">
<td>pascal</td>
<td><input type="text" name="pasqty" size="3" maxlength="3"></td>
</tr>
<tr bgcolor="#999999">
<td>visual C++</td>
<td><input type="text" name="vcqty" size="3" maxlength="3"></td>
</tr>
<tr bgcolor="#999999">
<td>C programming</td>
<td><input type="text" name="cqty" size="3" maxlength="3"></td>
</tr>
<tr bgcolor="#999999">
<td>
<input type="submit" value="submit order">
</td>
</tr>
</form>
</body>
</html>
کد های بالا برای صفحه دریافت اطلاعاته صفحه بعدی php باید باشه و با نام ch4-1.php ذخیرش کنید
اینم از کدهای قسمت رسید خرید
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$sum = $_POST['pasqty']+ $_POST['vcqty']+ $_POST['cqty'];
$price=$_POST['pasqty']*3000 + $_POST['vcqty']*2500 + $_POST['cqty']*4000;
echo '<b>رسید خرید شما:'.'<br>';
echo '<b>pascal:'. $_POST['pasqty'].'<br>';
echo '<b>visual:'. $_POST['vcqty'].'<br>';
echo '<b>cprogramming:'. $_POST['cqty'].'<br>';
echo '<b>total quantity:'. $sum.'<br>';
echo '<b>Total price:'. $price.'<br>';
if ($price > 100000)
$discount = $price * 5 /100;
ELSE
$discount= 0 ;
echo 'discount'.$discount;
echo 'payment'.($price-$discount);
?>
</body>
</html>
---------- Post added at 04:06 PM ---------- Previous post was at 04:03 PM ----------
به کدهای قسمت if و else توجه کنید
---------- Post added at 04:46 PM ---------- Previous post was at 04:06 PM ----------
دستور بعدی elseif
بچه ها if در مسئله هایی با دو گزینه بکار میره
اگر بیش از دو گزینه داشته باشیم یا باید از if های تو در تو استفاده کنیم یا اینکه از دستور elseif استفاده کنیم
روش اول که توصیه نمیشه چون خیلی گیج کننده و نا منظم هست اما کار با elseif که در واقع ترکیبی از if و else هست بهتره و توصیه
میشه ازش استفاده کنیدیه مثال هم میزنم که کامل متوجه موضوع بشید
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
دوستان کمی سرم شلوغ بود نتونستم ادامه بدم از فردا مطالب جدید در این بخش قرار میگیره
برای اینکه در جریان قرار بگیرید که بعد از پایان این دوره چه چیزهایی یاد میگیرید یه تعدادیشو مینویسم
احتمالا در همین بخش و در ادامه همین مبحث آموزش my sql هم مینویسم
ارتباط پی اچ پی با my sql
کوکی ها و نشست ها
تشخیص هویت کاربران و شخصی سازی سایت
ساخت سبد خرید
پیکربندی فایل php.ini و خیلی چیزهای دیگه رو بعد از اتمام این دوره کامل یاد میگیرید
در ضمن اگر پیشنهادی برای بهتر شدن دارید ارائه کنید ممنون میشم
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
سلام خدمت همه دوستای گلم مبحث آموزش php رو ادامه میدیم با مثالی ا ز دستور elseif
این مثال همون مثال سفارش کتابه که تکمیلش میکنیم و چند شرط بهش اضافه میکنیم
خرید کنتر از 10 عدد تخفیف نداره
10 تا 49 تا 5% تخفیف داره
50 تا 99 10 %تخفیف داره
100 تا یا بیشتر 15% تخفیف داره
این صفحه رو مثلا با نام ch4-2.html ذخیره کنید
کد HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
-->
</style>
</head>
<body>
<FORM ACTION="CH4-2.PHP" METHOD="POST">
<TABLE width="251">
<Tr>
<td bgcolor="#333333"><div align="center" class="style1">نام کتاب</div></TD>
<td bgcolor="#333333"><div align="center" class="style1">تعداد</div></TD>
</tr>
<tr>
<td bgcolor="#FFFF00"><div align="center">پاسکال</div></td>
<td bgcolor="#FFFF00"><input type="text" name="pascalq" size="3" maxlength="3"></td>
</tr>
<tr>
<td bgcolor="#FFFF00"><div align="center">ویژوال بیسیک</div></td>
<td bgcolor="#FFFF00"><input type="text" name="visualq" size="3" maxlength="3"></td>
</tr>
<tr>
<td bgcolor="#FFFF00"><div align="center">برنامه c</div></td>
<td bgcolor="#FFFF00"><input type="text" name="cq" size="3" maxlength="3"></td>
</tr>
<tr>
<td bgcolor="#FFFF00"><div align="center">
<input type="submit" value="خرید">
</div>
<td bgcolor="#FFFF00">
</tr>
</TABLE>
</form>
</body>
</html>
حالا باید صفحه محاسباتمون رو طراحی کنیم این صفحه رم با نام ch4-2.php ذخیره کنید
کد PHP:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$sum= $_POST['pascalq']+ $_POST['visualq']+ $_POST['cq'];
$price=$_POST['pascalq']*3000+$_POST['visualq']*2500 + $_POST['cq']*4000;
echo '<b> you ordered as follow:'.'<br>';
echo 'pascal:'.$_POST['pascalq'].'<br>';
echo 'visual c++:'. $_POST['visualq'].'<br>';
echo 'c programming:'.$_POST['cq'].'<br>';
echo 'TOTAL quantity:'. $sum .'<br>';
echo 'TOTAL PRICE:' .$price.'<br>';
if ($sum < 10)
$dicount=0;
elseif($sum >=10&&$sum<=49)
$discount=$price *5 /100;
elseif($sum>=50&&$sum<=99)
$discount=$price *10 / 100;
else
$discount=$price *15/100;
echo 'discount='.$discount;
echo 'pament=' . ($price- $discount);
?>
</body>
</html>
دستور switch
اگر یه شرط دارای 2 مقدار باشه برای تصمیم گیری بر اساس نتیجه اون شرط از دستور if استفاده می شه. اما اگه شرط بیش از دو مقدار داشته باشه
میتونیم از switch استفاده کنیم توی شرط if مقدار true یا false داشته باشه اما در دستور switch هرمقداری می تونه داشته باشه
---------- Post added at 03:00 PM ---------- Previous post was at 02:59 PM ----------
شکل کلی دستور
کد PHP:
switch(avalable)
{
مقدار case1;
....
break;
مقدار case2;
....
break;
.
.
.
default;
...
break;
}
---------- Post added at 03:15 PM ---------- Previous post was at 03:00 PM ----------
توی این دستور اگر مقدار variable برابر 1 باشه دستورات مربوط به خودش اجرا میشه و دستور break باعث خروج از ساختار استفاده میشه.
اگر مقدارش 2 باشه دستورات مربوط به اون اجرا میشه و اگر هیچکدوم از مقادیر ذکر مشه دستورات بعد از default اجرا میشه
فکر کنم با این مثال کاملا توجیح بشید:
به نام ch4-3.html ذخیره کنید
کد HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<table border=0>
<form action="ch4-3.php" method="post">
<tr>
<td bgcolor="#33FF00"><h5>how do you find my site?</h5></td>
</tr>
<tr>
<td bgcolor="#66FF00">
<select name="find">
<option value="a" >i'm regular customer.</option>
<option value="b">tv and radio advertising</option>
<option value="c">i heared from my student</option>
<option value="d"> i found it by search engine.</option>
</select>
</td>
</tr>
<tr>
<td bgcolor="#66FFFF"><input type="submit" value="submit order"></td>
</tr>
</form>
</table>
</body>
</html>
باز هم نیاز داریم به طراحی صفحه php که اون رو هم با نام ch4-3.php ذخیره میکنیم
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<?php
switch($_POST['find'])
{
case 'a':
echo '<b><p>regular customer.<p>';
break;
case 'b':
echo '<b><p> customer refferd by advertisment.<p>';
break;
case 'c':
echo '<b><p>customer refferd by his friend.<p>';
break;
case 'd':
echo '<b><p>customer refferd by search engine.<p>';
break;
default:
echo '<b><p>we do not know how customer found us.<p>';
break;
}
?>
</body>
</html>
توی دستور بالا بوسیله select یک لیست بازشونده می سازیم با 4 گزینه اسمشم find میزاریم
هر گزینه با یک مقدار مشخص میشه گزینه اول برابر با a
گزینه دوم b
گزینه سوم c
و گزینه چهارم d
وقتی کاربر گزینه ای رو انتخاب کنه ئ دکمه رو بزنه یکی از مقادیر a,b,c,d, در متغیر finde$ قرار میگیره که توی برنامه ch4-3.php قابل دستیابیه
اگر خوب دقت کنید میبینید که یه دستور switch متغیر find رو بصورت
کد PHP:
switch($_POST['find'])
بررسی میکنه و بر اساس مقدار این متغیر
پیامی رو چاپ میکنه
---------- Post added at 03:16 PM ---------- Previous post was at 03:15 PM ----------
مبحث بعدی ساختار تکرار و دستور while
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
همونطور که قبلا گفتم امروز قراره در مورد دستور while صحبت کنیم
این دستور ساده ترین ساختار تکرار در php هست. معمولا در مواردی به کار میره که تعداد دفعات اجرای حلقه از قبل مشخص نیست.
کد PHP:
while(شرط)
{
دستور1;
...
دستورn;
}
در این دستو راول شرط موجود در جلوی while چک میشه . اگر شرط برقرار باشه دستورات داخل ساختار اجرا میشن و دوباره کنترل اجرای برنامه به اول حلقه میره و این روند تکرار میشه.اگر شرط برقرار نباشه کنترل اجرای برنامه از حلقه خارج میشه دقت داشته باشید که شرط حلقه باید در بدنه حلقه نقض بشه تا حلقه تموم بشه در غیر اینصورت حلقه بی نهایت ایجاد میشه.
برای درک بهتر این موضوع یه صفحه طراحی می کنیم که مثلا هزینه ارسال کتاب درخواستی کاربر رو بر اساس فاصله حساب کنه فاصله از 50 تا 300 کیلومتر در نظر گرفته میشه.
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<table width="164" border="0" cellpadding="3">
<tr>
<td width="81" align="center" bgcolor="#FFFF00" >Distance</td>
<td width="65" align="center" bgcolor="#993300" >Cost</td>
</tr>
<?php
$distance= 50 ;
while($distance <=300)
{
echo '<b><tr><td align="right">'. $distance .'</td>';
echo '<b><td align="right">'.$distance/10 .'</td></tr>';
$distance +=50;
}
?>
</table>
</body>
</html>
دستور بعدی do while
این دستور مشابه دستور while فرقشون در اینه که در این دستور شرط حلقه در انتها بررسی میشه ولی در دستور قبل شرط حلقه در ابتدا بررسی میشد در واقع در این ساختار حتما دستورات یکبار انجام میشن
کد PHP:
do
{
دستور1;
...
دستور n;
}while(شرط);
برای درک بهتر این مسئله هم یک صفحه طراحی میکنیم که عددی از ورودی بگیره و معلوم کنه این عدد اول هست یا نه
کد های این مثال رو بعدا در این قسمت قرار میدم فعلا خودتون تست کنید ببینید می تونید این مسئله رو حل کنید یا نه
درس بعدی بعد از حل این مسئه در مورد دستور for هست موفق باشید
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
خوب دوستان اینم کدهای مسئله بالا
اول یک صفحه html طراحی می کنیم که اطلاعات رو از کاربر بگیره و ببا اسم ch4-5.html ذخیره میکنیم
کد HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="ch4-5.php">
whats your name:
<input name="guess" typr="text">
<br>
<br>
<input type="submit" value="clickhere to check if it is prime">
<br>
</form>
</body>
</html>
بعد از این صفحه محاسبات رو مینویسیم و با اسم ch4-5.php ذخیره میکنیم
کد PHP:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<?php
$count=2;
$x=$_POST['guess'];
do
{
$remainder= $x%$count;
$count= $count+1;
}
while($remainder!= 0 and $count<$x);
if (($count < $x ) || ($x == 0))
{
echo ("number $x is not prime");
} else {
echo ("number $x is prime");
}
?>
</body>
</html>
دستور for
این دستور معمولا وقتی بکار میره که تعداد دفعات تکرار حلقه از قبل مشخص باشه.در ساختار این دستور متغیری وجود داره که تعداد اجرای
دستورات رو شمارش میکنه.
که بهش شمارنده ،مانتر یا اندیس حلقه نام داره..شرط حلقه مشخص میکنه حلقه تکرار تا کی ادامه داره و گام افزایش مشخص میکنه با هر
بار اجرای دستورات حلقه ، چند واحد به شمارنده حلقه اضافه بسه.
روش بکارگیری این دستور هم به شکل زیر هست؟
(گام افزایش;شرط حلقه;مقدار اولیه شمارنده حلقه) for
}
...
{
توجه کنید که اگر تعداد دستوراتی که تکرار می شوند بیش از یکی نباشن نیاز به }{ نیست.
کد PHP:
for($i = 0; $i< 5; $i++)
{
دستورات حلقه
}
تحلیل کد بالا:
i$:شمارنده یا اندیس حلقه
مقدار اولیه شمارنده حلقه = 0
شرط حلقه : 5>i$
گام افزایش :1 (پس از هر بار اجرا ،یک واحد به i$ اضافه می شود)
در ادامه صفحه ای طراحی می کنیم که تعداد دوستان یک کاربر رو دریافت کنه بطور پویا کادرهای متنی رو بر اساس این تعداد ایجاد کنه .
این تمرین هم حل کنید تا بعدا کد هاش رو در ین قسمت قرار بدم
---------- Post added at 08:10 PM ---------- Previous post was at 06:50 PM ----------
کد HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="ch4-6.php" method="post">
how many friend do you have
<input name="NUMBER" type="text" size="3">
<br>
<br>
<input type="submit" value="submit order">
<br>
</form>
</body>
</html>
این هم صفحه پی اچ پی برای انجام محاسبات
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<?php
$NUM=$_POST['NUMBER'];
for ($counter=0; $counter < $NUM; $counter++)
{
$Offset=$counter+1;
echo "<br><br>pleas enter the name of friend number $Offset<br>";
echo "<input name=child type=text>";
}
?>
<br>
<br>
</body>
</html>
در خط چهارم این برنامه تعداد دوستان کاربر که در متغیر فرم
کد PHP:
$_POST['NUMBER'];
قرار داره در متغیر num$ قرار میگیرن حلقه تکرار for در خط 5 بر اساس این مقدار کادر متنی ایجاد میکنه تا نام ها رو دریافت کنه
قسمت بعد انتقال کنترل غیر شرطی
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
انتقال کنترل غیر شرطی
تعدادی از دستور ها توی php هستن که کنترل اجرای برنامه رو بدون هیچ شرطی از نقطی ای به نقطه دیگه منتقل میکنه.
اولین دستور در این بخش دستور break
این دستور برای خروج از حلقه تکرار استفاده میشه .اگر تحت شرایطی بخواهید از حلقه خارج شوید . از این دستور میشه استفاده کرد.
در قسمت switch از این دستور استفاده کردیم.
دومین دستور دستور continue
وقتی این دستور توی حلقه تکرار استفاده بشه کنترل اجرای برنامه به اول حلقه منتقل می شه ،شرط حلقه تست میشه و در صورت درست
بودن حلقه دستورات دوباره اجرا میشن.وگرنه کنترل از حلقه خارج میشه
دستور exit
اجرای این دستور موجب خاتمه اجرای دستورات میشه . به عنوان مثال وقتی خطایی بوجود بیاد استفاده از این دستور مناسبه
مثال
صفحه این طراحی میکنیم که نام و سن ار بر رو بگیره و اگر سن زیر 1 و بالای 120 بود پیغامی رو چاپ کنه.
اگر هم بین 1 و 120 بود پیغامی چاپ کنه .توی این برنامه از exit استفاده میشه
---------- Post added at 04:38 PM ---------- Previous post was at 03:59 PM ----------
کد HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="ch4-7.php" method="post">
<table width="245" border=0>
<tr>
<td width="151" bgcolor="#33FF00">NAME</td>
<td width="84" align="center" bgcolor="#33FF00" ><input name="name" type="text" size="3"></td>
</tr><br>
<tr><td bgcolor="#FFFF00">Age</td>
<td align="center" bgcolor="#FFFF00"><input name="age" type="text" size="3" ></td>
</tr>
<tr><td bgcolor="#FFCC66"><input type="submit" value="submit Order"></td>
</tr>
</table>
</form>
</body>
</html>
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$a=$_POST['age'];
$n=$_POST['name'];
if($a<1 || $a>120 )
{
echo "<b> age $a is out of range";
exit;
}
else
echo "<b> age $a is in range";
echo "<b><br> name is $n and age is $a";
?>
</body>
</html>
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
آرایه
تا الان یادگرفتیم که متغیر تعریف کنیم و یک مقدار رو توش ذخیره کنیم .اما باید بگم یه ساختار دیگه ای هم در php هست که دنباله ای از مقادیر رو توی خودش ذخیره می کنه .آرایه میتونه دارای چند عنصر باشه که هر کدوم این عناصر میتونن مقداری رو تو خودشون ذخیره کنن مقادیری مثل عدد . یا متن ،یا یه آرایه دیگه
دو نوع آرایه در php وجود داره
آرایه هایی با اندیس عددی و آرایه های انجمنی
مورد 1 اونهایی هستند که برای فراخوانی عناصر اون از اندیس استفاده میشه . اما در آرایه های انجمنی ،اندیسی که با اون به عنصر آرایه دسترسی پیدا میکنیم می تونه غیر از عدد باشه.
نکته :اگر در یک آرایه 5 مقدار وجود داشته باشه همیشه اندیس اولین مقدار صفر است . مگر اینکه خودمون براش تعریف کنیم که از چه عددی شروع بشه.
برای تعریف آرایه از کلمه array استفاده میکنیم برای درک این موضوع مثال زیر رو خوب نگاه کنید.
کد PHP:
$m = array (2,4,6,8,9);
حالا به این مثال توجه کنید
کد PHP:
Echo $m[1] ;
Echo $m[3];
دستور اول مقدار 4 و دستور دوم مقدار 8 رو نمایش میده. چون اندیس $m از صفر شروع میشه
با دستور انتساب میشه به عناصر یک آرایه مقدار داد.
کد PHP:
$z [2]=3;
$z [1]=6;
اگه بخواهیم هم یه آرایه ایجاد کنیم و هم بازه ای از اعداد رو توش قرار بدیم از کلمه range استفاده میکنیم
کد PHP:
$m = range(10,15);
با توجه به این دستور اعدا 10 تا 15 در این آرایه قرار میگیره
برای دستیابی به عناصر یک آرایه میشه از حلقه تکرار استفاده کرد.
مثال
کد PHP:
$m = array(5,10,15,20,25);
For($i = 0; $m < 5; $m++);
echo “$m[i]”;
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
با دستور while هم میشه این کارو انجام داد.
کد PHP:
$i = 0;
while($i< 5 )
{
echo "$x[$i]";
$i++;
}
دستور foreach
به جز دو دستور بالا با دستور foreach هم میشه به عناصر آرایه دستیابی پیدا کرد.
از این دستور وقتی استفاده میشه که تعداد عناصر آرایه مشخص نیست
شکل کلی دستور
کد PHP:
foreach(&arrayname as $index)
{
...
}
arrayname نام آرایه است
as کلمه ای هست که باید به همین شکل نوشته بشه
index$ نتغیریه که عنصر فعلی آرایه توش قرار میگیره
کد PHP:
foreach($x as $index)
echo $current.'';
دستور foreach هر کدوم از عناصر آرایه رو به نوبت توی متغیر current$ قرار میده
خط آخر هم این متغیر رو نمایش میده
اندیس آرایه ها رو میشه با عددی غیر از 0 شروع کنیم
مثال
کد PHP:
$x[1 => 5, 10, 15];
برای فهم بهتر این موضوع یه صفحه طراحی می کنیم که اسامی شهر ها رو توی یک آرایه قرار میده و نمایش میده
کد PHP:
<?php
$city=array(1=>"babol","tehran","sari","amol","shiraz");
foreach($city AS $index => $state)
{
echo "<b><br> $index-$state ";
}
?>
دستور دوم ارایه ای با نام city$ تعریف میکنه که اندیس اول اون یکه نام 5 شهر هم توی آرایه قرار میگیره . و خط 3 یه حلقه تکرار foreach ایجاد میکنه که عناصر آرایه رو با اندیسشون چاپ میکنه
مثال دیگه ای هم در ادامه براتون میزنم
---------- Post added at 03:50 PM ---------- Previous post was at 02:24 PM ----------
صفحه ای طراحی می کنیم که تعداد دوستان رو بگیره بعد به همون تعداد کدر متنی ایجاد کنه و اسامی دوستان رو بگیره و در آرایه قرار بده و عناصر آرایه رو نمایش بده.
صفحه اول یک فرم html هست که تعداد دوستان رو از شما میگیره
کد HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="ch41-9.php" method="post" >
شما چند تا دوست دارید؟
<input type="text" name= "number" size="3">
<br>
<br>
<input type="submit" value="submit order">
<br>
</form>
</body>
</html>
صفحه دو م طبق عددی که کاربر در صفحه قبل وارد کرده کادر متنی ایجاد میکنه
و نام دوستان رو در کادر متنی درخواست میکنه و با فشاردادن دکمه اطلاعات به فرم دیگری ارسال میشه
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form method = post action = "ch41-9-1.php" >
<?php
$num = $_POST['number'];
for ($counter=0; $counter < $num; $counter++)
{
$OffSet = $counter+1;
echo "<b> <br>pleas enter the name of friend number $OffSet<br>";
echo "<b> <input name = child[] type = text>";
}
?>
<br>
<br>
<input type = "submit" value = "submit">
</form>
</body>
</html>
در صفحه سوم اطلاعات آرایه child که یک متغیر فرم است در متغیر c$ قرار میده
بعد با ایجاد یک حلقه تکرا با استفاده از دستور foreach اسم هر نفر رو در خروجی نمایش میده
کد PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<?php
$c = $_POST['child'];
echo "<b> your friend's names are:<br>";
foreach($c as $index)
{
echo "<b>".$index."<br>";
}
?>
</body>
</html>
قسمت بعد آرایه انجمنی
پاسخ : آموزش گقدم به قدم برنامه نویسی به زبان php از پایه
چون اندیس آرایه ها ی انجمنی ،عددی نیست نمی شه با استفاده ازشمارنده در حلقه تکرار به عناصر آرایه انجمنی دسترسی پیدا کرد.
برای اینکار می تونید از حلقه تکرار foreach یا تابع list ،each ، reset استفاده کنید.
روش کار با foreach
روش بکار گیری این دستور در آرایه های انجمنی ،اندکی متفاوت از بکارگیری آن با آرایه های معمولی است.
مثال
کد PHP:
Foreach($grade as $key => $value)
Echo $key . ‘=> ’. $value .’<br>’;
در این دستور foreach ، متغیر $key اندیس رو مشخص میکنه که در آرایه $grade به ترتیب برابر با ahmad .ali.reza
است.و $value مقدار کلید رو مشخص میکنه که به ترتیب 15و17و14 است.
انتخاب نام $key و $value اختیاریه
به کار گیری ساختار each()
این تابع عنصر فعلی آرایه را بر میگرداند و به عنصر بعدی میره
بکار گیری تابع each()
کد PHP:
While($element = each($grade))
{
Echo $element[‘key’];
Echo ‘=>’;
Echo $element [‘value’];
Echo ‘<br>’;
}
در این دستور .تابع each اندیس و محتویات آرایه $grade رو استخراج میکنه در آرایه ای با نام $element قرار میده . اندیس با واژه key و مقدار با واژه value قابل دستیابیه در داخل .حلقه برایدستیابی به اندیس(کلید) از $element[‘key’] و برای دستیابی به مقدار این کلید از $element[‘value’] استفاده میشه.
روش استفاده از تابع list
با استفاده ازتابع list و each در کنار همدیگه هم میشه به محتویات آرایه انجمنی رو به نمایش کشید.
تابع list آرایه رو به چند قسمت تبدیل میکنه بنابر این میشه دو مقداری که توسط each برگردونده میشه رو از هم تفکیک کرد و در دو متغیر جدا از هم قرار داد .
کد PHP:
<?php
$grade = array(‘ahmad’ => 15, ‘ali’ => 17, ‘reza’ => 14);
While(list($index ,$value)= each($grade))
{
Echo “<b>$index => $value”.”<br>”;
}
?
در این دستور در شرط حلقه while تابع each هر یک از اندیس های آرایه را درمتغیر $index و مقدار کلید را در $value قرار میده. در داخل حلقه تکرار ،این دو متغیربه همراه علامت <= چاپ میشه.
تابع reset
وقتی با تابع each مقادیر عناصر آرایه رو چاپ میکنیم . به انتهای آرایه میرسید.اگر در همان برنامه بخواهید دوباره به عناصر همون آرایه دستیابی داشته باشید باید به ابتدای آرایه برگردید برای این منظور از تابع reset استفاده میشه
Reset($grade);
تمرین
صفحه ای طراحی کنید که ضمن تعریف یک آرایه انجمنی ، چگونگی دستیابی به عناصر آرایه را به روش های مختلف نشان بدهد.