وباکا

آموزش تخصصی برنامه نویسی وب

جلسه شانزدهم – حذف کردن و اصلاح کردن رکوردهای بانک اطلاعاتی

در این جلسه روش حذف کردن رکورد از بانک اطلاعاتی و ویرایش رکوردهای بانک اطلاعاتی را آموزش می دهیم. برای حذف کردن یا ویرایش رکورد رکورد از لینک های حذف و ویرایش در کنار سطرهای جدول استفاده می کنیم.

 حذف رکوردهای بانک اطلاعاتی

جهت حذف یک رکورد خاص از جدول بانک اطلاعاتی، باید ابتدا مقدار کلید اصلی آن رکورد را در اختیار داشته باشیم تا بتوانیم دستور DELETE به زبان SQL را با عبارت شرطی مناسب اجرا کنیم. این مقدار را می توانیم از طریق GET به برنامه ارسال کرده و سپس با دریافت آن، در دستور حذف استفاده کنیم. فایل stud-del.php ، دانشجویی را که شماره دانشجویی آن ارسال شده است را حذف می کند.

stud-del.php

<?php

$sid=$_GET[“sid”];

require(“config.php”);

$sql= ” DELETE FROM tbl_studs WHERE sid=$sid” ;

$res = mysql_query( $sql , $conn  );

if ( $res )

echo ” success”;

else echo “error”;

mysql_close( $conn );

?>

 

در مثال فوق شماره دانشجویی از طریق GET  در یافت شده است:

$sid=$_GET[‘sid’];

برای ارسال شماره دانشجویی با روش GET  به دو روش می توان عمل کرد:

در روش اول یک فرم طراحی می کنیم که دارای یک جعبه متن برای دریافت شماره دانشجویی، و یک دکمه برای ارسال آن به برنامه حذف (stud-del.php) باشد.  این روش چندان مناسب نیست.

در روش دوم نیازی به طراحی فرم جداگانه نیست بلکه در برنامه‌ی نمایش لیست دانشجویان (stud-list.php) ، در هر سطر جدول، پیوندی به برنامه حذف ( و یا ویرایش) برقرار کرده و برای آن پارامتری بنام sid با مقدار شماره دانشجویی آن سطر اضافه می کنیم.

برای ساخت پیوند همراه پارامتر از قالب زیر استفاده می کنیم:

<a  href=”stud-del.php?sid=<?php echo $row[‘sid’];  ?>” >حذف</a>

به این منظور صفحه stud-list.php را مجدداً بصورت زیر طراحی میکنیم:

stud-list.php

<table width=”600″ border=”1″ align=”center” dir=”rtl”>
<tr>
<th>SID</th><th>NAME</th><th>AVERAGE</th><th>FID</th><th>&nbsp; </th>

</tr>
<?php
require(“config.php”);

$result = mysql_query(“SELECT * FROM tbl_studs” , $conn );
while($row = mysql_fetch_assoc($result)) { ?>
<tr>
<td><?php echo $row[‘sid’ ]; ?></td>
<td><?php echo $row[‘name’]; ?></td>
<td><?php echo $row[‘avgr’]; ?></td>
<td><?php echo $row[‘fid’ ]; ?></td>
<td>
<a href=”stud-del.php?sid=<?php echo $row[‘sid’ ]; ?>”>حذف </a> |
<a href=”stud-edit1.php?sid=<?php echo $row[‘sid’ ]; ?>”>ویرایش </a>
</td>

</tr>
<?php } 
mysql_close( $conn );
?>
</table>

اصلاح رکوردهای بانک اطلاعاتی

برای اصلاح یک رکورد جدول بانک اطلاعاتی باید :

  • مقدار کلید اصلی (مثلاً شماره دانشجویی در جدول دانشجویان) برای ویرایش تعیین شود.
  • با اتصال به بانک اطلاعای و اجرای دستور SELECT ، اطلاعات رکورد بدست آمده و در یک فرم نمایش داده شود.
  • با انجام اصلاحات در فرم و ارسال آن، با اتصال به بانک اطلاعاتی و اجرای دستور UPDATE ، رکورد مورد نظر در بانک اطلاعاتی اصلاح شود.

 

می خواهیم مشخصات یک دانشجو از جدول tbl_studs  را ویرایش کنیم:

  • برای تعیین رکورد مورد ویرایش از همان روشی استفاده می کنیم که در حذف رکورد استفاده شد. یعنی قراردادن لینک هایی در هر سطر در فایل stud-list.php به همراه پارامتری بنام sid .
  • برای دریافت شماره دانشجویی، بازیابی مشخصات کامل دانشجو از بانک اطلاعاتی و نمایش آنها بصورت فرم کد زیر را در صفحه stud-edit1.php می نویسیم:

stud-edit1.php

<html>

<body>

require(“config.php”); 

$sid=$_GET[‘sid’];

$result = mysqli_query( $conn,”select * from studs where sid=$sid”  );

$row =mysqli_fetch_assoc($result , $conn);

?>

<form action=”stud-edit2.php” method=”post”>

Sid: <input type=”text” name=”sid” value=”<?php echo $row[‘name’]; ?>” readonly/> <br>

<input type=

Name : <input type=”text” name=”name” value=”<?php echo $row[‘name’]; ?>”/>

<br>

Avgr : <input type=”text” name=”avgr” value=”<?php echo $row[‘avgr’]; ?>”/>

<br>

Fid: <input type=”text” name=”fid” value=”<?php echo $row[‘fid’]; ?>”/>

<br>

<input type=”submit” value=” edit ” />

</form>

</body>

</html>

  • پس از ارسال فرم فوق برنامه stud-edit2.php با کد زیر اجرا می شود تا اطلاعاتی ارسالی از فرم را دریافت کرده و با اتصال به بانک تغییرات را به بانک منتقل کند:

stud-edit2.php

<?php

$sid   = $_POST[‘sid’];

$name  = $_POST[‘name’];

$avgr  = $_POST[‘avgr’];

$fid   = $_POST[‘fid’];

require(“config.php”);

$sql=”UPDATE  tbl_studs  SET  name=’$name’, avgr=$avgr, fid=$fid

                                                 WHERE sid=$sid ” ;

$res = mysqli_query( $conn ,$sql);

if ( $res )

echo “Success” ; 

else echo “Error”;

mysqli_close( $conn );

?>

بهبود طراحی  3 : دستور headerبرای تغییر مسیر درخواست

از دستور  header برای تغییر مسیر درخواست استفاده می شود. به این صورت که وقتی از طریق مرورگر صفحه ای درخواست می شود، این صفحه می تواند شامل دستور header باشد، در این دستور آدرس صفحه ای قراردارد که باید سرویس دهنده آنرا اجرا کرده و خروجی آنرا به مرورگر برگرداند. این دستور ممکن است در صفحه بعدی هم وجود داشته باشد و … تا بالاخره آخرین صفحه اجرا شده و خروجی آن به مرورگر فرستاده می شود.

بعنوان مثال در صفحه  page1.php می توانیم دستور زیر را بنویسیم:

header(“location:page2.php”);

که در این صورت مرورگر با درخواست صفحه page1.php، سرور پس از اجرای دستورات این صفحه و رسیدن به دستور header ، از ادامه برنامه page1.php صرف نظر کرده و صفحه page2.php را اجرا خواهد کرد. نهایتاً چیزی که به مرورگر برگردانده می شود خروجی صفحه page2.php خواهد بود. باید توجه داشت که هیچگاه نباید تگ های HTML و یا دستورات خروجی PHP قبل از دستور header قرار گرفته و اجرا شوند. بعبارتی دیگر نباید قبل از اجرای دستور header هیچ نوع خروجی تولید شده باشد.

در برنامه اضافه، حذف و ویرایش دانشجویان میتوانیم پس از اجرای موفق دستورات DELETE، INSERT و UPDATE بجای نمایش پیغام موفقیت (success) ، دستور header را بصورت زیر اجرا کرده و درخواست را به صفحه نمایش لیست دانشجویان(stud-list.php) تغییر دهیم. و یا در صورت وقوع خطا، مسیر را به صفحه error.php که برای نمایش پیغام خطا طراحی شده است ، تغییر دهیم.

در زیر تغییرات لازم روی برنامه stud-del.php انجام شده است که باید صفحات stud-add2.php و stud-edit2.php نیز بطور مشابه تغییر کنند.

stud-del.php

<?php

$sid = $_GET[‘sid’];

require(“config.php”);

$res = mysqli_query($conn ,”DELETE  FROM  tbl_studs  WHERE sid=$sid  ”   );

if ( $res )

header(“location:stud-list.php”);

else    header(“location:error.php”);

?>

صفحه error.php می تواند حداقل دارای طراحی زیر یا طراحی پیشرفته تری باشد.

error.php

<html>
<body>
<h1> Error </h1>
<h2 style=”color:red”>Database Error </h2>
</body>
</html>

بهبود طراحی 4: ادغام فایل ها جفتی

تا بحال برای عملیات درج و ویرایش رکورد از دو فایل مجزا استفاده شد، فایل اول برای نمایش فرم و فایل دوم برای اجرای دستور درج یا اصلاح روی بانک اطلاعاتی. با روش زیر می توان برای هر عمل ، دو فایل را با هم ترکیب کرد.

در مثال زیر ابتدا وجود یکی از متغیرهای داخل فرم بررسی می شود، اگر وجود داشت به معنای ارسال فرم است و باید دستورات دریافت اطلاعات فرم و اجرای درج (INSERT ) شود ، در غیر اینصورت باید فرم نمایش داده شود. یعنی اینکه صفحه stud-add.php کار هر دو صفحه stud-add1.php و stud-add2.php با انجام می دهد:

stud-add1.php + stud-add2.php  =  stud-add.php

 

stud-add.php

<?php

if (isset ($_POST[‘name’] )) {

$name = $_POST[‘name’];

$avgr  = $_POST[‘avgr’];

$fid   = $_POST[‘fid’];

   include(‘config.php’);

   $sql=”INSERT INTO tbl_studs (name, avgr, fid)

          VALUES(‘$name’ ,$avgr ,$fid  )” ;

$res=mysql_query( $sql ,$conn);

if ( $res )

header(“location:stud-list.php”);

else   header(“location:error.php”);

}

?>

<html>

<body>

<form action=”stud-add.php” method=”post”>

Name : <input type=”text” name=”name” />

Avgr : <input type=”text” name=”avgr” />

Fid: <input type=”text” name=”fid” />

<input type=”submit” value=” add ” />

</form>

</body>

</html>

دیدگاهتان را بنویسید

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

فهرست مطالب