pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

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

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از دستورات Crud در Php جهت آشنایی بیشتر با دستورات بانک اطلاعاتی
11-18-2013, 03:23 PM
ارسال: #1
استفاده از دستورات Crud در Php جهت آشنایی بیشتر با دستورات بانک اطلاعاتی
این دستورات و کدها شاید واسه یک برنامه نویس که اولین زبان برنامه نویسی او Php باشد ساده باشد , ولی واسه کسی که به تازگی وارد حیطه برنامه نویسی Php شده یا خواهان وارد شدن باشد کدهای ارزشمند و قابل توجهی باشند در این آموزش قصد استفاده از دستورات Crud یعنی Create , Read , Update و Delete را داریم . جهت کار کردن با دستورات بانک اطلاعاتی در Php باید بتوانید به سرور مورد نظر سپس به بانک اطلاعاتی مورد نظر سپس با انتخاب جدول مورد نظر , به اعمال Query میپردازیم .

در ابتدا ما باید یک پایگاه داده داشته باشیم که این پایگاه داده میتواند حاوی ۱ یا چند جدول باشد در این آموزش ما پایگاه داده ایی به نام Crud رو با استفاده از Mysql_server ایجاد میکنیم که حاوی یک جدول به نام Info و این جدول شامل ۳ فیلد به نامهای Name , Family , Id میباشد .
ارتباط میان Php و Mysql

بعد از ساختن پایگاه داده , در این مرحله باید بتوانیم ارتباطی میان Php و Mysql برقرار کنیم تا بتوانیم Query مورد نظر را بر روی جداول پایگاه داد اعمال کنیم جهت برقرای ارتباط به شکل زیر عمل میکنیم .

کد php:
/* Connect to server to select the database */
$con mysql_connect("localhost/127.0.0.1","root","");
if(!
$con)
    die(
"there are a problem in the connection".mysql_error());
else{
    
/* select the database after server's checking */
    
$com mysql_select_db("info",$con);
    if(!
$com)
        die(
"your database has not found".mysql_error());


Mysqli , PDO کلاسهای مجزا جهت کار کردن با دستورات بانک اطلاعاتی در Php میباشند که قابلیتهای بیشتری نسبت به توابع Mysql دارند شما میتوانید علاوه بر این توابع Mysql از این کلاسها استفاده کنید . جهت آشنایی بیشتر با این کلاسها میتوانید به این PDO , Mysqli مراجعه کنید .

همانطوری که از دستورات بالا میتوانیم مشاهده کنیم جهت وصل شدن به سرور از تابع Mysql_connect استفاده کردیم که آرگومانهای ورودی به ترتیب

Server_name : نام سروری که خواهان وصل شدن به آنرا داریم
User_name : نام کاربری که جهت وصل شدن به سرور باید تعریف شود .
Password : کلمه عبور که جهت وصل شدن به سرور باید تعریف شود .

خروجی این تابع True یا False میباشد , در صورت True بودن لینکی را که جهت وصل شدن به پایگاه داده استفاده میشود ایجاد میکند در غیر اینصورت False را برگشت خواهد داد که بلافاصله دستور شرطی IF اجرا شده و خطای موجود در آرگومانهای ورودی را با استفاده از تابع die و Mysql_error به کاربر نمایش خواهد داد

die : از این تابع جهت خارج شدن یا بستن تابعی میباشد که خطاء را ایجاد کرده است و همانند تابع exit کار میکند.
Mysql_error : تابعی جهت نمایش دادن خطای فعلی (که در ارتباطات یا دستورات فعلی پایگاه داده ایجاد شده) استفاده میشود.

در غیر اینصورت به مرحله بعدی میرویم و با استفاده از تابع Mysql_select_db بانک اطلاعاتی مورد نظر را انتخاب خواهیم کرد که این تابع دارای ۲ آرگومان به ترتیب

Database_name : نام پایگاه داده که خواهان وصل شدن به آنرا داریم
Connection : رشته اتصالی که با استفاده از تابع Mysql_connect تعریف کردیم و مقدار را در متغیری به نام Con ریختیم

بعد از پر کردن آرگومانها با مقادیر مورد نظر نتیجه را در متغیری به نام Database ذخیره میکنیم تا از صحت وجود پایگاه داده با استفاده از دستور شرطی If مطمئن شویم .
دستور Insert

بعد از وصل شدن به پایگاه داده نوبت به Query زدن میرسد .

قبل از استفاده از دستور Insert باید با استفاده از دستور Select از وجود نداشتن رکوزدی با همچنین مشخصاتی مطمئن شویم ولی در دستورهای Update و Delete برعکس میباشد و باید با استفاده از دستور Select مطمئن شویم که رکوردها در جدول مورد نظر وجود داشته باشند .

کد php:
$name "mohammad";
$family "kaab";
$id 1;
/* check if there are any same id */
$select_query mysql_query("select id from info where id = $id");
if(
$select_query){
    
/* Retrieve the total selected rows */
    
if(mysql_num_rows($select_query) == 0){
        
$insert_str "insert into info (name,family,id)";
        
$insert_str .= "values($name,$family,$id)";
        
$insert_query mysql_query($insert_str);
        if(
$insert_query)
            die(
"there are an error in the insert query".mysql_error());
        else
            echo 
"data has been successfully added";
    }else{
        echo 
"there are a same record in the database";
    }
}else{
    die(
"there are an error in the select query".mysql_error());


همانطوری که از کد بالا میتونید مشاهده کنید ۳ متغیر مطابق با فیلدهای جدول تعریف کردیم که ۳ مقدار مختلف به آن داده شده است , بعد از آن با استفاده از تابع Mysql_query نوبت به انتخاب کردن رکورد مورد نظر میرسد دلیل این کار را هم قبلاً توضیح دادیم , به این دلیل است که اگر رکوردی از قبل با این مقادیر ذخیره شده باشد رکورد دیگری با این مقادیر در جدول ذخیره نشود . بعد از ریختن نتیجه در متغیری به نام select_query بلافاصله با دستور شرطی if روبرو شده که در صورت درست بودن Query از تابع Mysql_num_rows جهت شمارش تعداد رکوردهای برگشت داده شده استفاده میکنیم که اگر تعداد آنها ۰ بود به معنی اینکه رکوردی با همچنین مشخصاتی در پایگاه داده وجود ندارد . لذا با استفاده دوباره از دستور Mysql_query مقادیر خود را در جدول مورد نظر ذخیره میکنیم .
دستور Update

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

کد php:
$name "ali";
$family "tahmasebi";
$id 2;
$search_id 1;

/* check if the record is already added */
$select_query mysql_query("select * from info where id = $search_id");
if(
$select_query){
    if(
mysql_num_rows($select_query) == 1){

        
/* check if there any same id */
        
$select_query mysql_query("select * from info where id = $id");

        if(
mysql_num_rows($select_query) == 0){

            
$update_query mysql_query("update info set name='$name' , family='$family' ,
            id=
$id where id = $search_id");

            if(
$update_query)
                echo 
"your data has been updated successfully";
            else
                die(
"there are a problem with your update Query".mysql_error());
        }
    }


فکر نکنم مشکلی با کدهای بالا داشته باشید در ابتدا رکورد مورد نظرمون رو جستجو کردیم بعد از آن اطلاعاتی جدید خود را جستجو کردیم (جهت اطمینان از اینکه اطلاعات همسانی وجود ندارند ) بعد از با استفاده از تابع Mysql_query و دستور Sql ویرایش اطلاعاتی خود را ویرایش کردیم.
دستور Delete

دستور Delete هم دقیقا مثل دستور ویرایش از وجود داشتن رکورد مورد نظر باید اطمینان پیدا کنیم .

کد php:
$id 2;
/*
Search for id and check if does it exist
is_exist >> search for id = 2 >> Retrieve the total records
*/
if(is_exist == 1){
    
$delete_query mysql_query("delete from info where id=$id");
    if(
$delete_query)
        echo 
"your data has been successfully Deleted";
    else
        die(
"there are some wrong in query".mysql_query());


دستور Select

در هر ۳ دستور بالا از دستور Select استفاده کردیم ولی فقط نتیجه را به صورت تعداد رکوردها یا سطرها بازیابی میکردیم , ولی در این قسمت میخواهیم رکوردها را به صورت جدولی یا Table بازیابی و نمایش دهیم .

کد php:
$select_query mysql_query("select * from info");
/* Start with out putting the header's table */
echo "<table>";
    echo 
"<tr>";
        echo 
"<td>آی دی</td>";
        echo 
"<td>نام</td>";
        echo 
"<td>نام خانوادگی</td>";
    echo 
"<tr/>";
/* while $fetch_record is TRUE copy the $fetch_record values to $record */
while($record mysql_fetch_array($select_query)){

    
/* $id = $record[0];  $name= $record[1]; $family = $record[2] */
    
$id $record["id"]; $name $record["name"]; $family $record["family"];

    echo 
"<tr>";
        echo 
"<td>$id</td>";
        echo 
"<td>$name</td>";
        echo 
"<td>$family</td>";
    echo 
"<tr/>"
}
echo 
"</table>"

همانطور که میدونید ما در فایل Php میتوانیم از کدهای Html , JavaScript و Css استفاده کنیم. ما در کد بالا از کدهای Html استفاده کردیم. خوب همانطوری که میتوانید مشاهده کنید در ابتدا جدول مورد نظرمان را با استفاده از تابع Mysql_query انتخاب کردیم سپس اطلاعات Select شده را با استفاده از تابع Mysql_fetch_array واکشی و در متغیری به نام Fetch_record ریختیم که نتیجه واکشی یک آرایه میباشد . تایع Mysql_fetch_array هر سطر از جدول بانک اطلاعاتی را به صورت یک آرایه تک بعدی نشان میدهد لذا جهت اینکه تمامی سطرهای بک جدول را واکشی کنیم از حلقه While یا For میتوانیم استفاده کنیم . قبل از اینکه حلقه While را اجرا کنیم همانطوری که میبیند جدولی ساختیم که مقادیر Id , name , family در ستونهای این جدول قرار میگیرند . بعد از اجرای حلقه هر بار تابع Mysql_fetch_array فراخوانی شده و مقادیم نسبت به همان سطر واکشی میشوند . همانطوری که در بلاک حلقه میتوانید مشاهده کنید بعد از واکشی اطلاعات هر داده را در تگ TD قرار دادیم به ترتیب Id , name , family که نتیجه کد بالا به صورت زیر میباشد .
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition