PDA

View Full Version : آموزش عملیات crud با استفاده از توابع (functions) و برنامه نویسی رویه ای



milyooner
چهارشنبه 12 شهریور 1393, 21:01 عصر
با توجه به اینکه خیلی از دوستان تازه کار برنامه نویسی رو به صورت رویه ای (تابع) شروع میکنند و یا کد های مربوط به دیتابیس و php رو در کنار html می نویسند تصمیم گرفتم آموزش ساده ای برای عملیات crud آماده کنم تا براحتی بتونید پروژه های خودتون رو با تعداد خطوط کمتری توسعه بدید و از پیچیده شدن بیش از اندازه کد جلوگیری کنید.
برخی از دوستان برنامه نویس هم که از فریم ورک ها استفاده میکنند توانایی چندانی برای توسعه ندارند چون با اصول اولیه برنامه نویسی آشنا نشدند فقط در همان چارچوبی که فریم ورک ها در اختیارشون میذاره میتونند فکر کنند و کد بزنند که این اصلا خوب نیست و فکر میکنند هم اینکه میتونند یه کلاس بنویسند و از روش یه مدل ایجاد کنند و کد بزنند یعنی شی گرایی و حرفه ای بودند ...
همین اول بگم این آموزش در سطح مقدماتی و متوسط می باشد دوستانی که با فریم ورکها کار میکنند با شی گرایی آشنایی دارند ,مفهوم MVC و... رو میدونند این آموزش استفاده چندانی براشون نداره.
در این آموزش سعی شده نگاه به دوستان تازه کار باشه که آشنایی با فریم ورک ها ندارند و تازه و کد نویسی رو شروع کردند. بر همین اساس ما از توابع mysql برای کد نویسی استفاده میکنیم تا در آینده به مباحث مربوط به شی گرایی و استفاده از PDO و موارد مشابه بپردازیم.


فرض میکنیم میخواهیم یک کوئری به دیتابیس بزنیم و مقادیر جدولی را بازیابی کنیم در این صورت کدی شبیه زیر خواهیم داشت:
? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
$result = mysql_query("SELECT * FROM `users`");





حال اگر بخواهیم از دستورات شرطی و محدود سازی استفاده کنیم کوئری ما بیشترو بیشتر شده و شاید هم در یک صفحه نیاز داشته باشیم چند کوئری همزمان به دیتابیس بزنیم مسلما در این حالت کدهای ما بسیار شلوغ شده و خوانایی لازم را نخواهد داشت و بیشتر باعث سردرگمی خودمان می شود.
در اینصورت اگر بتوانیم با نوشتن توابعی ساده مواردی که لازم است بدست آوریم میتوانیم در سایر پروژه های بعدی هم به همین سبک عمل کرده و سرعت کد نویسی خودمان را بالا ببریم.برخی از دوستان تنها یک تابع به نام query مینویسند و تمامی کوئری هارا به وسیله همین تابع اجرا می کنند اما در این آموزش ما 4 کوئری ایجاد کرده و بر حسب نیاز از آنها استفاده میکنیم.
قبل از هرچیز یک تابع برای اتصال به دیتابیس ایجاد میکنیم:
? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
2
3
4
5
6
7
function Connect()
{
$connect = mysql_connect(HOSTNAME,DBUSER,DBPASS) or die('Can Not Connect To DB: '.mysql_error());
$select = mysql_select_db(DBNAME) or die('Can Not Select DB: '.mysql_error());
if($select)
return $select;
}





برای عملیات SELECT می توانیم تابعی مشابه آنچه که در زیر می بینید داشته باشیم:
? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function Select($table,$wherefiled='',$wherevalue='',$and=' ',$or='',$order='',$sort='',$start='',$max='',$ran d='',$like='')
{
Connect();
if($order!='' && $sort!='')
$ord = " ORDER BY `".$order."` ".$sort;
else $ord = $sort ='';
if($wherefiled!='' && $wherevalue!='' && $like=='')
$where = " WHERE `".$wherefiled."` = ".$wherevalue;
elseif($wherefiled!='' && $wherevalue!='' && $like=='1'){
$keyword = "'%".$wherevalue."%'";
$where = " WHERE `".$wherefiled."` LIKE ".$keyword;
}
else $where ='';
if($start !='' && $max != '')
$limit = " LIMIT ".$start.",".$max;
elseif($start !='' && $max=='')
$limit = " LIMIT ".$start;
elseif($rand=='1')
$limit = " ORDER BY RAND() LIMIT 10 ";
else $limit = '';
$query = "SELECT * FROM `".$table."` ".$where.$and.$or.$ord.$limit;
//die($query);
mysql_query("SET NAMES UTF8;");
$result = mysql_query($query);
if($result)
return $result;
else die('Invalid Query : ' . mysql_error());
}





فرض کنید همان دستور بالا را بخواهیم با همین تابع اجرا کنیم در اینصورت کدی مطابق زیر خواهیم داشت:
? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
$resutl = Select('users');





می بینید که کدی بسیار خوانا و ساده داریم که هر جا بخواهیم برای هر جدولی و هر سایتی می توانیم از آن استفاده کنیم .
مثال دیگر در مورد استفاده همین کد:
? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
$resutl = Select('users','username','partiaweb');





کد بالا از جدول users مقداری را که فیلد username آن برابر با partiaweb باشد را پیدا می کند.
? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
2
$resutl = Select ('users','','','','','regdate','DESC');
$result = Select('users','username','partiaweb',' AND `name`='hami');





به همین ترتیب با توجه به تابع می توانید کوئری های مختلفی را برای خود ایجاد نمایید. تابع بالا قابل توسعه می باشد که با توجه به نیاز خود می توانید موارد استفاده شده را کم یا زیاد کنید.
برای توابع دیگر می توانید مانند آنچه که در زیر می بینید عمل کنید:
تابع update (ویرایش اطلاعات):

? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Update($table,$up,$wherefield='',$wherevalue='')
{
Connect();
$wherevalue = trim(trim($wherevalue));
if($wherefield!='' && $wherevalue!='')
$where = " WHERE `".$wherefield."` = '".$wherevalue."' ";
else $where ='';
$query = "UPDATE `".$table."` SET ".$up. $where;
mysql_query("SET NAMES UTF8;");
$result = mysql_query($query);
if($result)
return $result;
else die('Invalid Query : ' . mysql_error());
}





تابع insert(درج اطلاعات):

? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
2
3
4
5
6
7
8
9
10
11
function Insert($table,$fields,$value)
{
Connect();
$value = trim(trim($value));
$query = " INSERT INTO `".$table."` (".$fields.") VALUES (".$value.") ";
mysql_query("SET NAMES UTF8;");
$result = mysql_query($query);
if($result)
return $result;
else die('Invalid Query : '. mysql_error());
}





تابع delete (حذف اطلاعات):

? (http://www.partiaweb.com/page/article/14/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-crud--%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%28functions%29-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C/#)


1
2
3
4
5
6
7
8
9
function Delete($table,$wherefield,$wherevalue)
{
Connect();
$query = " DELETE FROM `".$table."` WHERE `".$wherefield."` = ".$wherevalue;
$result = mysql_query($query) or die(mysql_error());
if($result)
return true;

}





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

منبع: www.partiaweb.com