استفاده از دستورات Crud در Php جهت آشنایی بیشتر با دستورات بانک اطلاعاتی

مهر ۲۴, ۱۳۹۲ توسط : Mk_design

این دستورات و کدها شاید واسه یک برنامه نویس که اولین زبان برنامه نویسی او Php باشد ساده باشد , ولی واسه کسی که به تازگی وارد حیطه برنامه نویسی Php شده یا خواهان وارد شدن باشد کدهای ارزشمند و قابل توجهی باشند در این آموزش قصد استفاده از دستورات Crud یعنی Create , Read , Update و Delete را داریم . جهت کار کردن با دستورات بانک اطلاعاتی در Php باید بتوانید به سرور مورد نظر سپس به بانک اطلاعاتی مورد نظر سپس با انتخاب جدول مورد نظر , به اعمال Query میپردازیم .

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

ارتباط میان Php و Mysql

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


/* 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 استفاده کردیم که آرگومانهای ورودی به ترتیب

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

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

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

دستور Insert

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

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

$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 یکسان میباشد . ولی همانطور که گفته شد قبل از اجرای دستور باید چک کنیم که آیا این رکورد در پایگاه داده وجود دارد یا خیر و علاوه بر این باید چک کنیم که آیا اطلاعات همسانی با اطلاعات جدیدی که میخواهیم ویرایش کنیم در پایگاه داده وجود دارد یا خیر .

$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 هم دقیقا مثل دستور ویرایش از وجود داشتن رکورد مورد نظر باید اطمینان پیدا کنیم .

$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 بازیابی و نمایش دهیم .

$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 که نتیجه کد بالا به صورت زیر میباشد .

datagrid

بازدید : ۶۶۹۷

آبان ۱۰, ۱۳۹۲ @ ۱:۲۲ ب.ظ

با سلام من دانشجوی رشته کامپیوتر هستم . دستتون درد نکنه . ممنون

پاسخ دادن
آذر ۳, ۱۳۹۲ @ ۲:۰۹ ق.ظ

اکستنشن mysql در PHP نسخه جدید، deprecated شده و در صورت استففاده با ارور E_DEPRECATED مواجه می شوید.
بجای آن از MySQLi یا PDO استفاده کنید.

https://wiki.php.net/rfc/mysql_deprecation

پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*