پیاده سازی 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 ' '; echo '<a class="btn btn-success" href="update.php?id='.$row['id'].'">Update</a>'; echo ' '; 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 را ببینید. البته اگر برروی دکمه کلیک کنید با خطا مواجه خواهید شد چون هنوز صفحه مورد نظر ایجاد نشده است.
۲٫ ایجاد صفحه 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 کلیک کنید شما باید خطاهای اعتبار سنجی را مطابق شکل زیر ببینید.
چند تا رکورد ایجا د کنید و در نهایت شما در گرید CRUD شکلی شبیه زیر را باید داشته باشید.
توجه کنید که که با ازاء هر سطر یک دکمه 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 قصد داریم صفحه های Update و Delete از گرید CRUD در PHP را بسازیم . این صفحه را بوک مارک کرده تا در چند روز آینده قسمت بعدی آموزش را دنبال کنید . همچنین در قسمت آخر کدهای کامل این دوره آموزشی قرار خواهند گرفت و در صورت رضایت از این آموزش لطفا ان را با استفاده از دکمه های زیر در شبکه های اجتماعی به اشتراک بگذارید .
من محمد آذرنیوا، نویسنده و مدرس دوره های برنامه نویسی ، طراحی وب و تحلیل گر پایگاه داده هستم و قصد دارم در این وبسایت مطالب کاربردی در این زمینه را با شما به اشتراک بگذارم …
سلام
متشکر از اموزشتون.
یه سوال:چرا در این آموزش وقتی از متن فارسی استفاده می کنم. نمایش رو بصورت ???? نشون میده. درحال که توی دیتا بیس UTF-8 انتخاب کرده بودم و اونجا متن فارسی درست نشون میده ولی توی جدول علامت سوال هستش؟
راه حل چیه؟
سلام
مشکل توی چن چا هستش اول از اینکه توی آموزش به طور عجیبی توی خط ۴۰
$sql = “INSERT INTO customers (name,email,mobile) values(?, ?, ?)”;
از علامت سوال استفاده شده که باید جای اون علامت سوالا متغییر هایی که در بالا تعریف شده رو قرار داد
$sql = “INSERT INTO gallery (name,email,mobile) values(‘$name’,’$email’,’$mobile’)”;
و اینکه مشکل فارسی نوشتن هم توی کانکشن باید ut-8 لحاظ بشه