آموزشphp
تجزیه کننده expat چیست؟
XML چیست؟
XML برای شرح و بیان اطلاعات طراحی شده است، در واقع ساختار اطلاعات را شرح می دهد.
در XML هیچ تگ از پیش تعریف شده ای وجود ندارد، و باید خودمان تگ ها را تعریف کنیم.
تجزیه کننده Expat چیست؟
برای خواندن، ویرایش کردن، ایجاد و خلاصه دستگاری یک فایل XML، به یک تجزیه کننده XML نیاز داریم.
به صورت کلی دو نوع تجزیه کننده XML وجود دارد:
- تجزیه کننده درختی: این تجزیه کننده فایل XML را به یک ساختار درختی منتقل می کند و تمام فایل را تحلیل کرده و دسترسی به عناصر درخت را فراهم می کند.(همان طور که قبلاً گفته شد تجزیه کننده DOM از نوع درختی است)
- تجزیه کننده رویدادی: یک فایل XML را به صورت یک سری از رویدادها می بیند و زمانی که یک رویداد خاص اتفاق می افتد، یک تابع را برای بررسی آن صدا می زند.
تجزیه کننده Expat از نوع رویدادی است.
نکته: تجزیه کننده رویدادی، به جای اینکه روی ساختار تمرکز کند روی محتوای یک فایل XML تمرکز می کند، به همین خاطر دسترسی به اطلاعات در این نوع تجزیه کننده سریع تر است.
به فایل XML زیر توجه کنید:
<from>Amir</from>
یک تجزیه کننده رویدادی فایل XML بالا را به صورت سه رویداد زیر گزارش می دهد:
- شروع عنصر: from
- شروع بخص اطلاعات با مقدار: "Amir"
- بستن عنصر: form
مثال XML بالا با یک فرمت درست نوشته شده است، اما به خاطر اینکه DTD ندارد، معتبر نیست.
نکته: DTD یا Document Type Definition مشخص کننده قوانین به کار رفته در یک سند است، به این قوانین الگو می گویند، الگوها ابزارهای مهمی برای نگهداری پیوستگی اسناد محسوب می گردند. با مقایسه سند معینی با الگوی آن اعتبار آن سند تعیین می شود. اگر یک سند با تمام قوانین موجود در الگوی آن مطابقت داشته باشد به آن یک سند معتبر می گویند. معتبر بودن یک سند نشانه مطلوب بودن داده های آن است.
تجزیه کننده Expat یک تجزیه کننده بدون اعتبار است، و برای آن فرقی نمی کند که سند شنا از DTD استفاده کرده یا نه!
سند XML شما باید در یک فرمت درست نوشته شده باشد والا تجزیه کننده Expat خطایی نمایش خواهد داد.
نصب تجزیه کننده Expat
توابع تجزیه کننده Expat قسمتی از هسته PHP هستند و نیازی به نصب وجود ندارد.
فایل XML زیر در مثال های آینده استفاده خواهد شد:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>اعلان یک تجزیه کننده XML
در PHP می توانیم یک تجزیه کننده XML را اعلان کنیم، برای رویدادهای مختلف، تعدادی رسیدگی کننده (Handler) تعریف می شود و سپس فایل XML را تحزیه می کنیم.
مثال:
<?php
//Initialize the XML parser
$parser=xml_parser_create();
//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
{
switch($element_name)
{
case "NOTE": echo "-- Note --<br />"; break;
case "TO": echo "To: "; break;
case "FROM": echo "From: "; break;
case "HEADING": echo "Heading: "; break;
case "BODY": echo "Message: ";
}
}
//Function to use at the end of an element
function stop($parser,$element_name)
{
echo "<br />";
}
//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}
//Specify element handler
xml_set_element_handler($parser,"start","stop");
//Specify data handler
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen("test.xml","r");
//Read data
while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
//Free the XML parser
xml_parser_free($parser);
?>خروجی کد بالا:
-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!توضیح مثال بالا:
- تابع ()xml_parser_create یک تجزیه کننده XML را اعلان می کند.
- تابع start به عنوان رسیدگی کننده به رویدادهای مختلف ایجاد شده است.
- تابع ()xml_set_element_handler مشخص می کند، زمانی که تجزیه کننده با تگ باز و بسته مواجه شد، کدام تابع اجرا شود.
- تابع ()xml_set_character_data_handler مشخص می کند، زمانی که تجزیه کننده با اطلاعات مواجه شد، کدام تابع اجرا شود.
- تابع ()xml_parse فایل "test.xml" را تجزیه می کند.
- در صورتی که خطایی رخ دهد، تابع ()xml_error_string خطای گزارش شده را به شرحی مناسب تبدیل می کند.
- در آخر تابع ()xml_parser_free حافظه اختاص داده شده به تجزه کننده را آزاد می کند.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
تعریف توابع در PHP
تعریف توابع در PHP
قدرت واقعی PHPدر توابع آن است، در PHP بیش از 1000 تابع از قبل نوشته شده وجود دارد.
در این فصل به شما نشان خواهیم داد که در PHP چگونه می توانید توابع خودتان را تعریف کنید.
یک تابع به وسیله صدا زدن آن اجرا خواهد شد، شما می توانید از هر جای صفحه آنرا صدا بزنید.
نحوه تعریف توابع:
function functionName()
{
code to be executed;
}توجه:برای نامگذاری توابع موارد زیر را در نظر داشته باشید:
- اسامی توابع به نحوی انتخاب شوند که نام انتخاب شده معرفی کننده عملی باشد که تابع انجام می دهد
- نام تابع می تواند با حروف و یا علامت "_" شروع شود(با عدد نمی تواند شروع شود).
مثال: یک تابع ساده که با صدا زدن آن نام من چاپ می شود:
<html>
<body>
<?php
function writeName()
{
echo "pahlavan sadegh";
}
echo "My name is ";
writeName();
?>
</body>
</html>خروجی کد بالا:
My name is pahlavan sadegh
ارسال پارامتر به توابع
یک پارامتر چیزی شبیه یک متغیر است، پارامترها بعد از نام تابع داخل پرانتز تعریف می شوند.
مثال1: در مثال زیر با ارسال نام شخص به تابع، بعد از صدا زدن تابع، نام های مختلف با فامیلی یکسان چاپ می شود.
<html>
<body>
<?php
function writeName($fname)
{
echo $fname . " Ahmadi.<br />";
}
echo "My name is ";
writeName("Ali");
echo "My sister's name is ";
writeName("Sara");
echo "My brother's name is ";
writeName("Amir");
?>
</body>
</html>خروجی کد بالا:
My name is Ali Ahmadi.
My sister's name is Sara Ahmadi.
My brother's name is Amir Ahmadi.مثال2: تابع زیر دو پارامتر دارد.
<html>
<body>
<?php
function addNumbers($a , $b)
{
$sum = $a + $b;
echo $sum;
}
addNumbers(100,200);
؟>
</body>
</html>خروجی کد بالا:
300
نکته: به صورت پیش فرض پارامترهایی که به توابع ارسال می شوند، طوری هستند که در صورتی که در تابع تغییر کنند مقدار اصلی آنها تغییری نخواهد کرد و به همان صورت باقی خواهند ماند، اما اگر در تعریف تابع قبل از اسم متغیر از علامت "&" استفاده کنیم، این ویژگی تغییر می کند یعنی با تغییر یک متغیر در درون تابع، اصل متغیر هم تغییر خواهد نمود، به مثال زیر توجه کنید.
مثال:
<html>
<body>
<?php
function changeit(&$string)
{
echo "String is: " . $string . '<br />';
$string="Learning PHP";
echo "String Changed to: " . $string . '<br />';
}
$str="PLUS";
changeit($str);
echo $str;
?>
</body>
</html>خروجی کد بالا:
String is: PLUS
String Changed to: Learning PHP
Learning PHPبازگرداندن یک مقدار توسط توابع
شما می توانید از دستور return برای بازگرداندن یک مقدار استفاده کنید، یعنی کافی است نتیجه را جلوی دستور return قرار دهید.
مثال:
<html>
<body>
<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>
</body>
</html>خروجی کد بالا:
1 + 16 = 17
توابع از پیش تعریف شده:
در php بیش از 5300 تابع از پیش تعریف شده وجود دارد که البته برای اجرای آنها ممکن است در ورژن های مختلف برخی توابع وجود نداشته باشند و یا برای اجرای بعضی توابع احتیاج باشد تا extension خاصی نصب باشد.
توابع از پیش تعریف شده همانند توابعی که کاربر تعریف می کند اجرا می شوند.برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
تفاوت دستور echo و print
در PHPدو روش اصلی برای چاپ وجود دارد: echo و print
تقریباً در هر مثالی از این بیاموز از echo (و print) استفاده شده است. بنابراین در این مطلب سعی شده است تا در این باره مقداری بیشتر توضیح داده شود.
دستور echo و print در PHP
تفاوت های echo و print:
- echo: یک یا بیشتر از یک آرگومان را می گیرد و مقداری را برنمی گرداند. برای اتصال دو رشته هم می توان از "." و هم از "," استفاده کرد.
- print: تنها یک آرگومان را می گیرد و همیشه مقدار 1 را برمی گرداند. برای اتصال دو رشته فقط می توان از "." استفاده کرد.
شباهت های echo و print:
- هر دو تابع نیستند.
- جزئی از ساختار زبانی هستند و می توان از آنها با یا بدون پرانتز استفاده نمود.
نکته: echo سرعت بیشتری نسبت به print دارد.
دستور echo در PHP
نمایش رشته ها
در مثال زیر، نحوه نمایش رشته های مختلف با استفاده از دستور echo نشان داده شده است: (همچنین توجه داشته باشید که رشته چاپ شده می تواند شامل تگ های HTML باشد)
مثال (تفاوت دستور echo و print)
<?php
echo "<h2>PHP is fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
echo "This", " string", " was", " made", " with multiple parameters.";
?>خروجی کد بالا:
PHP is fun! Hello world!
I'm about to learn PHP!
This string was made with multiple parameters.نمایش متغیرها
در مثال زیر، نحوه ی چاپ رشته ها و متغیر ها با دستور echo نشان داده شده است:
مثال (تفاوت دستور echo و print)
<?php
$txt1="Learn PHP";
$txt2="Beyamooz.com";
$cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}";
?>خروجی کد بالا:
Learn PHP
Study PHP at Beyamooz.com
My car is a Volvoتوجه: اگر متغییری درون علامت " قرار بگیرد مقدار متغییر به جای آن قرار می گیرد. اما اگر درون علامت ' قرار بگیرد مقدار متغییر جایگزین نمی شود.
دستور print در PHP
نمایش رشته ها
در مثال زیر، نحوه نمایش رشته های مختلف با استفاده از دستور print نشان داده شده است: (همچنین توجه داشته باشید که رشته چاپ شده می تواند شامل تگ های HTML باشد)
مثال (تفاوت دستور echo و print)
<?php
print "<h2>PHP is fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>خروجی کد بالا:
PHP is fun! Hello world!
I'm about to learn PHP!نمایش متغیرها
در مثال زیر، نحوه ی چاپ رشته ها و متغیر ها با دستور print نشان داده شده است:
مثال (تفاوت دستور echo و print)
<?php
$txt1="Learn PHP";
$txt2="Beyamooz.com";
$cars=array("Volvo","BMW","Toyota");
print $txt1;
print "<br>";
print "Study PHP at $txt2";
print "My car is a {$cars[0]}";
?>خروجی کد بالا:
Learn PHP
Study PHP at Beyamooz.com
My car is a Volvoبرای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
توابع تاریخ و زمان در PHP
مقدمه ی توابع تاریخ و زمان در PHP
توابع تاریخ و زمان به شما این امکان را می دهند تا هنگامی که اسکریپت phpشما به کار می افتد، بتوانید تاریخ و زمان را از سرور به دست بیاورید. سپس شما می توانید با استفاده از توابع تاریخ و زمان استفاده کنید تا تاریخ و زمان را به فرمت دلخواه خود در آورید.
نکته: این توابع بر اساس تنظیمات محلی سرور شما کار می کنند. پس به خاطر داشته باشید که به هنگام کار با این توابع، سال های کبیسه و صرفه جویی در زمان را درنظر بگیرید.
نصب
توابع تاریخ و زمان،قسمتی از هسته ی php هستند. بنابراین برای استفاده از این توابع، نیازی به نصب آنها ندارید.
پیکربندی زمان اجرا
رفتار این توابع، تحت تاثیر تنظیمات داخل php.ini می باشد.
نام توضیحات Default PHP Version date.timezone منطقه ی زمانی پیش فرض(از آن در تمام توابع تاریخ و زمان استفاده شده است).
"" PHP 5.1 date.default_latitude عرض جغرافیایی پیش فرض(استفاده شده توسط date-sunrise و date-sunset)
"31.7667" PHP 5.0 date.default_longitude طول جغرافیایی پیش فرض(استفاده شده توسط date_sunrise و date_sunset).
"35.2333" PHP 5.0 date.sunrise_zenith اوج طلوع خورشید(استفاده شده توسط date_sunrise و date_sunset).
"90.83" PHP 5.0 date.sunset_zenith اوج غروب خورشید(استفاده شده توسط date_sunrise و date_sunset).
"90.83" PHP 5.0 توابع Date و Time در php
تابع توضیحات checkdate از تابع ()checkdate برای اعتبار سنجی یک تاریخ میلادی استفاده می شود.
date_add تابع ()date_add تعداد یا مقداری روز، ماه، سال، ساعت، دقیقه، و ثانیه را به یک تاریخ اضافه می کند.
date_create_from_format تابع ()date_create_from_format یک شیء DateTime جدید را که بر اساس یک فرمت مشخص، فرمت شده است را برمی گرداند.
date_create تابع ()date_create، یک شیء جدید DateTime را برمی گرداند.
date_date_set تابع ()date_date_set یک تاریخ جدید را ست می کند.
date_default_timezone_get تابع ()date_default_timezone_get، منطقه ی زمانی پیش فرض استفاده شده توسط تمام توابع date/time درون اسکریپت مورد نظر را برمی گرداند.
date_default_timezone_set تابع ()date_default_timezone_set منطقه ی زمانی پیش فرض را که در اسکریپت مورد نظر، به وسیله ی تمام توابع date/time مورد استفاده قرار می گیرد را، ست می کند.
date_diff تابع ()date_diff اختلاف بین دو شیء DateTime را برمی گرداند.
date_format تابع ()date_format یک تاریخ را برمی گرداند که بر طبق یک فرمت مشخص شده، فرمت شده است.
date_get_last_errors تابع ()date_get_last_errors اخطارها یا error های پیدا شده به هنگام تجزیه ی یک رشته ی تاریخ را برمی گرداند.
date_interval_create_from_date_string Sets up a DateInterval from the relative parts of the string
date_interval_format تابع ()date_interval_format یک مستعار از DateInterval::format می باشد.
date_isodate_set تابع ()date_isodate_set، یک تاریخ را بر اساس استاندارد ISO 8601 و با استفاده از هفته ها و روزها(به جای استفاده از یک تاریخ مشخص) ست می کند.
date_modify تابع ()date_modify برچسب زمانی(timestamp)را تغییر می دهد.
date_offset_get تابع ()date_offset_get ، اختلاف منطقه ی زمانی را برمی گرداند.
date_parse_from_format تابع ()date_parse_from_format یک آرایه ی انجمنی را به همراه اطلاعات دقیق درباره ی یک تاریخ مشخص و طبق یک فرمت مشخص، برمی گرداند.
date_parse تابع ()date_parse یک آرایه ی انجمنی را به همراه اطلاعات دقیق در مورد یک تاریخ مشخص،برمی گرداند.
date_sub تابع ()date_sub مقداری روز و ماه و سال و ساعت و دقیقه و ثانیه را از یک تاریخ ، کم می کند.
date_sun_info تابع ()date_sun_info، یک آرایه را که دربردارنده ی اطلاعاتی درباره ی طلوع و غروب آفتاب و تاریک و روشن شدن(گرگ و میش)است را برای یک روز و مکان مشخص، برمی گرداند.
date_sunrise تابع ()date_sunrise، زمان طلوع خورشید را برای یک روز و محل مشخص، برمی گرداند.
date_sunset تابع ()date_sunset، زمان غروب خورشید را برای یک روز و مکان مشخص برمی گرداند.
date_time_set تابع ()date_time_set زمان را ست می کند.
date_timestamp_get تابع ()date_timestamp_get، برچسب زمانی یونیکس را برمی گرداند.
date_timestamp_set تابع ()date_timestamp_set، تاریخ و زمان را بر اساس یک برچسب زمان یونیکس، ست می کند.
date_timezone_get تابع ()date_timezone_get، منطقه ی زمانی را از یک شیء DateTime داده شده برمی گرداند.
date_timezone_set تابع ()date_timezone_set، منطقه ی زمانی را برای یک شیء DateTime ست می کند.
date تابع ()date، یک تاریخ و زمان محلی را فرمت می کند و رشته ی تریخ فرمت شده را برمی گرداند.
getdate تابع، ()getdate ، اطلاعات تاریخ یا زمان را از یک برچسب زمانی یا تاریخ/زمان محلی، برمی گرداند.
gettimeofday تابع ()gettimeofday زمان کنونی را برمی گرداند.
gmdate تابع ()gmdate، یک تاریخ و زمان GMT/UTC را فرمت می کند و رشته ی تاریخ فرمت شده را برمی گرداند.
gmmktime تابع ()gmmktime، برچسب زمان یونیکس را برای یک تاریخ GMT برمی گرداند.
gmstrftime تابع ()gmstrftime یک زمان یا تاریخ GMT/UTC را بر اساس تنظیمات محلی، فرمت می کند.
idate این تابع یک زمان یا تاریخ محلی را بعنوان یک عدد صحیح فرمت می کند.
localtime تابع ()localtime زمان محلی را برمی گرداند.
microtime تابع ()microtime،برچسب زمان یونیکس را با میکروثانیه ها برمی گرداند.
mktime تابع ()gmmktime، برچسب زمان یونیکس را برای یک تاریخ برمی گرداند.
strftime تابع ()strftime، یک زمان یا تاریخ محلی را بر اساس تنظیمات محلی فرمت می کند.
strptime تابع ()strptime، یک زمان/تاریخ تولید شده به وسیله ی تابع strftime را تجزیه می کند.
strtotime تابع ()strotime یک تاریخ انگلیسی متنی را به برچسب زمان یونیکس(تعداد ثانیه ها از January 1 1970 00:00:00 GMT) تجزیه می کند.
time تابع ()time زمان جاری را به صورت تعداد ثانیه ها از مبدا زمان یونیکس(January 1 1970 00:00:00 GMT) برمی گرداند.
timezone_abbreviations_list تابع ()timezone_abbreviations_list یک آرایه ی انجمنی را که دربردارنده ی dst و offset و نام timezone است را برمی گرداند.
timezone_identifiers_list تابع ()timezone_identifiers_list، یک آرایه ی اندیسی را که دربردارنده ی تمام مناطق زمانی تعریف شده است را برمی گرداند.
timezone_location_get تابع ()timezone_location_get اطلاعات مکانی را برای یک منطقه ی زمانی داده شده برمی گرداند.
timezone_name_from_ abbr تابع ()timezone_name_from_abbr از یک نام منطقه ی زمانی خلاصه شده، نام منطقه زمانی را برمی گرداند.
timezone_name_get تابع ()timezone_name_get نام منطقه ی زمانی مورد نظر را برمی گرداند.
timezone_offset_get تابع ()timezone_offset_get یک اختلاف منطقه ی زمانی را از GMT برمی گرداند.
timezone_open تابع ()timezone_open یک شیء DateTimeZone جدید را ایجاد می کند.
timezone_transitions_get Returns all transitions for the timezone
timezone_version_get تابع ()timezone_version_get در واقع ورژن db منطقه ی زمانی مورد نظر را برمی گرداند.
ثابت های از پیش تعریف شده ی تاریخ و زمان در php
ثابت ها توضیحات DATE_ATOM (Atom (example: 2005-08-15T16:13:03+0000 DATE_COOKIE (HTTP Cookies (example: Sun, 14 Aug 2005 16:13:03 UTC DATE_ISO8601 (ISO-8601 (example: 2005-08-14T16:13:03+0000 DATE_RFC822 (RFC 822 (example: Sun, 14 Aug 2005 16:13:03 UTC DATE_RFC850 (RFC 850 (example: Sunday, 14-Aug-05 16:13:03 UTC DATE_RFC1036 (RFC 1036 (example: Sunday, 14-Aug-05 16:13:03 UTC DATE_RFC1123 (RFC 1123 (example: Sun, 14 Aug 2005 16:13:03 UTC DATE_RFC2822 (RFC 2822 (Sun, 14 Aug 2005 16:13:03 +0000 DATE_RSS (RSS (Sun, 14 Aug 2005 16:13:03 UTC DATE_W3C (World Wide Web Consortium (example: 2005-08-14T16:13:03+0000 توابع کار با آرایه ها در PHP
آموزش کلیه توابع آرایه در PHP
توابع آرایه، به شما اجازه ی دسترسی و دستکاری آرایه را می دهند.
از آرایه های ساده و آرایه های چند بعدی نیز پشتیبانی می شود.
نصب کردن این توابع
توابع آرایه، جزئی از هسته ی php هستند. و نیازی نیست که این توابع را نصب کنید.
توابع آرایه در php5
تابع توضیحات array این تابع یک آرایه را ایجاد می کند. array_change_key_case این تابع، تمام کلیدهای درون یک آرایه را به حروف کوچک یا حروف بزرگ تغییر می دهد.
array_chunk این تابع، یک آرایه را به صورت آرایه های جدید، تکه تکه می کند.
array_column تابع ()array_column، مقادیر را از یک ستون تکی در آرایه ی دربردارنده، برمی گرداند.
array_combine تابع ()array_combine، از دو آرایه استفاده می کند و یک آرایه را ایجاد می کند به طوری که، کلیدها از آرایه ی اول و مقادیر از آرایه ی دوم انتخاب می شوند.
array_count_values این تابع، تمام مقادیر یک آرایه را می شمارد.
array_diff تابع ()array_diff مقادیر دو یا چند آرایه را مقایسه می کند، و مابه التفاوت آنها را برمی گرداند.
array_diff_assoc تابع ()array_diff_assoc کلید ها و مقادیر دو یا چند آرایه را مقایسه می کند و مابه التفاوت آنها را برمی گرداند.
array_diff_key تابع ()array_diff_key، کلیدهای دو یا چند آرایه را مورد مقایسه قرار می دهد و اختلاف های آنها را برمی گرداند.
array_diff_uassoc تابع ()array_diff_uassoc، کلیدها و مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تفاوت های آنها را برمی گرداند.
array_diff_ukey تابع ()array_diff_ukey کلیدهای دو یا چند آرایه را مقایسه می کند و مابه التفاوت آنها را برمی گرداند.
array_fill تابع ()array_fill یک آرایه را با مقادیری پر می کند.
array_fill_keys تابع ()array_fill_keys با استفاده از کلید های تعریف شده، یک آرایه را با مقادیر مورد نظر پر می کند.
array_filter تابع ()array_filter مقادیر یک آرایه را با استفاده از یک تابع فراخوانی(callback) فیلتر می کند.
array_flip تابع ()array_flip در یک آرایه، تمام کلیدها را با مقادیر نسبت داده شده به آنها، جا به جا می کند.
array_intersect تابع ()array_intersect مقادیر دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.
array_intersect_assoc تابع ()array_intersect_assoc، کلید ها و مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تطابق ها را برمی گرداند.
array_intersect_key تابع ()array_intersect_key کلید های دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.
array_intersect_uassoc تابع ()array_intersect_uassoc کلیدها و مقایر دو یا چند آرایه را مقایسه می کند و تطابق ها را برمی گرداند.
array_intersect_ukey تابع ()array_intersect_ukey کلیدهای دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.
array_key_exists تابع ()array_key_exists در یک آرایه به دنبال یک کلید خاص می گردد و در صورتی که آن کلید موجود باشد، true را برمی گرداند و در صورتی که کلید موجود نباشد، false را برمی گرداند.
array_keys تابع ()array_keys یک آرایه را برمی گرداند که شامل کلیدها است.
array_map تابع ()array_map، هر مقدار از یک آرایه را به یک تابع تعریف شده توسط کاربر می فرستد و یک آرایه با مقادیر جدید داده شده توسط آن تابع را برمی گرداند.
array_merge تابع ()array_merge یک یا چند آرایه در یک آرایه ی دیگر ادغام می کند.
array_merge_recursive تابع ()array_merge_recursive یک یا چند آرایه را در یک آرایه ی دیگر ادغام می کند.
array_multisort تابع ()array_multisort یک آرایه ی منظم شده را برمی گرداند.
array_pad تابع ()array_pad یک تعداد مشخص از عناصر را با یک مقدار مشخص شده، در یک آرایه، الحاق می کند.
array_pop تابع ()array_pop، آخرین عنصر از یک آرایه را حذف می کند.
array_product تابع ()array_product درواقع حاصلضرب عناصر یک آرایه را محاسبه کرده و برمی گرداند.
array_push تابع ()array_push یک یا چند عنصر را به انتهای یک آرایه اضافه می کند.
array_rand تابع ()array_rand یک کلید تصادفی از یک آرایه را برمی گرداند. و یا اینکه اگر شما مشخص کنید، یک آرایه از کلیدهای تصادفی را برمی گرداند.
array_reduce تابع ()array_reduce مقادیر مورد نظر در یک آرایه را به یک تابع تعریف شده توسط کاربر می فرستد و یک رشته را برمی گرداند.
array_replace تابع ()array_replace مقادیر اولین آرایه را با مقادیر آرایه های بعدی، جایگزین می کند.
array_replace_recursive تابع ()array_replace_recursive مقادیر اولین آرایه را با مقادیر دیگر آرایه ها، به صورت بازگشتی، جایگزین می کند.
array_reverse تابع ()array_reverse ترتیب عناصر یک آرایه را معکوس کرده و آن را برمی گرداند.
array_search تابع ()array_search یک آرایه را برای یافتن یک مقدار، جستجو می کند و کلید آن را برمی گرداند
array_shift تابع ()array_shift اولین عنصر از یک آرایه را حذف می کند و مقدار عنصر حذف شده را برمی گرداند.
array_slice تابع ()array_slice قسمت های انتخابی از یک آرایه را برمی گرداند.
array_splice تابع ()array_splice عناصر انتخاب شده از یک آرایه را حذف می کند و و آنها را با عناصر جدیدی جایگزین می کند.
array_sum تابع ()array_sum حاصلجمع تمام مقادیر درون یک آرایه را برمی گرداند.
array_udiff تابع ()array_udiff مقادیر دو یا چند آرایه را مقایسه می کند و تفاوت آنها را برمی گرداند.
array_udiff_assoc تابع ()array_udiff کلیدها و مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تفاوت یا به عبارت دیگر اختلاف آنها را برمی گرداند.
array_udiff_uassoc تابع ()array_udiff_uassoc کلیدها و مقادیر دو یا چند آرایه را مقایسه می کند و تفاوت آنها را برمی گرداند.
array_uintersect تابع ()array_uintersect مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تطابق ها را برمی گرداند.
array_uintersect_assoc تابع ()array_uintersect_assoc ، کلیدها و مقادیر دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.
array_uintersect_uassoc تابع ()array_uintersect_uassoc کلیدها و مقادیر دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.
array_unique تابع ()array_unique در صورتی که یک مقدار دو بار تکرار شده باشد، یکی از آنها را حذف می کند.
array_unshift تابع ()array_unshift یک عنصر جدید را به یک آرایه الحاق می کند. این مقادیر جدید در ابتدای آرایه ی مورد نظر قرار خواهند گرفت.
array_values تابع ()array_values یک آرایه را برمی گرداند که دربردارنده ی تمام مقادیر یک آرایه می باشد.
array_walk تابع ()array_walk هر عنصر آرایه را به یک تابع تعریف شده توسط کاربر، پاس می دهد.
array_walk_recursive تابع ()array_walk_recursive هر عنصر یک آرایه را در یک تابع تعریف شده توسط کاربر وارد می کند.
arsort تابع ()arsort یک آرایه ی انجمنی را به صورت نزولی مرتب می کند و این مرتب شدن بر اساس مقدارها می باشد.
asort تابع ()asort یک آرایه ی انجمنی را به صورت صعودی و بر اساس مقادیر مرتب می کند.
compact تابع ()compact از متغیرها و مقادیر آنها یک آرایه ایجاد می کند.
count تابع ()count تعداد عناصر درون یک آرایه را برمی گرداند.
current تابع ()current درواقع، مقدار عنصر جاری را در یک آرایه برمی گرداند.
each تابع ()each، کلید و مقدار عنصر جاری را برمی گرداند و اشاره گر داخلی را به جلو می برد.
end تابع ()end اشاره گر داخلی را به عنصر آخر آرایه می برد و آن را در خروجی برمی گرداند.
extract تابع ()extract متغیرهای یک آرایه را به جدول نمادهای محلی وارد می کند.
in_array تابع ()in_array یک مقدار مشخص را در یک آرایه جستجو می کند.
key تابع ()key کلید عنصر مورد نظر را از محل اشاره گر داخلی کنونی برمی گرداند.
krsort تابع ()krsort یک آرایه ی انجمنی را به صورت نزولی و بر اساس کلیدها، مرتب می کند.
ksort از تابع ()ksort برای مرتب کردن یک آرایه ی انجمنی به صورت صعودی و بر اساس کلید ها استفاده می شود.
list از تابع ()list برای اختصاص دادن مقادیری به یک لیست از متغیرها استفاده می شود.
natcasesort تابع ()natcasesort یک آرایه را با استفاده از الگوریتم natural order مرتب می کند.
natsort تابع ()natsort یک آرایه را با استفاده از الگوریتم "natural order" مرتب می کند.
next تابع ()next اشاره گر داخلی را به جلو می برد و عنصر بعدی آرایه را بعنوان خروجی برمی گرداند.
pos یک نام مستعار از تابع current است.
prev تابع ()prev اشاره گر داخلی را به عنصر قبلی در آرایه می برد و آن را بعنوان خروجی برمی گرداند.
range تابع ()range یک آرایه ایجاد می کند که دربردارنده ی یک محدوده از عناصر است.
reset تابع ()reset اشاره گر داخلی تابع مورد نظر را به اولین عنصر آرایه منتقل می کند.
rsort تابع ()rsort یک آرایه ی اندیسی را به صورت نزولی مرتب می کند.
shuffle تابع ()shuffle عناصر آرایه ی مورد نظر را به صورت تصادفی مرتب می کند.
sizeof یک نام مستعار تابع count است.
sort تابع ()sort یک آرایه ی اندیسی را به صورت صعودی مرتب می کند.
uasort تابع ()uasort مقادیر یک آرایه را با استفاده از یک تابع تعریف شده توسط کاربر، مورد مقایسه قرار می دهد.
uksort تابع ()uksort یک آرایه را بر اساس کلیدها، و با استفاده از یک تابع مقایسه ی تعریف شده توسط کاربر، مورد مقایسه قرار می دهد.
usort تابع ()usort یک آرایه را با استفاده از یک تابع مقایسه ی تعریف شده توسط کاربر، مرتب می کند.
توابع کار با پوشه ها در PHP
مقدمه ی توابع کار با پوشه ها (Directory) در PHP
توابع کار با پوشه ها یا Directory به شما امکان می دهند تا اطلاعاتی را در مورد پوشه ها و محتوای آنها به دست بیاورید.
نحوه ی نصب کردن
توابع دایرکتوری در phpجزئی از هسته ی php هستند و نیازی نیست تا آنها را نصب کنید.
توابع دایرکتوری در PHP5
تابع توضیحات chdir تابع ()chdir دایرکتوری کنونی را تغییر می دهد.
chroot تابع ()chroot ، دایرکتوری ریشه ی پروسه ی کنونی را به پارامتر directory تغییر می دهد و دایرکتوری کنونی که در حال کار بر روی آن هستیم را به "/" تغییر می دهد.
closedir تابع ()closedir استعمال دایرکتوری را پایان می دهد.
dir تابع ()dir یک نمونه از کلاس Directory را برمی گرداند.
getcwd تابع ()getcwd دایرکتوری کنونی مورد استفاده را برمی گرداند.
opendir تابع ()opendir یک دایرکتوری را باز می کند.
readdir تابع ()readdir، نام ورودی بعدی در یک دایرکتوری را برمی گرداند.
rewinddir تابع ()rewinddir یک دایرکتوری ایجاد شده به وسیله ی تابع opendir را ریست می کند.
scandir تابع ()scandir یک آرایه را برمی گرداند که دربردارنده ی فایل ها ودایرکتوری هایی از یک دایرکتوری مشخص است.
توابع کار با تقویم در PHP
مقدمه ی توابع تقویم در PHP
افزونه ی calendar شامل توابعی است که تبدیل فرمت های مختلف تقویم را به یکدیگر، ساده می کنند.
این توابع، بر اساس شمارش روز جولیان بنا شده اند. این شمارش از روز اول سال 4713 قبل از میلاد شروع می شود.
نکته: برای تبدیل بین فرمت های مختلف تقویم، شما ابتدا باید آن را به شمارش روز جولیان تبدیل کنید و سپس آن را به تقویم مورد نظر خود در بیاورید.
نکته: شمارش روز جولیان، همانند تقویم جولیان نمی باشد.
نحوه نصب کردن
برای اینکه این توابع کار کنند، شما باید عبارت enable-calendar-- را فعال کنید.
نسخه ی ویندوز PHP، به صورت داخلی، از این افزونه پشتیبانی می کند.
توابع تقویم در PHP5
تابع توضیحات cal_days_in_month تابع ()cal_days_in_month، تعداد روزهای یک ماه را برای یک سال و تقوم مشخص، برمی گرداند.
cal_from_jd تابع ()cal_from_jd، یک شمارش روز جولیان را به یک تاریخ در یک تقویم مشخص، تبدیل می کند.
cal_info تابع ()cal_info اطلاعاتی را درباره ی یک تقویم مشخص شده برمی گرداند.
cal_to_jd تابع ()cal_to_jd یک تاریخ در یک تقویم مشخص را به شمارش روز جولیان تبدیل می کند.
easter_date تابع ()easter_date برچسب زمان یونیکس(Unix timestamp) را برای نیمه شب عید پاک برای یک سال مشخص را برمی گرداند.
easter_days تابع ()easter_days تعداد روزهای بعد از 21 مارس که روز عید پاک در سال داده شده می باشد را برمی گرداند.
frenchtojd تابع ()frenchtojd یک تاریخ را از تقویم جمهوری فرانسه به شمارش روز جولیان تبدیل می کند.
gregoriantojd تابع ()gregoriantojd یک تاریخ از تقویم میلادی را به یک شمارش روز جولیان تبدیل می کند.
jddayofweek تابع ()jddayofweek روز از هفته را برمی گرداند.
jdmonthname تابع ()jdmonthname ، نام ماه را برمی گرداند.
jdtofrench تابع ()jdtofrench یک شمارش روز جولیان را به تاریخ جمهوری فرانسه تبدیل می کند.
jdtogregorian تابع ()jdtogregorian، شمارش روز جولیان را به تاریخ میلادی تبدیل می کند.
jdtojewish تابع ()jdtojewish یک شمارش روز جولیان را به تاریخ یهودی(jewish) برمی گرداند.
jdtojulian تابع ()jdtojulian یک شمارش روز جولیان را به یک تاریخ جولیان تبدیل می کند.
jdtounix تابع ()jdtounix یک شمارش روز جولیان را به برچسب زمان یونیکس تبدیل می کند.
jewishtojd تابع ()jewishtojd، یک تاریخ از تقویم یهودی را به شمارش روز جولیان تبدل می کند.
juliantojd تابع ()juliantojd، یک تاریخ را از تقویم جولیان، به یک شمارش روز جولیان تبدیل می کند.
unixtojd تابع ()unixtojd، برچسب زمان یونیکس را به یک شمارش روز جولیان تبدیل می کند.
ثابت های تقویم از پیش تعریف شده در PHP5
ثابت نوع ورژن php CAL_GREGORIAN Integer PHP 4 CAL_JULIAN Integer PHP 4 CAL_JEWISH Integer PHP 4 CAL_FRENCH Integer PHP 4 CAL_NUM_CALS Integer PHP 4 CAL_DOW_DAYNO Integer PHP 4 CAL_DOW_SHORT Integer PHP 4 CAL_DOW_LONG Integer PHP 4 CAL_MONTH_GREGORIAN_SHORT Integer PHP 4 CAL_MONTH_GREGORIAN_LONG Integer PHP 4 CAL_MONTH_JULIAN_SHORT Integer PHP 4 CAL_MONTH_JULIAN_LONG Integer PHP 4 CAL_MONTH_JEWISH Integer PHP 4 CAL_MONTH_FRENCH Integer PHP 4 CAL_EASTER_DEFAULT Integer PHP 4.3 CAL_EASTER_ROMAN Integer PHP 4.3 CAL_EASTER_ALWAYS_GREGORIAN Integer PHP 4.3 CAL_EASTER_ALWAYS_JULIAN Integer PHP 4.3 CAL_JEWISH_ADD_ALAFIM_GERESH Integer PHP 5.0 CAL_JEWISH_ADD_ALAFIM Integer PHP 5.0 CAL_JEWISH_ADD_GERESHAYIM Integer PHP 5.0 توابع کار با فایل ها در PHP
مقدمه ی توابع کار با فایل ها در PHP یا (Filesystem)
توابع مربوط به فایل ها در PHPبه شما امکان می دهند تا filesystem را دستکاری کرده و تغییر دهید.
نحوه نصب کردن
توابع filesystem جزئی از هسته ی php هستند. و نیازی نیست تا برای استفاده از این توابع آنها را نصب کنید.
توابع filesystem در php5
تابع توضیحات basename تابع ()basename، نام فایل مورد نظر را از یک مسیر، برمی گرداند.
chgrp تابع ()chgrp درواقع usergroup را از فایل مشخص شده تغییر می دهد.
chmod تابع ()chmod دسترسی های یک فایل مشخص را تغییر می دهد.
chown تابع ()chown مالکیت یک فایل مشخص را تغییر می دهد.
clearstatcache تابع ()clearstatcatche درواقع وضعیت کش شدن فایل را مشخص می کند.
copy تابع ()copy یک فایل را کپی می کند.
delete به جای آن به تابع unlink یا unset مراجعه کنید.
dirname تابع ()dirname، نام دایرکتوری را از یک مسیر برمی گرداند.
disk_free_space تابع ()disk_free_space از یک دایرکتوری مشخص، مقدار فضای خالی را به بایت برمی گرداند.
disk_total_space تابع ()disk_total_space فضای کلی یک دایرکتوری مشخص را با بایت برمی گرداند.
diskfreespace یک نام مستعار تابع disk_free_space است.
fclose تابع ()fclose یک فایل باز شده را می بندد.
feof تابع ()feof بررسی می کند که آیا به EOF رسیده ایم یا نه.
fflush تابع ()fflush تمام خروجی بافر شده را دریک فایل باز شده(open) می نویسد.
fgetc تابع ()fgetc یک کاراکتر تکی از یک فایل باز شده را برمی گرداند.
fgetcsv تابع ()fgetcsv یک خط از داده های یک فایل باز شده ی csv را تجزیه می کند.
fgets تابع ()fgets یک خط از یک فایل باز شده را برمی گرداند.
fgetss تابع ()fgetss از یک فایل باز شده، یک خط را برمی گرداند به طوری که تگ های HTML و PHP آن خذف شده اند.
file تابع ()file یک فایل را درون یک آرایه، می خواند.
file_exists تابع ()file_exists بررسی می کند که آیا یک فایل یا یک دایرکتوری، موجود است یا نه.
file_get_contents تابع ()file_get_contents یک فایل را در یک رشته می خواند.
file_put_contents تابع ()file_put_contents یک رشته را درون یک فایل می نویسد.
fileatime تابع ()fileatime زمان آخرین دسترسی به یک فایل مشخص را برمی گرداند.
filectime تابع ()filectime آخرین زمانی که یک فایل مشخص مورد تغییر واقع شده است را برمی گرداند.
filegroup تابع ()filegroup از یک فایل مورد نظر، group ID را برمی گرداند.
fileinode تابع ()fileinode مقدار inode از یک فایل مورد نظر را برمی گرداند.
filemtime تابع ()filemtime آخرین زمانی که محتوای فایل مورد نظر تغییر کرده است را برمی گرداند.
fileowner تابع ()fileowner درواقع user ID(مالک) را از یک فایل مشخص برمی گرداند.
fileperms تابع ()fileperms مجوزهای(permissions) یک فایل یا دایرکتوری را برمی گرداند.
filesize تابع ()filesize سایز یک فایل مشخص را برمی گرداند.
filetype تابع ()filetype نوع فایل را از یک فایل یا دایرکتوری مشخص برمی گرداند.
flock تابع ()flock یک فایل را قفل کرده و یا آزاد می کند.
fnmatch تابع ()fnmatch نام یک فایل یا رشته را با استفاده از یک الگوی(pattern) مشخص، مورد تطابق قرار می دهد.
fopen یک فایل یا url را باز می کند.
fpassthru تابع ()fpassthru تمام داده ها را از مکان کنونی، در یک فایل باز شده می خواند تا هنگامی که به پایان فایل(EOF) برسد و سپس نتیجه را در خروجی می نویسد.
fputcsv تابع ()fputcsv، یک خط داده را به فرمت CSV در می آورد و آن را در یک فایل باز، می نویسد.
fputs این تابع یک نام مستعار از تابع fwrite است.
fread تابع ()fread عمل خواندن را از یک فایل باز شده انجام می دهد.
fscanf Parses input from an open file according to a specified format
fseek تابع ()fseek در یک فایل باز شده پویش می کند.
fstat تابع ()fstat اطلاعاتی را درباره ی یک فایل باز شده برمی گرداند.
ftell تابع ()ftell مکان کنونی(current position) را در یک فایل باز شده، برمی گرداند.
ftruncate تابع ()ftruncate یک فایل باز شده را به یک طول مشخص کوتاه می کند.
fwrite تابع ()fwrite در درون یک فایل باز شده، عمل نوشتن را انجام می دهد.
glob تابع ()glob یک آرایه از نام فایل ها یا دایرکتوری هایی که با یک الگوی مشخص تطابق دارند را برمی گرداند.
is_dir تابع ()is_dir بررسی می کند که آیا فایل مشخص شده یک دایرکتوری است یا نه.
is_executable تابع ()is_executable بررسی می کند که آیا فایل مشخص شده قابل اجرا(executable) است یا نه.
is_file تابع ()is_file بررسی می کند که آیا یک فایل مشخص، یک فایل حقیقی است یا نه.
is_link تابع ()is_link بررسی می کند که آیا فایل مشخص شده یک لینک است یا نه.
is_readable تابع ()is_readable بررسی می کند که آیا فایل مشخص شده قابل خواندن است یا نه.
is_uploaded_file تابع ()is_uploaded_file بررسی می کند که آیا فایل مورد نظر، به وسیله ی HTTP POST آپلود شده است یا نه.
is_writable تابع ()is_writeable بررسی می کند که آیا فایل مورد نظر قابل خواندن است ی نه.
is_writeable یک مستعار از تابع is_writable است.
lchgrp Changes group ownership of symlink
lchown Changes user ownership of symlink
link Creates a hard link
linkinfo تابع ()linkinfo اطلاعاتی را درباره ی یک hard link برمی گرداند.
lstat تابع ()lstat اطلاعاتی را درباره ی یک فایل یا یک لینک سمبلیک برمی گرداند.
mkdir تابع ()mkdir یک دایرکتوری را ایجاد می کند.
move_uploaded_file تابع ()move_uploaded_file یک فایل آپلود شده را به یک مکان جدید حرکت می دهد.
parse_ini_file تابع ()parse_ini_file یک فایل پیکربندی(ini) را تجزیه کرده و تنظیمات درون آن را به صورت یک آرایه برمی گرداند.
parse_ini_string یک رشته ی پیکربندی را تجزیه می کند.
pathinfo تابع ()pathinfo یک آرایه را برمی گرداند که دربردارنده ی اطلاعاتی درباره ی یک مسیر(path)است.
pclose تابع ()pclose یک pipe را که به وسیله ی popen باز شده است را می بندد.
popen تابع ()popen یک pipe را که در برنامه ای که در پارامتر command مشخص شده است را باز می کند.
readfile تابع ()readfile یک فایل را می خواند و آن را در خروجی می نویسد.
readlink تابع ()readlink در واقع target مورد نظر از یک لینک سمبلیک را برمی گرداند.
realpath تابع ()realpath نام مسیر(phathname) مطلق را برمی گرداند.
realpath_cache_get Returns realpath cache entries
realpath_cache_size Returns realpath cache size
rename تابع ()rename یک فایل یا دایرکتوری را تغییر نام می دهد.
rewind تابع ()rewind مکان اشاره گر فایل را به ابتدای فایل برمی گرداند.
rmdir تابع ()rmdir یک دایرکتوری خالی را حذف می کند.
set_file_buffer تابع ()set_file_buffer اندازه ی بافر یک فایل باز شده را ست می کند.
stat تابع ()stat اطلاعاتی را درباره ی یک فایل برمی گرداند.
symlink تابع ()symlink از target موجود به وسیله ی link مشخص شده، یک لینک سمبلیک را ایجاد می کند.
tempnam تابع ()tempnam یک فایل موقت را با یک نام یکتا در یک دایرکتوری مشخص ایجاد می کند.
tmpfile تابع ()tmpfile یک فایل موقت را با یک نام یکتا در حالت read-write یا +w، ایجاد می کند.
touch تابع ()touch زمان دسترسی(access) و زمان اصلاح(modification) فایل مورد نظر را ست می کند.
umask تابع ()umask دسترسی ها را برای فایل ها تغییر می دهد.
unlink تابع ()unlink یک فایل را حذف می کند.
توابع کار با فیلترها در PHP
مقدمه ی توابع فیلتر
از توابع فیلتر، برای اعتبار سنجی و فیلتر کردن داده ها استفاده می شود.
نحوه نصب کردن
از PHP 5.2.0 به بعد، توابع فیلتر به طور پیش فرض فعال هستند. و نیازی به نصب این توابع نمی باشد.
توابع فیلتر در PHP5
تابع توضیحات filter_has_var تابع ()filter_has_var بررسی می کند که آیا یک نوع input مشخص موجود است یا نه.
filter_id تابع ()filter_id در واقع ID فیلتر یک نام فیلتر را برمی گرداند.
filter_input تابع ()filter_input یک متغیر خارجی(بعنوان مثال یک فرم ورودی) را گرفته و به طور اختیاری آن را فیلتر می کند.
filter_input_array تابع ()filter_input_array متغیرهای خارجی(مثل input فرم) را گرفته و به طور اختیاری آنها را فیلتر می کند.
filter_list تابع ()filter_list لیستی از تمام فیلترهای پشتیبانی شده را برمی گرداند.
filter_var_array تابع ()filter_var_array چند متغیر را گرفته و به طور اختیاری آنها را فیلتر می کند.
filter_var تابع ()filter_var به وسیله ی یک فیلتر مشخص شده، یک متغیر را فیلتر می کند.
ثابت های از پیش تعریف شده ی فیلتر در php
ثابت ID توضیحات FILTER_VALIDATE_BOOLEAN 258 فیلتر FILTER_VALIDATE_BOOLEAN یک مقدار را بعنوان یک مقدار بولی، فیلتر می کند.
FILTER_VALIDATE_EMAIL 274 فیلتر FILTER_VALIDATE_EMAIL یک آدرس ایمیل را اعتبار سنجی می کند.
FILTER_VALIDATE_FLOAT 259 فیلتر FILTER_VALIDATE_FLOAT متغیرها را بعنوان یک عدد float(عدد با ممیز شناور) فیلتر می کند.
FILTER_VALIDATE_INT 257 از تابع FILTER_VALIDATE_INT برای اعتبار سنجی مقدار یک عدد صحیح(integer) استفاده می شود.
FILTER_VALIDATE_IP 275 فیلتر FILTER_VALIDATE_IP یک آدرس IP را اعتبار سنجی می کند.
FILTER_VALIDATE_REGEXP 272 فیلتر FILTER_VALIDATE_REGEXP یک عبارت منظم را فیلتر می کند.
FILTER_VALIDATE_URL 273 فیلتر FILTER_VALIDATE_URL درواقع یک URL را اعتبار سنجی می کند.
FILTER_SANITIZE_EMAIL 517 فیلتر FILTER_SANITIZE_EMAIL تمام کاراکترهای غیر مجاز را از یک آدرس ایمیل حذف می کند.
FILTER_SANITIZE_ENCODED 514 فیلتر FILTER_SANITIZE_ENCODED کاراکترهای خاص را رمزگذاری کرده و یا حذف می نماید.
FILTER_SANITIZE_MAGIC_QUOTES 521 فیلتر FILTER_SANITIZE_MAGIC_QUOTES تابع addslashes را بر روی یک رشته اجرا می کند.
FILTER_SANITIZE_NUMBER_FLOAT 520 فیلتر FILTER_SANITIZE_NUMBER_FLOAT تمام کاراکترهای غیرمجاز را از یک عدد float حذف می کند.
FILTER_SANITIZE_NUMBER_INT 519 فیلتر FILTER_SANITIZE_NUMBER_INT تمام کاراکترهای غیرمجاز را از یک عدد حذف می کند.
FILTER_SANITIZE_SPECIAL_CHARS 515 فیلتر FILTER_SANITIZE_SPECIAL_CHARS کاراکترهای خاص را حذف می کند.
FILTER_SANITIZE_FULL_SPECIAL_CHARS FILTER_SANITIZE_STRING 513 فیلتر FILTER_SANITIZE_STRING تگ ها را حذف می کند و همچنین کاراکترهای خاص را از یک رشته حذف کرده یا رمزگذاری می کند.
FILTER_SANITIZE_STRIPPED 513 فیلتر FILTER_SANITIZE_STRIPPED کاراکترهای ناخواسته را حذف کرده و یا رمزگذاری می کند.
FILTER_SANITIZE_URL 518 فیلتر FILTER_SANITIZE_URL تمام کاراکترهای غیرمجاز را از یک رشته حذف می کند.
FILTER_UNSAFE_RAW 516 فیلتر FILTER_UNSAFE_RAW کاری خاصی انجام نمی دهد و یا کاراکترهای خاص را رمز گذاری کرده یا خذف می کند.
FILTER_CALLBACK 1024 فیلتر FILTER_CALLBACK یک تابع تعریف شده توسط کاربر را فراخوانی کرده تا مقدار مورد نظر را فیلتر نماید.
ثابت ها در PHP
ثابت ها مانند متغیرها هستند با این تفاوت که یکبار آنها را تعریف می کنید و دیگر نمی توانید آنها را تغییر دهید.
ثابت ها (Constant) در PHP
یک ثابت، در واقع یک شناسه یا یک نام برای یک مقدار ساده است. در طول اسکریبت، مقدار ثابت نمی تواند تغییر نماید.
نام یک ثابت باید با یک حرف یا یک "_" آغاز شود. به علامت $ قبل از نام ثابت نیازی نیست.
توجه: برخلاف متغیرها، یک ثابت بطور اتوماتیک در طول تمام اسکریبت عمومی است.
تنظیم یک ثابت در PHP
با استفاده از تابع ()define، می توانید یک ثابت را تنظیم نمایید. این تابع سه پارامتر می گیرد: پارامتر اول، نام ثابت را تعیین می کند، پارامتر دوم، مقدار ثابت و پارامتر اختیاری سوم، تعیین می کند که آیا نام ثابت به حروف بزرگ و کوچک حساس است یا خیر. (مقدار پیشفرض false است به این معنی که نسبت به حروف کوچک و بزرگ حساس است)
در مثال زیر، یک ثابت با نام GREETING و مقدار "!Welcome to Beyamooz.com" تعریف شده است:
مثال (ثابت ها در PHP)
<?php
define("GREETING", "Welcome to Beyamooz.com!");
echo GREETING;
?>خروجی کد بالا:
Welcome to Beyamooz.com!در مثال زیر، نام ثابت به حروف بزرگ و کوچک حساس نیست (greeting و GREETING یکسان است):
مثال (ثابت ها در PHP)
<?php
define("GREETING", "Welcome to Beyamooz.com!", true);
echo greeting;
echo GREETING;
?>خروجی کد بالا:
Welcome to Beyamooz.com!
Welcome to Beyamooz.com!برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
جستجوی پیشرفته در ajax
با استفاده از AJAX، می توانید جستجوهای کاربر پسندتر و تعاملی تری ایجاد نمایید.
آموزش ساخت جستجوی پیشرفته با استفاده از AJAX در PHP
مزیت های جستجوی پیشرفته در مقایسه با جستجوی سنتی:
- در لحظه ی تایپ، نتیجه نمایش داده خواهد شد.
- اگر تایپ کردن را ادامه دهید، نتیجه محدود تر می شود.
- اگر نتیجه بیش از حد محدود شده است، می توانید کاراکترهای پایانی را پاک کنید تا نتیجه مناسب تری داشته باشید.
مثال زیر، نحوه ساخت یک جستجوی پیشرفته را نشان می دهد، نتیجه در لحظه ای که تایپ می کنید، نمایش داده می شود:
مثال (جستجوی پیشرفته در ajax)
جستجوی پیشرفته:نتیجه جستجوی مثال بالا، با استفاده از یک سند XML بنام "links.xml" تولید می شود. بدلیل اینکه می خواستیم یک مثال ساده و کوچک داشته باشیم، تنها شش نتیجه قابل نمایش است.
توضیح مثال - صفحه HTML
زمانی که کاربر در کادر ورودی بالا، کلمه ای را تایپ کند، تابع "()showResult" اجرا می شود. این تابع زمانی فراخوانی می شود که رویداد "onkeyup" فیلد ورودی رخ دهد:
<html>
<head>
<script>
function showResult(str)
{
if (str.length==0)
{
document.getElementById("livesearch").innerHTML="";
document.getElementById("livesearch").style.border="0px";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
document.getElementById("livesearch").style.border="1px solid #A5ACB2";
}
}
xmlhttp.open("GET","livesearch.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<p>جستجوی پیشرفته:</p>
<input type="text" size="30" onkeyup="showResult(this.value)">
<div id="livesearch"></div>
</form>
</body>
</html>توضیح کد Javascript:
اگر فیلد ورودی خالی باشد (str.length==0)، محتوای عنصر با شناسه "livesearch" خالی و خصوصیت border آن با مقدار "0px" تنظیم می شود و در نهایت، از تابع خارج می شود.
اگر فیلد ورودی خالی نباشد، تابع ()showResult کارهای زیر را انجام می دهد:
- شیء XMLHttpRequest ایجاد می شود.
- زمانی که پاسخ سرور آماده باشد، یک تابع ایجاد و اجرا می شود. (وظیفه این تابع این است که پاسخ دریافت شده از سرور را در عنصر با شناسه "livesearch" قرار دهد)
- درخواست یک فایل به سرور ارسال می شود.
- توجه داشته باشید که یک پارامتر (q) به URL اضافه شده است (با محتوای فیلد ورودی تنظیم می شود)
فایل PHP
فایلی که توسط کد JavaScriptبالا صدا زده می شود، یک فایل PHP بنام "livesearch.php" است.
در فایل "livesearch.php"، یک سند XML بنام "links.xml" بارگذاری می شود. در این فایل یک جستجو انجام شده و نتیجه بصورت HTML برگردانده می شود:
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("links.xml");
$x=$xmlDoc->getElementsByTagName('link');
//get the q parameter from URL
$q=$_GET["q"];
//lookup all links from the xml file if length of q>0
if (strlen($q)>0)
{
$hint="";
for($i=0; $i<($x->length); $i++)
{
$y=$x->item($i)->getElementsByTagName('title');
$z=$x->item($i)->getElementsByTagName('url');
if ($y->item(0)->nodeType==1)
{
//find a link matching the search text
if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
{
if ($hint=="")
{
$hint="<a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
else
{
$hint=$hint . "<br /><a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint=="")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>توضیح: زمانی که درخواست از JavaScript به فایل PHP ارسال می شود، کارهای زیر اتفاق می افتد:
- یک شیء XML DOM ایجاد و فایل "links.xml" درون آن load می شود.
- تمام عناصر <title> که با نام ارسال شده از JavaScript تطابق داشته باشند، پیدا می شود.
- URL صحیح بهمراه عنوان لینک در متغیر "response$" ذخیره می شود. اگر بیشتر از یک مورد پیدا شود، با استفاده از تگ <br /> آنها را پشت سر هم در متغیر ذکر شده ذخیره می کنیم.
- اگر هیچ موردی پیدا نشود متغیر "response$" با مقدار "no suggestion" تنظیم می شود.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
جملات شرطی در PHP
جملات شرطی
اغلب اوقات هنگام نوشتن یک اسکریپت، شما نیاز دارید که تصمیم های متفاوتی در مقابل نتایج مختلف بگیرید، برای تحقق این موضوع از جملات شرطی استفاده می کنیم.
انواع جملات شرطی در PHP:
- ... if:هنگامی که شرط درست باشد، دستور مقابل if اجرا می شود.
- if... else: اگر شرط درست باشد دستور مقابل if وگرنه دستور مقابل else اجرا می شود.
- if... elseif... else: برای اجرای یک دستور از بین چند دستور کاربرد دارد.
- PHP Switch: برای انتخاب و اجرای یک دستور از بین چند دستور استفاده می شود.
دستور if
نحوه استفاده:
if (Condition)
{
Statement 1
Statement 2
...
}دستور(Statement) مورد نظر تنها موقعی اجرا می شود که شرط(Condition) برقرار باشد، یعنی مقدار آن برابر true باشد.
مثال: در کد PHP زیر اگر امروز جمعه باشد، جمله "Have a nice weekend" چاپ می شود.
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri") echo "Have a nice weekend!";
?>
</body>
</html>دستور if...else
این دستور که در واقع می تواند کامل کننده if باشد، تعیین می کند که اگر شرط درست نبود چه دستوری اجرا شود.
نحوه استفاده:
if (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;مثال: در مثال زیر اگر امروز جمعه باشد جمله "Have a nice weekend" چاپ می شود وگرنه جمله "Have a nice day" چاپ خواهد شد.
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
else
echo "Have a nice day!";
?>
</body>
</html>دستور if...elseif....else
همان طور که در بالا گفته شد این نوع if برای اجرای یک دستور از بین چند دستور کاربرد دارد.
نحوه استفاده:
if (condition)
code to be executed if condition is true;
elseif (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;مثال:در مثال زیر اگر امروز جمعه باشد جمله "Have a nice weekend" چاپ می شود و اگر یکشنبه بود جمله "Have a nice Sunday" چاپ می شود وگرنه جمله "Have a nice day" چاپ خواهد شد.
<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
elseif ($d=="Sun")
echo "Have a nice Sunday!";
else
echo "Have a nice day!";
?>
</body>
</html>توجه: نوع دیگر اجرای دستورات کنترلی(مثال):
if ($i == 1):
echo "i is 1";
$i+=2;
elseif ($i == 2):
echo "i is 2";
$i+=3;
else:
echo "is not 1 or 2";
$i-=1;
endif;برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
حذف اطلاعات یک جدول در PHP
حذف اطلاعات یک جدول با استفاده از MySQLi و PDO
دستور DELETE FROM برای حذف رکورد از یک جدول استفاده می شود.
نحوه استفاده:
DELETE FROM table_name
WHERE some_column = some_valueنکته: قسمت WHERE مشخص می کند که چه رکورد یا رکوردهایی باید حذف بشوند، توجه داشته باشید که اگر این قسمت را در نظر نگیرید کلیه رکوردهای جدول حذف می شوند.
برای کسب اطلاعات بیشتر در مورد SQL، به لینک روبرو مراجعه فرمایید: آموزش SQL-مقدمه
به جدول "MyGuests" که در فصل های قبلی همین آموزش ایجاد شده است توجه کنید:
id firstname lastname email reg_date 1 John Doe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-22 14:26:15 2 Mary Moe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-23 10:22:30 3 Julie Dooley این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-26 10:48:23 در مثال زیر، رکوردی که id آن برابر با 3 است در جدول "MyGuests" حذف خواهد شد:
مثال(MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط
$conn = new mysqli($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// تنظیم کوئری حذف
$sql = "DELETE FROM MyGuests WHERE id=3";
if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . $conn->error;
}
$conn->close();
?>مثال(MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط
$conn = mysqli_connect($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// تنظیم کوئری حذف
$sql = "DELETE FROM MyGuests WHERE id=3";
if (mysqli_query($conn, $sql)) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . mysqli_error($conn);
}
mysqli_close($conn);
?>مثال(PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// تنظیم حالت برخورد با خطاها
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// تنظیم کوئری حذف
$sql = "DELETE FROM MyGuests WHERE id=3";
// بدلیل اینکه کوئری نتیجه ای را برنمی گرداند از تابع زیر استفاده می کنیم
$conn->exec($sql);
echo "Record deleted successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>نتیجه کار بعد از حذف رکورد:
id firstname lastname email reg_date 1 John Doe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-22 14:26:15 2 Mary Moe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-23 10:22:30 برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
حذف محصول از سبد خرید
جلسه ی هشتم طراحی یک فروشگاه اینترنتی-حذف محصول از سبد خرید
در قسمت اول از این جلسه، به آموزش 'حذف محصول از سبد خرید' خواهیم پرداخت.
آنچه که در قسمت قبل طراحی شد
در قسمت قبل، موارد کلی زیر آموزش داده شدند:
- ایجاد قسمت های قیمت کل و ورود به درگاه پرداخت در سبد خرید
مشاهده ی آنچه که در قسمت قبل طراحی شد:
آنچه که در قسمت 'حذف محصول از سبد خرید' خواهید آموخت
در قسمت 'حذف محصول از سبد خرید' موارد زیر آموزش داده خواهند شد:
توضیح اجمالی:
- نحوه ی حذف محصول از سبد خرید با استفاده از جی کوئری
توضیح تفصیلی:
- انجام کدنویسی جی کوئری برای دکمه ی حذف محصول از سبد خرید.
- استفاده از ajax برای حذف محصول.
- حذف li مورد نظر از سبد خرید به صورت آنی
- تعریف id یا کلاس برای دکمه های ضربدری شکل.
حذف محصول از سبد خرید
چون که قرار است ما، دستورات جی کوئری و ajax را زمانی اجرا کنیم که کاربر روی این ضربدر های قرمز کلیک می کند، پس بهتر است که به این ضربدرها، یک آی دی و یا کلاس خاص بدهیم، تا بتوانیم در دستورات جی کوئری به سادگی به این علامت های ضربدر دسترسی داشته باشیم:
یعنی در جایی که در فایل top.php آمدیم و محصولاتمان را از tblsabad دریافت کردیم، و سپس یک li را echo کردیم که در داخل این li علامت ضربدر هم وجود داشت، یک آی دی را تحت عنوان delete مشخص کنیم:
پس id این ضربدر های قرمز برابر با delete شد. حالا اگر که صفحه را رفرش کنیم، و کلید f12 را فشار دهیم، می بینیم که id این ضربدر ها، delete می باشد. این آی دی باعث می شود که ما کدهای جی کوئری مان را بتوانیم راحت تر بنویسیم.
حالا به سراغ صفحه ی left.php می رویم. درون این قسمت که ما تگ اسکریپت را باز کردیم و دستورات قبلی را نوشتیم، حال می آییم و یک دستور جدید را هم اجرا می کنیم. حال می خواهیم ببینیم که سلکتور ما در اینجا، چه چیزی است. یعنی در چه زمانی می خواهیم عملیات delete برای محصول را انجام بدهیم؟ مشخص است که زمانی می خواهیم این کار را انجام دهیم که کاربر روی دکمه ی delete کلیک می کند. پس در اینجا ما سلکتور خودمان را مشخص می کنیم:
کد
$("#sabad1 li #delete").clickاین می شود همان سلکتور ما. زمانی که کاربر بر روی این سلکتور کلیک می کند، یک تابع باید اجرا شود:
دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:
- شماره جلسه: 8
- نام فایل ویدئو: 31
- فرمت فایل: mp4.
نقطه ی شروع بحث بالا (حذف محصول از سبد خرید) در ویدئو: 03:08
- ایجاد قسمت های قیمت کل و ورود به درگاه پرداخت در سبد خرید
حفظ مقادیر فرم در PHP
در این آموزش نحوه ی جلوگیری از خالی شدن فیلدهای فرم، زمانی که کاربر روی دکمه submit کلیک می کند را نشان خواهیم داد.
حفظ مقادیر فرم در PHP
زمانی که کاربر، مقادیر فیلدهای فرم را تنظیم و روی دکمه submit کلیک می کند، تمام فیلدها، مقادیرشان را از دست می دهند. حالا تصور نمایید که کاربر، در ورود اطلاعات یک فیلد (مثلاً فیلد "ایمیل") خطایی داشته باشد، بنابراین باید از ابتدا شروع به وارد کردن اطلاعات کند...!
بمنظور حفظ مقادیر فیلدهای فرم، برای فیلدهای متنی، باید یک کد PHP کوچک در خصوصیت value تگ <input> قرار دهیم. همچنین برای عنصر <textarea> باید کد PHP را بین تگ های باز و بسته <textarea> و </textarea> قرار دهیم. این قطعه کدها، مقادیر متغیرهای name, $email, $website, $comment$ را نمایش می دهند.
سپس، در مورد فیلد "جنسیت" باید مشخص کنیم که کدام گزینه انتخاب شده است. بنابراین باید خصوصیت ckecked آنرا دستکاری کنیم (نه خصوصیت value):
نام: <input type="text" name="name" value="<?php echo $name;?>">
ایمیل: <input type="text" name="email" value="<?php echo $email;?>">
وب سایت: <input type="text" name="website" value="<?php echo $website;?>">
توضیحات: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
جنسیت:
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="female") echo "checked";?>
value="female">زن
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="male") echo "checked";?>
value="male">مردمثال تکمیل شده اعتبارسنجی فرم در PHP
در زیر، کد تکمیل شده اعتبارسنجی فرم در PHP آمده است:
مثال (حفظ مقادیر فرم در PHP)
<!DOCTYPE HTML>
<html>
<head>
<style>
body {direction:rtl;}
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"]))
{$nameErr = "Name is required";}
else
{
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"]))
{$emailErr = "Email is required";}
else
{
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"]))
{$website = "";}
else
{
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
{
$websiteErr = "Invalid URL";
}
}
if (empty($_POST["comment"]))
{$comment = "";}
else
{$comment = test_input($_POST["comment"]);}
if (empty($_POST["gender"]))
{$genderErr = "Gender is required";}
else
{$gender = test_input($_POST["gender"]);}
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>مثال اعتبارسنجی فرم ها در PHP</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div>
<span>نام:</span><input type="text" name="name" value="<?php echo $name;?>">
<span class="error">*</span>
</div>
<div>
<span>ایمیل:</span><input type="text" name="email" value="<?php echo $email;?>">
<span class="error">*</span>
</div>
<div>
<span>وب سایت:</span>
<input type="text" name="website" value="<?php echo $website;?>">
<span class="error"></span>
</div>
<div>
<span>توضیحات:</span><textarea name="comment" rows="5" cols="40">
<?php echo $comment;?>
</textarea>
<span class="error">*</span>
</div>
<div>
<span>جنسیت:</span>
<input type="radio" name="gender" value="female" <?php if (isset($gender) && $gender=="female") echo "checked";?>>زن
<input type="radio" name="gender" value="male" <?php if (isset($gender) && $gender=="male") echo "checked";?>>مرد
</div>
</div><input type="submit" name="submit" value="ارسال اطلاعات"></div>
</form>
<?php
if ($nameErr!="" || $emailErr!="" || $genderErr!="" || $websiteErr!="")
echo "<span style='color:red' >
$nameErr <br /> $emailErr <br /> $genderErr <br /> $websiteErr
</span>";
else
{
echo "<br /><h2>خروجی کدتان</h2>";
echo "نام :$name";
echo "<br />";
echo "ایمیل: $email";
echo "<br />";
echo "وب سایت: $website";
echo "<br />";
echo "توضیحات: $comment";
echo "<br />";
echo "جنسیت: $gender";
}
?>
</body>
</html>خروجی کد بالا:
مثال اعتبارسنجی فرم ها در PHP
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
حلقه for در PHP
حلقه for در PHP
از حلقه for زمانی که تعداد دفعات اجرای دستورات را بدانید استفاده می شود یعنی دستورات داخل حلقه از یک عدد مشخص به تعدادی مشخص تکرار می شود.
نحوه استفاده:
for (init; condition; increment)
{
code to be executed;
}پارامترها:
- init: تنها یکبار در ابتدای حلقه اجرا می شود، و اغلب برای تعریف یک شمارنده استفاده می شود.
- condition: ارزیابی تکرار حلقه، اگر شرط برقرار باشد دستورات اجرا می شوند، در غیر اینصورت دستورات ادامه نمی یابند.
- increment: بعد از هربار اجرای دستورات حلقه، این دستور اجرا می شود و اغلب برای افزایش شمارنده استفاده می شود.
نکته:
- در for می توان هرکدام از پارامترهای بالا را خالی گذاشت، به این صورت که اگر شرط خالی باشد، مقدار آن برابر با true در نظر گرفته می شود و حلقه بینهایت بار اجرا میشود! (البته با استفاده از دستور break که بعداً به آن اشاره می شود، می توان آن را قطع نمود)
- در for همچنین می توان برای پارامترهای بالا چند دستور مختلف را اجرا نمود به اینصورت که با علامت "," آنها را باید از یکدیگر جدا نمود.
مثال:
در مثال زیر یک حلقه تعریف شده که با i=1 شروع می شود، و تا زمانی که i<=5 باشد ادامه خواهد یافت و به مقدار i در هر بار اجرای حلقه یک واحد اضافه می شود.
<html>
<body>
<?php
for ($i=1; $i<=5; $i++)
{
echo "The number is " . $i . "<br />";
}
?>
</body>
</html>خروجی کد بالا:
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5حلقه foreach درPHP
مخصوص کار با آرایه ها می باشد.
نحوه استفاده:
foreach ($arrayas $value)
{
code to be executed;
}این دستور تمام مقادیر آرایه را یکی یکی از ابتدایی تا انتهایی به درون value می ریزد و دستورات را اجرا می نماید.
نکته:مقدار value کپی داده می باشد و با تغییر آن داده اصلی در آرایه تغییری نمی کند، اما با قرار دادن علامت "&" در ابتدای value یک نشانگر از آن برگردانده می شود، بدین معنا که با تغییر آن داده اصلی درون آرایه نیز تغییر می کند.
مثال1:مثال زیر یک حلقه را نشان می دهد که مقادیر گرفته شده از یک آرایه را چاپ می کند.
<html>
<body>
<?php
$x=array("one","two","three");
foreach ($x as $value)
{
echo $value . "<br />";
}
?>
</body>
</html>خروجی کد بالا:
one
two
threeمثال2: با قرار دادن علامت "&" در ابتدای value اگر در حلقه این مقدار تغییر کند، داده اصلی نیز تغییر می کند.
<html>
<body>
<?php
$arr=array(1,2,3,4);
foreach($arr as &$value)
{
echo $value;
echo " ";
$value *= 2;
}
echo "<br />";
foreach($arr as $value)
{
echo $value;
echo " ";
}
?>
</body>
</html>خروجی کد بالا:
1 2 3 4
2 4 6 6مثال3: چاپ کلید و مقدار آن (
key and value
)<html>
<body>
<?php$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $k => $v) {
echo "a[$k] => $v"."<br />";
}
?>
</body>
</html>خروجی کد بالا:
a[one] => 1
a[two] => 2
a[three] => 3
a[seventeen] => 17مثال4: چاپ کلید و مقدار آن (
key and value
) در یک آرایه دو بعدی<html>
<body>
$families = array("Ahmadi"=>array("a"=>"Ali","b"=>"Reza","c"=>"Sara"),
"Naderi"=>array("a"=>"Amir"),
"Mohamadi"=>array("a"=>"Poya","b"=>"Parniya")
);
foreach ($families as $k => $v)
foreach ($v as $b=>$v)
echo "families[$k][$b] => $v "."<br />";
</body>
</html>خروجی کد بالا:
families[Ahmadi][a] => Ali
families[Ahmadi][b] => Reza
families[Ahmadi][c] => Sara
families[Naderi][a] => Amir
families[Mohamadi][a] => Poya
families[Mohamadi][b] => Parniyaبرای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
حلقه ها در PHP
حلقه ها در PHP
اغلب مواقعی که کد می نویسیم، می خواهیم که یک مجموعه از دستورات بارها و بارها اجرا بشوند، بجای اینکه آن چند خط که اغلب یکسان هستند را در دستورات تکرار کنیم از حلقه ها استفاده می کنیم.
انواع دستورات حلقه ای در PHP:
- while:تا زمانی که شرط حلقه درست باشد، دستورات اجرا می شود.
- do...while:دستورات داخل حلقه چه شرط حلقه درست باشد و چه نباشد برای یک بار اجرا می شود، و در مراحل بعدی اگر شرط حلقه درست بود، دستورات اجرا می شوند.
- for:دستورات داخل حلقه از یک عدد مشخص به تعدادی مشخص تکرار می شود.
- foreach:برای کار با آرایه ها کاربرد دارد.
حلقه while
این دستور تا زمانی که شرط برقرار باشد دستورات را اجرا می کند و شرط قبل از اجرای دستورات چک می شود. بدین معنا که اگر در وسط اجرای دستورات متغیرها طوری تغییر کنند که شرط برقرار نباشد، دستورات همچنان تا پایان اجرا می شوند و نیز اگر شرط از ابتدا برقرار نباشد دستورات دیگر اجرا نخواهند شد.
نحوه استفاده:
while (condition)
{
code to be executed;
}مثال:
در مثال زیر یک حلقه تعریف کرده ایم که با i=1 شروع می شود و دستورات داخل حلقه تا زمانی که i<=5 باشد ادامه می یابد، البته توجه داشته باشید که مقدار متغیر i در داخل حلقه هر بار یک واحد اضافه می شود و اگر این تغییر، شرط حلقه را false کند، دستورات داخل حلقه تا پایان حلقه ادامه خواهد یافت.
<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br />";
$i++;
}
?>
</body>
</html>خروجی کد بالا:
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5دستور do...while
این دستور شباهت بسیار زیادی به دستور while دارد با این تفاوت که شرط در پایان اجرای دستورات چک می شود یعنی به این صورت که اگر از ابتدا هم شرط برقرار نباشد، دستورات یکبار اجرا می شوند و بعد شرط چک می شود.
نحوه استفاده:
do
{
code to be executed;
}
while (condition);مثال:
تفاوت این مثال با مثال قبلی در دو چیز است:
- چون شرط حلقه در پایان دستورات چک می شود، دستورات داخل حلقه حتماً برای یک بار اجرا می شوند.
- چون دستور ;++i$ قبل از دستور چاپ است، بنابراین اعداد از 2 تا 6 چاپ می شود.
<html>
<body>
<?php
$i=1;
do
{
$i++;
echo "The number is " . $i . "<br />";
}
while ($i<=5);
?>
</body>
</html>خروجی کد بالا:
The number is 2
The number is 3
The number is 4
The number is 5
The number is 6حلقه forو foreach در فصل بعدی توضیح داده خواهد شد.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
درج اطلاعات در PHP
درج کردن اطلاعات در MySQL با استفاده از MySQLi و PDO
بعد از اینکه پایگاه داده و جداول را ایجاد کردیم، حالا نوبت به درج اطلاعات می رسد.
دستور INSERT INTO برای درج کردن یک رکورد جدید در جدول استفاده می شود.
در اینجا چند قانون ساختاری وجود دارد که باید پیروی کنید:
- کوئری های SQL در PHP باید با علامت کوتیشن محصور شوند.
- مقادیر رشته ای استفاده شده در کوئری ها باید با علامت کوتیشن محصور شوند.
- اعداد را نباید با کوتیشن محصور کنید.
- کلمه NULL نباید با کوتیشن محصور شود.
به دو صورت می توان از دستور INSERT INTO استفاده کرد:
1- در این روش نیازی نیست که نام ستونها ذکر شود:
INSERT INTO table_name
VALUES (value1, value2, value3,...)2- در این روش باید نام ستون ها و مقادیر متناظرشان ذکر شود:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)برای کسب اطلاعات بیشتر در مورد SQL، به لینک روبرو مراجعه فرمایید: آموزش SQL-مقدمه
در مطلب قبل، یک جدول با نام "MyGuests" با 5 فیلد "id" و "firstname" و "lastname" و "email" و "reg_date" ایجاد کردیم، حالا اجازه دهید تا جدول را با اطلاعات پر کنیم.
توجه: اگر هنگام تعریف جدول، برای یک ستون، گزینه AUTO_INCREMENT را تنظیم کرده باشیم (مانند فیلد id) و یا فیلد مورد نظر از نوع TIMESTAMP باشد (مانند فیلد reg_date) هنگام درج اطلاعات نیازی به مشخص کردن مقدار نیست و MySQL بصورت اتوماتیک آنها را پر خواهد کرد. مثال های زیر یک رکورد جدید به جدول "MyGuests" اضافه خواهند کرد:
مثال (MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe',این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>مثال(MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe',این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>توجه: همانطور که قبلاً گفته شد در روش MySQLi Procedural برای اجرای کوئری ها، باید از تابع ()mysqli_query استفاده کرد، این تابع توسط Connectionی که برقرار شده برای ارسال کوئری به MySQL استفاده می شود.
مثال(PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe',این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ')";
// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
دستور prepare در PHP
دستورات آماده برای مقابله با SQL injection ها بسیار کارآمداند.
دستورات آماده (Prepared) و Bind کردن پارامترها
با استفاده از دستورات آماده یا Prepared، می توانید یک کوئری یکسان را به تعداد دفعات دلخواه با راندمان بالا اجرا نمایید.
نحوه عملکرد دستورات آماده یا Prepared:
- Prepare: با استفاده از این دستور می توانید قالبِ یک کوئری SQL را ایجاد کرده و به پایگاه داده ارسال نمایید. در واقع دلیل استفاده از کلمه قالب در اینجا این است که بجای پارامترهای لازم در کوئری، از علامت سوال (؟) استفاده می کنیم.
مثال (دستور prepare در PHP)
INSERT INTO MyGuests VALUES(?, ?, ?)
- حالا قالب SQL ارسال شده، توسط پایگاه داده، تجزیه و کامپایل می شود و در ادامه بهینه ساز کوئری (query optimization) روی آن اجرا می شود و در نهایت نتیجه کار بدون اجرا در پایگاه داده ذخیره می شود.
- Execute: در ادامه ی اسکریبت، مقادیر لازم را به پارامترهای کوئری مان Bind می کنیم و با استفاده از دستور Execute، کوئری را اجرا می کنیم. اما نکته ای که وجود دارد این است که کوئری ما همچنان در پایگاه داده وجود دارد و می توانیم مجدداً آنرا با پارامترهای جدید اجرا کنیم...!
روش استفاده از دستورات آماده در مقایسه با اجرای مستقیم کوئری ها دو مزیت اصلی دارد:
- دستورات آماده، زمان تجزیه (parsing) کوئری را کاهش می دهند و این در حالی است که برای مواقعی که قصد داریم یک کوئری را به دفعات اجرا کنیم، این زمان فقط یکبار محاسبه خواهد شد.
- از آنجایی که برای هر بار اجرای کوئری، فقط باید پارامترها را ارسال کنیم، بنابراین پهنای باند کمتری مصرف خواهد شد.
- دستورات آماده برای مقابله با SQL injection ها بسیار کارآمد هستند و این بخاطر استفاده از یک پروتوکول متفاوت برای انتقال مقادیر پارامترهاست.
تزریق SQL یا SQL injection چیست؟
SQL injection زمانی رخ می دهد که شما از کاربر یک ورودی می خواهید ( مثلا نام خانوادگی ، سن و... ) و کاربر بجای نام، یک دستور MySQL را وارد می نماید و این دستور بدون اطلاع شما بر روی دیتابیس اجرا می شود.
مثال (دستور prepare در PHP)
$username="''; Delete From users";
$query="Select From users where usernamr=$username";
echo $query;نتیجه کد بالا
Select From users where usernamr= ''; Delete From users
توضیح: همان طور که در کد بالا مشاهده می کنید، ورودی مخرب، باعث می شود که دو کوئری روی پایگاه داده اجرا شود و از آن مهمتر، کوئری دوم است که باعث می شود تا تمام اطلاعات جدول users حذف شود...!
دستورات آماده یا Prepared در MySQLi
در مثال زیر،نحوه ی استفاده از دستورات آماده یا Prepared و همچنین نحوه ی Bind کردن پارامترها در MySQLi نشان داده شده است:
مثال(MySQLi with Prepared Statements)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط به پایگاه داده
$conn = new mysqli($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// تنظیم کوئری و بایند کردن پارامترها با استفاده از دستورات آماده
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// تنظیم پارامترها و اجرای کوئری
$firstname = "John";
$lastname = "Doe";
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ";
$stmt->execute();
$firstname = "Mary";
$lastname = "Moe";
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ";
$stmt->execute();
$firstname = "Julie";
$lastname = "Dooley";
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ";
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>توضیح مثال بالا:
"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"در کوئری مان می توانیم از علامت سوال (؟) استفاده کنیم، این علامت در ادامه با یک عدد صحیح (integer)، رشته (string)، عدد اعشاری (double) یا داده های با اندازه بزرگ (BLOB - Binary Large OBject) جایگزین خواهد شد.
در ادامه نگاهی به تابع ()bind_param خواهیم انداخت:
$stmt->bind_param("sss", $firstname, $lastname, $email);با استفاده از تابع ()bind_param، می توانیم پارامترها را به کوئری SQL مان Bind کنیم و به پایگاه داده بگوییم که چه پارامترهایی داریم. همچنین با استفاده از آرگومان اول یعنی "sss"، نوع پارامترها را تعیین می کنیم. کاراکتر s به MySQL می گوید که پارمتر ما از نوع رشته (string) است.
نوع آرگومان ها می تواند یکی از چهار گزینه زیر باشد:
- i - integer
- d - double
- s - string
- b - BLOB
برای هر کدام از آرگومان ها، باید یکی از چهار مقدار بالا را تنظیم کنیم.
زمانی که نوع پارامترها را مشخص می کنیم، ریسک تزریقات SQL یا SQL injections توسط هکرها را به حداقل می رسانیم.
توجه: اگر قصد دارید که داده ی دریافتی از کاربران را در پایگاه داده ذخیره کنید، اعتبارسنجی داده ها یک امر بسیار مهم است. دستورات آماده یا Prepared در PDO
در مثال زیر،نحوه ی استفاده از دستورات آماده یا Prepared و همچنین نحوه ی Bind کردن پارامترها در PDO نشان داده شده است:
مثال(PDO with Prepared Statements)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
//ایجاد ارتباط
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// تنظیم حالت برخورد با خطاها
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// تنظیم کوئری و بایند کردن پارامترها با استفاده از دستورات آماده
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
// تنظیم پارامترها و اجرای کوئری
$firstname = "John";
$lastname = "Doe";
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ";
$stmt->execute();
// تنظیم پارامترها و اجرای کوئری
$firstname = "Mary";
$lastname = "Moe";
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ";
$stmt->execute();
// تنظیم پارامترها و اجرای کوئری
$firstname = "Julie";
$lastname = "Dooley";
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ";
$stmt->execute();
echo "New records created successfully";
}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;
?>برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- Prepare: با استفاده از این دستور می توانید قالبِ یک کوئری SQL را ایجاد کرده و به پایگاه داده ارسال نمایید. در واقع دلیل استفاده از کلمه قالب در اینجا این است که بجای پارامترهای لازم در کوئری، از علامت سوال (؟) استفاده می کنیم.
دستور select در PHP
انتخاب داده ها از پایگاه داده MySQL
دستور SELECT برای انتخاب داده از یک جدول استفاده می شود.
نحوه استفاده:
می توانیم با استفاده از نام ستون ها، تعداد محدودی از ستون های یک جدول را انتخاب کنیم:
SELECT column_name(s) FROM table_nameیا می توانیم با استفاده از کاراکتر *، تمام ستون های یک جدول را انتخاب کنیم:
SELECT * FROM table_nameبرای کسب اطلاعات بیشتر در مورد SQL، به لینک روبرو مراجعه فرمایید: آموزش SQL-مقدمه
انتخاب داده ها با استفاده از MySQLi
در مثال زیر، ستون های id و firstname و lastname از جدول MyGuests در صفحه نمایش داده خواهند شد:
مثال(MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ارتباط به پایگاه داده
$conn = new mysqli($servername, $username, $password, $dbname);
// مطمئن شدن از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
//اجرای کوئری و قرار دادن نتیجه در متغیر
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// نمایش داده ها به ازای هر ردیف
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
//بستن ارتباط با پایگاه داده
$conn->close();
?>خروجی کد بالا:
id: 1 - Name: John Doe
id: 2 - Name: Mary Moe
id: 3 - Name: Julie Dooleyتوضیح مثال:
- ابتدا یک کوئری SQL را تنظیم کردیم که ستون های id و firstname و lastname از جدول MyGuests را انتخاب می کند. نتیجه اجرای کوئری توسط تابع ()query در متغیر result$ ذخیره می شود.
- حالا نتیجه کوئری در متغیر result$ است و می خواهیم که آنها را در خروجی نمایش دهیم، اما قبل از آن باید مطمئن شویم که کوئری ما نتیجه ای را در بر داشته است، بنابراین با استفاده از تابع ()num_rows چک می کنیم که ردیف ها بزرگتر از صفر باشد.
- با استفاده از تابع ()fetch_assoc ردیف اول داده ها برگردانده می شود، در یک اسکریبت با هر بار فراخوانی این تابع ردیف های بعدی بر می گردد.
- با استفاده از حلقه while و با هر بار فراخوانی تابع ()fetch_assoc نتیجه در متغیر row$ ذخیره می شود و این کار تا آخرین رکورد ادامه می یابد و اطلاعات ستون ها چاپ می شود.
در مثال زیر نیز با استفاده از روش MySQLi procedural ستون های id و firstname و lastname از جدول MyGuests در صفحه نمایش داده خواهند شد:
مثال(MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط با پایگاه داده
$conn = mysqli_connect($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// نمایش داده ها به ازای هر ردیف
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>خروجی کد بالا:
id: 1 - Name: John Doe
id: 2 - Name: Mary Moe
id: 3 - Name: Julie Dooleyهمچنین می توانید خروجی را در یک جدول HTML نمایش دهید:
مثال(MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط با پایگاه داده
$conn = new mysqli($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Name</th></tr>";
// نمایش داده ها به ازای هر ردیف
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
?>خروجی کد بالا، البته با استایل زیر:
<style>
table, th, td {
border: 1px solid black;
}
</style>خروجی:
ID Name 1 John Doe 2 Mary Moe 3 Julie Dooley انتخاب داده ها با استفاده از PDO + دستورات آماده
در مثال زیر، از دستورات آماده (prepared statements) استفاده شده است.
در مثال زیر نیز با استفاده از روش PDO ستون های id و firstname و lastname از جدول MyGuests در یک جدول HTMLی نمایش داده خواهند شد:
مثال(PDO)
<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";
class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
}
function beginChildren() {
echo "<tr>";
}
function endChildren() {
echo "</tr>" . "\n";
}
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>خروجی کد بالا:
Id Firstname Lastname 1 John Doe 2 Mary Moe 3 Julie Dooley برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.