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

پیاده سازی CRUD در PHP قسمت ۲ ( نمایش اطلاعات جدول در PHP ) :

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

در این قسمت آموزش نمایش اطلاعات جدول در php قصد داریم صفحات ایجاد (Create)  و خواندن (Read) مربوط به گرید CRUD  در PHP  را بسازیم.

۱٫افزودن دکمه Create و Read

در این بخش از آموزش نیاز به دکمه هایی داریم که هدایت کاربر را به صفحه های Create و Read انجام دهند دکمه Create باید تنها یکبار در صفحه ایجاد شود برای هدایت کاربر به صفحه ایجاد داده جدید ،  اما دکمه Read  باید به ازاء هر رکورد موجود در دیتابیس ایجاد گردد . فایل index.php  که در قسمت قبل آموزش ایجاد کردید را باز کرده و یک دکمه Create به بالای جدول و همچنین دکمه های Read به ازاء هر سطر جدول اضافه کنید .

حال کدهای فایل 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 بروید باید دکمه Create  را ببینید. البته اگر برروی دکمه کلیک کنید با خطا مواجه خواهید شد چون هنوز صفحه مورد نظر ایجاد نشده است.

نمایش اطلاعات جدول در php

۲٫ ایجاد صفحه Create

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

این فایل را در ۲ بخش بررسی می کنیم .

قسمت اول کد ها ساده است چون یک فرم HTML  ایجاد می کند . از آنجایی که ما نیاز به اعتبا ر سنجی فرم داریم از این رو متغیر های PHP  برای برای نگهداری خطاهای ایجاد شده برای هر فیلد تعریف شده اند . کدهای زیر را در فایل create.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>Create a Customer</h3>
		    		</div>
    		
	    			<form class="form-horizontal" action="create.php" 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">Create</button>
						  <a class="btn" href="index.php">Back</a>
						</div>
					</form>
				</div>
				
    </div> <!-- /container -->
  </body>
</html>
قسمت دوم کدها جایی است که فرآیند ایجاد رکورد ها اتفاق می افتد . کد های زیر را در ابتدای صفحه create.php قبل از فرم HTML کپی کنید.
<?php 
	
	require 'database.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;
		}
		
		// insert data
		if ($valid) {
			$pdo = Database::connect();
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "INSERT INTO customers (name,email,mobile) values(?, ?, ?)";
			$q = $pdo->prepare($sql);
			$q->execute(array($name,$email,$mobile));
			Database::disconnect();
			header("Location: index.php");
		}
	}
?>

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

در صورتیکه به درستی کارها را انجام داده باشید به صفحه create.php رفته و برروی دکمه Create کلیک کنید شما باید خطاهای اعتبار سنجی را مطابق شکل زیر ببینید.

نمایش اطلاعات به صورت جدول در php

چند تا رکورد ایجا د کنید و در نهایت شما در گرید CRUD شکلی شبیه زیر را باید داشته باشید.

خواندن اطلاعات از دیتابیس در php

توجه کنید که که با ازاء هر سطر یک دکمه Read وجود دارد که در مرحله اول این آموزش اضافه شد اگر برروی این دکمه کلیک کنید با خطا روبرو خواهید شد . ما در قسمت بعد این صفحه را خواهیم ساخت .

۳٫ایجاد صفحه Read ( نمایش اطلاعات جدول در php )

یک فایل PHP با نام read.php ایجاد کنید این فایل بخشی از گرید CRUD خواهد بود. در مقایسه با بخش قبل (عملیات Create) این مرحله ساده تر است . کدهای زیر را در فایل ایجاد شده کپی کنید تا بعد از آن به توضیح این کدها بپردازیم .
<?php 
	require 'database.php';
	$id = null;
	if ( !empty($_GET['id'])) {
		$id = $_REQUEST['id'];
	}
	
	if ( null==$id ) {
		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);
		Database::disconnect();
	}
?>

<!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>Read a Customer</h3>
		    		</div>
		    		
	    			<div class="form-horizontal" >
					  <div class="control-group">
					    <label class="control-label">Name</label>
					    <div class="controls">
						    <label class="checkbox">
						     	<?php echo $data['name'];?>
						    </label>
					    </div>
					  </div>
					  <div class="control-group">
					    <label class="control-label">Email Address</label>
					    <div class="controls">
					      	<label class="checkbox">
						     	<?php echo $data['email'];?>
						    </label>
					    </div>
					  </div>
					  <div class="control-group">
					    <label class="control-label">Mobile Number</label>
					    <div class="controls">
					      	<label class="checkbox">
						     	<?php echo $data['mobile'];?>
						    </label>
					    </div>
					  </div>
					    <div class="form-actions">
						  <a class="btn" href="index.php">Back</a>
					   </div>
					
					 
					</div>
				</div>
				
    </div> <!-- /container -->
  </body>
</html>
اول کدهای ابتدای فایل PHP را بررسی می کنیم این کدها چه کاری انجام می دهند ؟ آنها با استفاده از  $_GET[‘id’] بررسی می کنند که آیا آیتمی برای نمایش وجود دارد یا خیر در صورتی که جواب منفی بود کاربر را به صفحه index.php هدایت خواند کرد در غیر اینصورت داده ها را با استفاده از id از دیتابیس خوانده  و آنها را در متغیر $data قرار می دهند. قسمت بعد هم یک صفحه HTML ساده است که داده های موجود در متغیر $data  را به نمایش می دهد. در صورتیکه کدها به درستی کار کنند باید صفحه ای مشابه شکل زیر داشته باشید. دریافت اطلاعات از دیتابیس در php

۴٫ادامه دارد

اگر همه مراحل را به درستی انجام داده باشید باید ساختار فایل های زیر را داشنه باشید. اطلاعات از دیتابیس در php

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

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

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

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

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

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

اشتباهات در شروع یادگیری کدنویسی

بزرگترین اشتباهات در شروع یادگیری کدنویسی  

اشتباهات در شروع یادگیری کدنویسی بسیار زیاد می باشند؛ به طوریکه برخی آسیب های جدی …

2 نظر

  1. سلام
    متشکر از اموزشتون.
    یه سوال:چرا در این آموزش وقتی از متن فارسی استفاده می کنم. نمایش رو بصورت ???? نشون میده. درحال که توی دیتا بیس UTF-8 انتخاب کرده بودم و اونجا متن فارسی درست نشون میده ولی توی جدول علامت سوال هستش؟
    راه حل چیه؟

    • سلام
      مشکل توی چن چا هستش اول از اینکه توی آموزش به طور عجیبی توی خط ۴۰
      $sql = “INSERT INTO customers (name,email,mobile) values(?, ?, ?)”;
      از علامت سوال استفاده شده که باید جای اون علامت سوالا متغییر هایی که در بالا تعریف شده رو قرار داد
      $sql = “INSERT INTO gallery (name,email,mobile) values(‘$name’,’$email’,’$mobile’)”;
      و اینکه مشکل فارسی نوشتن هم توی کانکشن باید ut-8 لحاظ بشه

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

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