پیاده سازی CRUD در PHP (قسمت ۳)

پیاده سازی CRUD در PHP (قسمت ۳) – نمایش جدول دیتابیس در PHP

سایر پست های مربوط به این آموزش :

در این بخش از آموزش نمایش جدول دیتابیس در PHP قصد داریم صفحات Update و Delete  از گرید CRUD در PHP را آموزش دهیم . بعد از اتمام این قسمت عملیات CRUD کامل خواهد شد . فرآیند این آموزش مانند قسمت قبلی خواهد بود.

۱-افزودن دکمه Update و Delete

مشابه دکمه Read  در گرید ما نیا ز به دکمه های Update و Delete  به ازاء هر سطر جدول داریم . فایل index.php را باز کرده و کدهای های لایت شده زیر را به آن اضافه کنید.

در نهایت فایل index.php باید  شکل زیر باشد . شما می توانید کدهای های لایت شده و یا همه کدها را به فایل index.php کپی کنید.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
</head>

<body>
    <div class="container">
    		<div class="row">
    			<h3>PHP CRUD Grid</h3>
    		</div>
			<div class="row">
				<p>
					<a href="create.php" class="btn btn-success">Create</a>
				</p>
				
				<table class="table table-striped table-bordered">
		              <thead>
		                <tr>
		                  <th>Name</th>
		                  <th>Email Address</th>
		                  <th>Mobile Number</th>
		                  <th>Action</th>
		                </tr>
		              </thead>
		              <tbody>
		              <?php 
					   include 'database.php';
					   $pdo = Database::connect();
					   $sql = 'SELECT * FROM customers ORDER BY id DESC';
	 				   foreach ($pdo->query($sql) as $row) {
						   		echo '<tr>';
							   	echo '<td>'. $row['name'] . '</td>';
							   	echo '<td>'. $row['email'] . '</td>';
							   	echo '<td>'. $row['mobile'] . '</td>';
							   	echo '<td width=250>';
							   	echo '<a class="btn" href="read.php?id='.$row['id'].'">Read</a>';
							   	echo '&nbsp;';
							   	echo '<a class="btn btn-success" href="update.php?id='.$row['id'].'">Update</a>';
							   	echo '&nbsp;';
							   	echo '<a class="btn btn-danger" href="delete.php?id='.$row['id'].'">Delete</a>';
							   	echo '</td>';
							   	echo '</tr>';
					   }
					   Database::disconnect();
					  ?>
				      </tbody>
	            </table>
    	</div>
    </div> <!-- /container -->
  </body>
</html>

 

حال اگر به صفحه index.php بروید باید دکمه های Update و Delete  را به ازاء هر سطر ببینید . در حال حاضر این دکمه ها کار نخواند کرد و در قسمت بعد صفحه Update را ایجاد خواهیم کرد.

نمایش جدول دیتابیس در php

۲-ایجاد صفحه Update

یک فایل PHP با نام update.php ایجاد کنید این فایل قسمتی از گرید CRUD خواهد بود و تقریبا مشابه قمست create  است .

این فایل را مانند قمست create در ۲ بخش بررسی خواهیم کرد

اولین بخش کد های آن یک فرم HTMl است این فرم دقیقا مشابه فرم صفحه Create است . کد های زیر را در فایل update.php کپی کنید.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
</head>

<body>
    <div class="container">
    
    			<div class="span10 offset1">
    				<div class="row">
		    			<h3>Update a Customer</h3>
		    		</div>
    		
	    			<form class="form-horizontal" action="update.php?id=<?php echo $id?>" method="post">
					  <div class="control-group <?php echo !empty($nameError)?'error':'';?>">
					    <label class="control-label">Name</label>
					    <div class="controls">
					      	<input name="name" type="text"  placeholder="Name" value="<?php echo !empty($name)?$name:'';?>">
					      	<?php if (!empty($nameError)): ?>
					      		<span class="help-inline"><?php echo $nameError;?></span>
					      	<?php endif; ?>
					    </div>
					  </div>
					  <div class="control-group <?php echo !empty($emailError)?'error':'';?>">
					    <label class="control-label">Email Address</label>
					    <div class="controls">
					      	<input name="email" type="text" placeholder="Email Address" value="<?php echo !empty($email)?$email:'';?>">
					      	<?php if (!empty($emailError)): ?>
					      		<span class="help-inline"><?php echo $emailError;?></span>
					      	<?php endif;?>
					    </div>
					  </div>
					  <div class="control-group <?php echo !empty($mobileError)?'error':'';?>">
					    <label class="control-label">Mobile Number</label>
					    <div class="controls">
					      	<input name="mobile" type="text"  placeholder="Mobile Number" value="<?php echo !empty($mobile)?$mobile:'';?>">
					      	<?php if (!empty($mobileError)): ?>
					      		<span class="help-inline"><?php echo $mobileError;?></span>
					      	<?php endif;?>
					    </div>
					  </div>
					  <div class="form-actions">
						  <button type="submit" class="btn btn-success">Update</button>
						  <a class="btn" href="index.php">Back</a>
						</div>
					</form>
				</div>
				
    </div> <!-- /container -->
  </body>
</html>

بخش دوم کدها جایی است که فرآیند به روز رسانی اتفاق می افتد. کدهای زیر را به ابتدای فایل updae.php کپی کنید :

<?php 
	
	require 'database.php';

	$id = null;
	if ( !empty($_GET['id'])) {
		$id = $_REQUEST['id'];
	}
	
	if ( null==$id ) {
		header("Location: index.php");
	}
	
	if ( !empty($_POST)) {
		// keep track validation errors
		$nameError = null;
		$emailError = null;
		$mobileError = null;
		
		// keep track post values
		$name = $_POST['name'];
		$email = $_POST['email'];
		$mobile = $_POST['mobile'];
		
		// validate input
		$valid = true;
		if (empty($name)) {
			$nameError = 'Please enter Name';
			$valid = false;
		}
		
		if (empty($email)) {
			$emailError = 'Please enter Email Address';
			$valid = false;
		} else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
			$emailError = 'Please enter a valid Email Address';
			$valid = false;
		}
		
		if (empty($mobile)) {
			$mobileError = 'Please enter Mobile Number';
			$valid = false;
		}
		
		// update data
		if ($valid) {
			$pdo = Database::connect();
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "UPDATE customers  set name = ?, email = ?, mobile =? WHERE id = ?";
			$q = $pdo->prepare($sql);
			$q->execute(array($name,$email,$mobile,$id));
			Database::disconnect();
			header("Location: index.php");
		}
	} else {
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT * FROM customers where id = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		$data = $q->fetch(PDO::FETCH_ASSOC);
		$name = $data['name'];
		$email = $data['email'];
		$mobile = $data['mobile'];
		Database::disconnect();
	}
?>

همانطور که می بینید ابتدا به کمک متغیر $_POST  بررسی می کنیم که آیا فرم ارسال شده است یا خیر سپس  همه ورودی ها  را جهت مطابقت با قوانین اعتبار سنجی  بررسی خواهیم کرد.بعد از آن دیتابیس را با استفاده از داده های $_POST به روز رسانی خواهیم کرد.در نهایت کاربر را به صفحه index.php با استفاده از تابع header ارجاع خواهیم دادو در صورتیکه فرم به روش get فراخوانی شود دادهها از دیتابیس خوانده خواهد شد.

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

php-crud-update-form

۳-ایجاد صفحه Delete

در آخرین قسمت آموزش فایل phpبا عنوان delete.php ایجاد کنید و کدهای زیر را در آن کپی کنید تا بعد آن ها را بررسی کنیم.

 

<?php 
	require 'database.php';
	$id = 0;
	
	if ( !empty($_GET['id'])) {
		$id = $_REQUEST['id'];
	}
	
	if ( !empty($_POST)) {
		// keep track post values
		$id = $_POST['id'];
		
		// delete data
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "DELETE FROM customers  WHERE id = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		Database::disconnect();
		header("Location: index.php");
		
	} 
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
</head>

<body>
    <div class="container">
    
    			<div class="span10 offset1">
    				<div class="row">
		    			<h3>Delete a Customer</h3>
		    		</div>
		    		
	    			<form class="form-horizontal" action="delete.php" method="post">
	    			  <input type="hidden" name="id" value="<?php echo $id;?>"/>
					  <p class="alert alert-error">Are you sure to delete ?</p>
					  <div class="form-actions">
						  <button type="submit" class="btn btn-danger">Yes</button>
						  <a class="btn" href="index.php">No</a>
						</div>
					</form>
				</div>
				
    </div> <!-- /container -->
  </body>
</html>

از ابتدای کدهای PHP بررسی را شروع می کنیم همانطور که می بینید $id از درخواست $_GET خوانده می شود. در شرایطی که درخواست به روش get باشد فرم  تائیدیه نمایش داده می شود و لی در صورتیکه درخواست به روش post باشد مشخص می شود که کاربر برروی دکمه تائید کلیک کرده است سپس فرآیند حذف رکورد صورت خواهد گرفت و سپس کابر به صفحه index.php ارجاع داده خواهد شد .

قمست بعد کد هم یک صفحه HTML است که $_GET[‘id’] در یک فیلد مخفی نگه داری می کند .

در صورتیکه کارتان را درست انجام داده باشید باید فرم delete.php به شکل زیر باشد با کلیک برروی دکمه yes  رکورد انتخاب شده در صفحه index حذف خواهد شد .

php-crud-delete-form

۴- پایان و کدهای پروژه نمایش جدول دیتابیس در PHP

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

php-crud-file-structure-3

شما می توانید کدهای پروژه را از لینک زیر دانلود کنید :

دانلود پروژه

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

ورکشاپ رایگان دوره های تخصصی برنامه نویسی

شما این فرصت را دارید، با تکمیل فرم زیر، قبل از انتخاب دوره آموزشی مناسب خود، در ورکشاپ رایگان دوره های تخصصی برنامه نویسی شرکت کنید

درباره‌ی محمد آذرنیوا

من محمد آذرنیوا، نویسنده و مدرس دوره های برنامه نویسی ، طراحی وب و تحلیل گر پایگاه داده هستم و قصد دارم در این وبسایت مطالب کاربردی در این زمینه را با شما به اشتراک بگذارم. بیشتر از یک برنامه نویس باشید...

همچنین ببینید

آموزش PHP

ساخت فرم تماس با ما در PHP

فرم تماس یکی از ابزارهای ضروری برای تبدیل کاربر به مشتری می باشد. در این مطلب قصد داریم یک اسکریپت فرم تماس PHP ارائه دهیم که رایگان بوده و می توانید بر روی وب سایت تان از آن استفاده نمایید.

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

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