ساخت CMS ساده با PHP - قسمت 9 - مدیریت نظرات

‏  22 دقیقه
۰۲ مرداد ۱۳۹۳
ساخت CMS ساده با PHP - قسمت 9 - مدیریت نظرات

به نام خدا و سلام،در قسمت نهم از ساخت CMS ساده با زبان PHP در خدمت شما هستیم،در این قسمت قراره با هم بخش مدیریت نظرات رو ایجاد کنیم و از جلسه بعد خروجی سایت رو طراحی میکنیم.

فهرست محتوای این مقاله

طراحی صفحه نظرات

در ابتدای کار فایلی با نام comments در پوشه admin برنامه ایجاد می‌کنیم و سپس کدهای زیر رو داخل اون قرار میدیم،کدهای این صفحه هم دقیقا مشابه کدهای صفحات دیگه هستش با این تفاوت که در بخش محتوا کدهای نمایش نظرات سایت قرار میگیره.

<?php 
require_once '../init.php';
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>مدیریت سایت-نظرات</title>
    <!-- Bootstrap -->
    <link href="../css/bootstrap.css" rel="stylesheet">
    <link href="../css/bootstrap-rtl.css" rel="stylesheet">
    <link href="../css/bootstrap-theme.css" rel="stylesheet">
    <link href="../css/style.css" rel="stylesheet">
  </head>
  <body>
      <div class="container">
          <div class="row">
              <div class="navbar navbar-default navbar-fixed-top navbar-inverse" role="navigation">
                  <ul class="nav navbar-nav">
                      <li><a href="http://localhost:2020/CMS">نمایش سایت</a></li>
                       <li><a href="http://localhost:2020/logout.php">خروج از سایت</a></li>
                  </ul>
              </div>
          </div>
          <div class="row" style="margin-top: 100px;" >
            <div class="col-xs-12 col-sm-3 col-md-3">
                  <div class="panel panel-primary">
                      <div class="panel-heading">
                          <h3 class="panel-title">پنل مدیریت</h3>
                      </div>
                      <div class="panel-body">
                          <ul class="nav nav-stacked">
                               <li><a href="dashboard.php">داشبورد</a></li>
                              <li class="active">مدیریت مطالب</li>
                              <li class="nav nav-divider"></li>
                              <li><a href="posts.php">همه مطالب</a></li>
                              <li><a href="new-post.php">مطلب جدید</a></li>
                              <li>مدیریت برگه ها</li>
                              <li class="nav nav-divider"></li>
                               <li><a href="pages.php">همه برگه ها</a></li>
                              <li><a href="new-page.php">برگه جدید</a></li>
                               <li>مدیریت کاربران</li>
                              <li class="nav nav-divider"></li>
                               <li><a href="users.php">همه کاربران</a></li>
                              <li><a href="new-user.php">کاربر جدید</a></li>
                               <li>مدیریت نظرات</li>
                              <li class="nav nav-divider"></li>
                               <li><a href="comments.php">همه نظرات</a></li>
                          </ul>
                      </div>
                  </div>
              </div>
            <div class="col-xs-12 col-sm-8 col-md-9">
                   <div class="panel panel-default">
                  <div class="panel-heading">
                      <h3 class="panel-title">نظرات</h3>
                </div>
               <div class="panel-body">
                   <table class="table table-bordered">   
                   <tr>
                       <th>نویسنده نظر</th>
                       <th>متن نظر</th>
                       <th>تاریخ</th>
                        <th>عملیات</th>
                   </tr>
                   <?php
                   $comments = get('comments');
                  
                   while ($comment = mysql_fetch_array($comments)):
                       ?>
                   <tr <?php echo (intval($comment['comment_approved']))?'class="approved"':'class="unapproved"'; ?> >
                           <td><?php echo $comment['comment_author']; ?></td>
                           <td><?php echo $comment['comment_body']; ?></td>
                           <td><?php echo $comment['comment_date']; ?></td>
                           <td>
                               <a href="comments.php?action=delete&cid=<?php echo $comment['comment_ID']; ?>" class="delete_post"><span class="glyphicon glyphicon-trash"></span></a>
                               <a href="comments.php?action=confirm&cid=<?php echo $comment['comment_ID']; ?>" class="confirm_post"><span class="glyphicon glyphicon-ok"></span></a>
                           </td>
                       </tr>
                 <?php endwhile; ?> 
                       </table>
               </div>
              </div>
              </div>
          </div>
           <div class="row">
              <div class="col-sm-12" id="admin_footer"></div>
          </div>
      </div>
    <script src="../js/jquery-1.10.2.min.js"></script>
    <script src="../js/bootstrap.min.js"></script>
    <script src="../js/script.js"></script>
  </body>
</html>

همون طور که می‌بینید در بخش محتوا ما کدهای نشون دادن نظرات رو با استفاده از توابعی مانند get قرار دادیم و سپس در یک حلقه نظراتی که از دیتابیس دریافت شدن رو در یک جدول که بوت استرپ طراحی شده نشون دادیم.فیلد‌های این بخش میتونه توسط خود شما ویرایش بشه و فیلد‌های دلخواه خودتون رو قرار بدین.

تایید کردن نظرات

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

برای خاصیت href لینک تایید کردن ما آدرس همین فایل comments رو قرار دادیم و براش دو تا کوئری استرینگ ارسال کردیم یکی با نام اکشن ویکی هم با نام cid  برای اکشن مقدار confirm و برای cid هم مقدار شناسه نظر رو قرار دادیم.

حالا وقتی کاربر روی این لینک کلیک میکنه صفحه رفرش میشه اما آدرس شبیه این میشه .

comments.php?action=confirm&cid=1

خوب حالا ما باید در ابتدای صفحه این اطلاعات کوئری استرینگ رو دریافت کنیم و بر اساس اون نظر مورد نر رو تایید کنیم.

نکته :

همه نظرات در هنگام ذخیره شدن در دیتابیس بهص ورت پیش فرض تایید نشده هستن و مدیر باید اونارو تایید کنه.

در ابتدای فایل کدهای زیر رو قرار میدیم.

if(isset($_GET['action']) && !empty($_GET['action'])){
    $action=strval($_GET['action']);
    $cid=intval($_GET['cid']);
    switch ($action){
        case 'delete':delete_comment($cid);
        break;
        case 'confirm':confirm_comment($cid);
        break;
    }
}

ایند کد بررسی میکنه مقدار action در آدرس ست شده باشه و بعدش مقدار action رو میگیره و در متغییر action قرار میده برای مقدار cid هم همین کارو می‌کنیم،حالا بر اساس مقدار و توسط ساختار تصمیم switch میگیم که کدوم تابع و دستور اجرا بشه.

نکته :

چون ما هم اکشن تایید کردن و هم اکشن حذف کردن رو داریم به همین خاطر از روش بالا استفاده کردیم

اگه مقدار اکشن برابر confirm باشه تابع confirm_comment اجرا میشه و اگه مقدارش برابر delete باشه تابع delete_commet اجرا میشه برای هر دو تا تابع هم مقدار شناسه نظر ارسال میشه.

تایع تایید کردن نظرات

function confirm_comment($cid) {
    $sql = "UPDATE comments SET comment_approved= NOT comment_approved WHERE comment_ID={$cid} LIMIT 1";
    mysql_query($sql);
}

این تابع بر اساس شناسه نظری که براش ارسال شده یه کوئری رو اجرا میکنه و مقدار فیلد comment_approved رو در جدول نظرات به مقدار مخالف تغییر میده،عملگر NOT در کوئری مقدار رو مخالف مقدار فعلی در نظر میگیره و فیلد به روز میشه.اینطوری شما هر وقت بخواین میتونین نظر رو تایید کنید یا از حالت تایید خارج کنید.

تابع حذف کردن نظر

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

function delete_comment($cid) {
    $sql = "DELETE FROM comments WHERE comment_ID={$cid} LIMIT 1";
    mysql_query($sql);
}

این تابع هم توضیح خاصی نداره و با یه کوئری نظر رو حذف میکنه.

خوب کدهای کامل صفحه به این شکل میشه :

<?php 
require_once '../init.php';
if(isset($_GET['action']) && !empty($_GET['action'])){
    $action=strval($_GET['action']);
    $cid=intval($_GET['cid']);
    switch ($action){
        case 'delete':delete_comment($cid);
        break;
        case 'confirm':confirm_comment($cid);
        break;
    }
}
function confirm_comment($cid) {
    $sql = "UPDATE comments SET comment_approved= NOT comment_approved WHERE comment_ID={$cid} LIMIT 1";
    mysql_query($sql);
}
function delete_comment($cid) {
    $sql = "DELETE FROM comments WHERE comment_ID={$cid} LIMIT 1";
    mysql_query($sql);
}
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>مدیریت سایت-نظرات</title>
    <!-- Bootstrap -->
    <link href="../css/bootstrap.css" rel="stylesheet">
    <link href="../css/bootstrap-rtl.css" rel="stylesheet">
    <link href="../css/bootstrap-theme.css" rel="stylesheet">
    <link href="../css/style.css" rel="stylesheet">
  </head>
  <body>
      <div class="container">
          <div class="row">
              <div class="navbar navbar-default navbar-fixed-top navbar-inverse" role="navigation">
                  <ul class="nav navbar-nav">
                      <li><a href="http://localhost:2020/CMS">نمایش سایت</a></li>
                       <li><a href="http://localhost:2020/logout.php">خروج از سایت</a></li>
                  </ul>
              </div>
          </div>
          <div class="row" style="margin-top: 100px;" >
            <div class="col-xs-12 col-sm-3 col-md-3">
                  <div class="panel panel-primary">
                      <div class="panel-heading">
                          <h3 class="panel-title">پنل مدیریت</h3>
                      </div>
                      <div class="panel-body">
                          <ul class="nav nav-stacked">
                               <li><a href="dashboard.php">داشبورد</a></li>
                              <li class="active">مدیریت مطالب</li>
                              <li class="nav nav-divider"></li>
                              <li><a href="posts.php">همه مطالب</a></li>
                              <li><a href="new-post.php">مطلب جدید</a></li>
                              <li>مدیریت برگه ها</li>
                              <li class="nav nav-divider"></li>
                               <li><a href="pages.php">همه برگه ها</a></li>
                              <li><a href="new-page.php">برگه جدید</a></li>
                               <li>مدیریت کاربران</li>
                              <li class="nav nav-divider"></li>
                               <li><a href="users.php">همه کاربران</a></li>
                              <li><a href="new-user.php">کاربر جدید</a></li>
                               <li>مدیریت نظرات</li>
                              <li class="nav nav-divider"></li>
                               <li><a href="comments.php">همه نظرات</a></li>
                          </ul>
                      </div>
                  </div>
              </div>
            <div class="col-xs-12 col-sm-8 col-md-9">
                   <div class="panel panel-default">
                  <div class="panel-heading">
                      <h3 class="panel-title">نظرات</h3>
                </div>
               <div class="panel-body">
                   <table class="table table-bordered">   
                   <tr>
                       <th>نویسنده نظر</th>
                       <th>متن نظر</th>
                       <th>تاریخ</th>
                        <th>عملیات</th>
                   </tr>
                   <?php
                   $comments = get('comments');
                  
                   while ($comment = mysql_fetch_array($comments)):
                       ?>
                   <tr <?php echo (intval($comment['comment_approved']))?'class="approved"':'class="unapproved"'; ?> >
                           <td><?php echo $comment['comment_author']; ?></td>
                           <td><?php echo $comment['comment_body']; ?></td>
                           <td><?php echo $comment['comment_date']; ?></td>
                           <td>
                               <a href="comments.php?action=delete&cid=<?php echo $comment['comment_ID']; ?>" class="delete_post"><span class="glyphicon glyphicon-trash"></span></a>
                               <a href="comments.php?action=confirm&cid=<?php echo $comment['comment_ID']; ?>" class="confirm_post"><span class="glyphicon glyphicon-ok"></span></a>
                           </td>
                       </tr>
                 <?php endwhile; ?> 
                       </table>
               </div>
              </div>
              </div>
          </div>
           <div class="row">
              <div class="col-sm-12" id="admin_footer"></div>
          </div>
      </div>
    <script src="../js/jquery-1.10.2.min.js"></script>
    <script src="../js/bootstrap.min.js"></script>
    <script src="../js/script.js"></script>
  </body>
</html>

امیدوارم که براتون مفید بوده باشه،در قسمت بعدی انشالله کدهای سمت خروجی سایت رو می‌نویسیم.

 

چه امتیازی به این مقاله می دید؟
نویسنده کیوان علی محمدی
یادگیرنده ی همیشگی،برنامه نویس،نویسنده،عاشق خلق چیزهای عجیب،عاشق تحلیل داده ها، مسئول بخش فنی و هم بنیان گذار در سون لرن.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.

نظرات کاربران

هادی معتمد

سلام لطفا اگر مطالبتون رو بصورت pdf برای دانلود قرار دهید ممنون می شم

لقمان آوند

به صفحه مخصوص کاربران vip مراجعه کنید.