ساخت CMS ساده با PHP - قسمت 7 - مدیریت برگه ها

‏  50 دقیقه
۱۷ خرداد ۱۳۹۳
ساخت CMS ساده با PHP - قسمت 7 - مدیریت برگه ها

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

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

صفحه نمایش لیست برگه ها

در ابتدا یه فایل php در پوشه admin با نام pages ایجاد می‌کنیم،در این فالی قراره لیست برگه‌های موجود رو نمایش بدیم،کدهایی که قرار میگیره شبیه به کدهای لیست مطالب هست فقط اطلاعات رو از جدول برگه‌ها دریافت می‌کنیم.

<?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">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </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>مدیریت مطالب</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 table-hover table-striped">   
                   <tr>
                       <th>عنوان برگه</th>
                       <th>تاریخ ارسال</th>
                       <th>نامک</th>
                        <th>عملیات</th>
                   </tr>
                   <?php
                   $pages = get('pages');
                   while ($page = mysql_fetch_array($pages)):
                       ?>
                       <tr>
                           <td><?php echo $page['page_title']; ?></td>
                           <td><?php echo $page['page_date']; ?></td>
                           <td><?php echo $page['page_slug']; ?></td>
                           <td>
                               <a href="pages.php?action=delete&pid=<?php echo $page['page_ID']; ?>" class="delete_page"><span class="glyphicon glyphicon-trash"></span></a>
                               <a href="new-page.php?pid=<?php echo $page['page_ID']; ?>" class="edit_page"><span class="glyphicon glyphicon-edit"></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>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../js/jquery-1.10.2.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="../js/bootstrap.min.js"></script>
    <script src="../js/script.js"></script>
  </body>
</html>

در ابتدا فایل init.php رو اضافه کردیم،کدهای صفحه هم دقیقا شبیه بقیه صفحه‌ها هستش،در بخش محتوای صفحه با تابع get که در فایل functions تعریف کرده بودیم کل برگه‌های موجوددر جدول pages رو دریافت کردیم و توسط یه حلقه این برگه‌ها رو در یه جدول نشون دادیم،در ستون عملیات جدول دو تا لینک برای ویرایش و حذف کردن برگه اضافه کردیم.

در این لینک‌ها کوئری استرینگ هایی رو برای حذف به همین صفحه و برای ویرایش به صفحه new-page ایجاد کردیم،البته این صفحه new-page رو بعدا ایجاد میکنیم.

نمایش برگه‌ها در بخش مدیریت

 

خوب حالا بعد از نمایش لیست برگه‌ها میایم و کدهای بخش عملیات رو مینویسیم،در بخش عملیات ما اول کدهای حذف کردن رو می‌نویسم و بعد از ایجاد صفحه new-page که برگه جدید رو ایجاد میکنه بخش ویرایش رو هم کد نویسی میکنیم (چون ویرایش ما باید در همون صفحه ایجاد برگه جدید انجام بشه).

حذف کردن برگه

برای حذف کردن برگه در بخش لینک‌های عملیات یه کوئری استرینگ به همین صفحه نوشتیم که دو تا متغییر با نام action  و برابر Delete و یکی هم با نام pid و برابر شناسه صفحه هستن،ما در بالای صفحه و در بخش کدهای php وضعیت این متغییر‌ها رو در آدرس بررسی میکنیم و اگه ست شده باشن برگه مورد نظر رو حذف می‌کنیم.

$success=false;
$err=false;
$message="";
if(isset($_GET['action']) && $_GET['action']=='delete' && isset($_GET['pid'])){
    $pid=intval($_GET['pid']);
    if($pid!=0){
        $res=mysql_query("DELETE FROM pages WHERE page_ID={$pid} LIMIT 1");
        if($res){
            $success=true;
            $message="برگه مورد نظر با موفقیت حذف گردید";
        }else{
            $err=true;
            $message="خطایی رخ داده است لطفا بعدا امتحان کنید";  
        }
    }
}

 

چک میکنیم اون کوئری استرینگ‌ها موجود باشه،بعدش برای مقداری که در pid قرار گرفته یه کوئری حذف می‌نویسیم و اونو اجرا می‌کنیم و طبق اجرای کوئری پیام مناسب رو در متغییر هایی که تعریف کردیم ست میکنیم.

حالا برای نشون دادن پیام از کدهای زیر استفاده می‌کنیم.

<?php if($success): ?>
	<div class="alert alert-success"><?php echo $message; ?></div>
<?php elseif($err): ?>
	<div class="alert alert-danger"><?php echo $message; ?></div>
<?php endif; ?>

خوب نتیجه حذف کردن یه برگه اینطوری میشه :

حذف کردن برگه از بخش مدیریت

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

<?php 
require_once '../init.php';
$success=false;
$err=false;
$message="";
if(isset($_GET['action']) && $_GET['action']=='delete' && isset($_GET['pid'])){
    $pid=intval($_GET['pid']);
    if($pid!=0){
        $res=mysql_query("DELETE FROM pages WHERE page_ID={$pid} LIMIT 1");
        if($res){
            $success=true;
            $message="برگه مورد نظر با موفقیت حذف گردید";
        }else{
            $err=true;
            $message="خطایی رخ داده است لطفا بعدا امتحان کنید";  
        }
    }
}
?>
<!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">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </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>مدیریت مطالب</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">
                    <?php if($success): ?>
                       <div class="alert alert-success"><?php echo $message; ?></div>
                       <?php elseif($err): ?>
                        <div class="alert alert-danger"><?php echo $message; ?></div>
                       <?php endif; ?>
                   <table class="table table-bordered table-hover table-striped">   
                   <tr>
                       <th>عنوان برگه</th>
                       <th>تاریخ ارسال</th>
                       <th>نامک</th>
                        <th>عملیات</th>
                   </tr>
                   <?php
                   $pages = get('pages');
                   while ($page = mysql_fetch_array($pages)):
                       ?>
                       <tr>
                           <td><?php echo $page['page_title']; ?></td>
                           <td><?php echo get_persian_date($page['page_date']); ?></td>
                           <td><?php echo $page['page_slug']; ?></td>
                           <td>
                               <a href="pages.php?action=delete&pid=<?php echo $page['page_ID']; ?>" class="delete_page"><span class="glyphicon glyphicon-trash"></span></a>
                               <a href="new-page.php?pid=<?php echo $page['page_ID']; ?>" class="edit_page"><span class="glyphicon glyphicon-edit"></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>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../js/jquery-1.10.2.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="../js/bootstrap.min.js"></script>
    <script src="../js/script.js"></script>
  </body>
</html>

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

ایجاد برگه جدید

خوب حالا در پوشه admin یه فایل جدید با نام new-page جدید ایجاد کنید،در اینجا کدهای مربوط به ایجاد برگه جدید که یه فرم هست رو قرار میدیم،بخش‌های هدر و ساید بار و فوتر که فرقی نداره و فقط بخش محتوا هست که اونم دقیقا شبیه به صفحه ایجاد مطلب جدید هستش.

خوب برای شروع کدهای بخش html رو اینطوری قرار میدیم.

<!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">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </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-9 col-md-9">
                   <div class="panel panel-default">
                  <div class="panel-heading">
                      <h3 class="panel-title">اضافه کردن برگه جدید</h3>
                  </div>
                       <div class="panel-body">
                             <?php if($success): ?>
                       <div class="alert alert-success"><?php echo $message; ?></div>
                       <?php elseif($err): ?>
                        <div class="alert alert-danger"><?php echo $message; ?></div>
                       <?php endif; ?>
                           <form action="" method="post" role="form" class="form-horizontal">
                  <div class="form-group">
                      <div class="col-sm-6">
                          <input type="text" class="form-control" name="post_title" value="<?php echo !empty($edit_page)?$edit_page['page_title']:''; ?>"  placeholder="عنوان برگه در این جا ...">
                      </div>
                  </div>
                <div class="form-group">
                    <div class="col-sm-6">
                        <input type="text" class="form-control" name="post_slug" value="<?php echo!empty($edit_page) ? $edit_page['page_slug'] : ''; ?>"  placeholder="نامک برگه  در این جا ...">
                    </div>
                </div>
                   <div class="form-group">
                      <div class=" col-xs-12 col-sm-12 col-md-12">
                          <textarea id="content" name="post_content" >
                              <?php echo !empty($edit_page)?$edit_page['page_body']:''; ?>
                          </textarea>
                      </div>
                  </div>
                <div class="form-group">
                    <div class="col-sm-12">
                        <select class="selectpicker" name="post_status">
                            <option value="published" <?php echo (!empty($edit_page) && $edit_page['page_status'] == 'published') ? 'selected' : ''; ?> >منتشر شده</option>
                            <option value="draft" <?php echo (!empty($edit_page) && $edit_page['page_status'] == 'draft') ? 'selected' : ''; ?>>پیش نویس</option>
                        </select>
                    </div>
                </div>
              <div class="form-group">
                  <div class="col-sm-offset-1 col-sm-10">
                      <button type="submit" name="submit_post" class="btn btn-primary">ذخیره برگه</button>
                  </div>
              </div>
              </form>
            </div>
              </div>
              </div>
          </div>
           <div class="row">
              <div class="col-sm-12" id="admin_footer"></div>
          </div>
      </div>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../js/jquery-1.10.2.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="ckeditor/ckeditor.js"></script>
    <script src="ckeditor/adapters/jquery.js"></script>
    <script src="../js/bootstrap.min.js"></script>
    <script src="../js/script.js"></script>
  </body>
</html>

در میان این کدهای HTML کمی هم کدهای php وجود داره که برای زمانی هست ما قصد ویرایش داشته باشیم و آیدی برگه رو توسط کوئری استرینگ ارسال کرده باشیم،در اینجا اون برگه از دیتابیس دریافت میشه و در فیلد‌های این فرم محتوا بارگذاری میشه تا عمل ویرایش صورت بگیره.

مثل بخش ارسال مطلب جدید فیدل‌های عنوان،نامک،محتوای اصلی و وضعیت مطلب در این فرم وجود داره،خوب حالا باید کدهای php اونو بنویسیم.

require_once '../init.php';
    $message="";
    $success=false;
    $err=false;
if(isset($_POST['submit_post'])){
    $title=  mysql_real_escape_string($_POST['post_title']);
    $slug=  mysql_real_escape_string($_POST['post_slug']);
    $content=$_POST['post_content'];
    $status=$_POST['post_status'];
    $date=strftime("%Y-%m-%d %H:%M:%S",time());
    if(isset($_GET['pid'])){
     $pid=intval($_GET['pid']);
     $sql="UPDATE pages SET page_title='{$title}',page_slug='{$slug}',page_body='{$content}',page_status='{$status}' WHERE page_ID={$pid} LIMIT 1"; 
     $result=  mysql_query($sql);
    if($result){
        $success=true;
        $message="برگه مورد نظر با موفقیت ویرایش گردید";
    }else{
        $err=true;
        $message="خطایی رخ داده است لطفا بعدا امتحان کنید";
    }
    }else{
    $sql="INSERT INTO pages (page_title,page_body,page_date,page_slug,page_status,comment_count)";
    $sql.=" VALUES('{$title}','{$content}','{$date}','{$slug}','{$status}',0) ";
    $result=  mysql_query($sql);
    if($result){
        $success=true;
        $message="ّبرگه جدید با موفقیت ثبت گردید";
    }else{
        $err=true;
        $message="خطایی رخ داده است لطفا بعدا امتحان کنید";
    }
    }

}

در ابتدا فایل init لود میشه و سپس متغییر‌های لازم تعریف میشن،چک میکنیم اون مقدار کوئری استرینگ برای ویرایش ست شده یا نه،اگه ست شده باشه باید عمل ویرایش (یعنی به روز رسانی دیتابیس) رو انجام بدیم در غیر این صورت باید سطر جدیدی رو در دیتابیس اضافه کنیم.

تنها تفاوتی که داره همینه اگه ست شده باشه کوئری update رو می‌نویسیم در غیر این صورت کوئری insert رو ایجاد میکنیم و بعد از پردازش هر کذوم متغییر‌های پیام رو ست میکنیم و به کاربر نشون میدیم.

خوب برای ایجاد برگه جدید ما این پیام رو مشاهده میکنیم.

ایجاد برگه جدید در مدیرتی محتوا

حالا برای ویرایش برگه باید چک کنیم که اون کوئری استرینگ pid در آدرس موجود هست یا نه که اگه باشه باید طبق همون pid که شناسه برگه هست،برگه مورد نظر لود بشه در وفیلد‌های فرم قرار بگیره.

if(isset($_GET['pid'])){
    $pid=intval($_GET['pid']);
    if($pid!=0){

        $edit_page= get_page_by_id($pid);

    }
}

اگه ست شده باشه،با تایع get_page_by_id برگه مورد نظر رو در متغییر edit_page$ قرار میدیم.حالا در بخش محتوا  با کدهای زیر مقادیر رو از edit_page می‌گیریم و فیلد‌ها قرار میدیم.

 <form action="" method="post" role="form" class="form-horizontal">
		  <div class="form-group">
			  <div class="col-sm-6">
				  <input type="text" class="form-control" name="post_title" value="<?php echo !empty($edit_page)?$edit_page['page_title']:''; ?>"  placeholder="عنوان برگه در این جا ...">
			  </div>
		  </div>
		<div class="form-group">
			<div class="col-sm-6">
				<input type="text" class="form-control" name="post_slug" value="<?php echo!empty($edit_page) ? $edit_page['page_slug'] : ''; ?>"  placeholder="نامک برگه  در این جا ...">
			</div>
		</div>
		   <div class="form-group">
			  <div class=" col-xs-12 col-sm-12 col-md-12">
				  <textarea id="content" name="post_content" >
					  <?php echo !empty($edit_page)?$edit_page['page_body']:''; ?>
				  </textarea>
			  </div>
		  </div>
		<div class="form-group">
			<div class="col-sm-12">
				<select class="selectpicker" name="post_status">
					<option value="published" <?php echo (!empty($edit_page) && $edit_page['page_status'] == 'published') ? 'selected' : ''; ?> >منتشر شده</option>
					<option value="draft" <?php echo (!empty($edit_page) && $edit_page['page_status'] == 'draft') ? 'selected' : ''; ?>>پیش نویس</option>
				</select>
			</div>
		</div>
	  <div class="form-group">
		  <div class="col-sm-offset-1 col-sm-10">
			  <button type="submit" name="submit_post" class="btn btn-primary">ذخیره برگه</button>
		  </div>
	  </div>
	  </form>

برای خاصیت value فیلد‌ها چک کردیم اگه متغییر edit_page ست شده باشه مقدار مورد نظر رو براش چاپ کردیم.

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

<?php
require_once '../init.php';
    $message="";
    $success=false;
    $err=false;
if(isset($_POST['submit_post'])){
    $title=  mysql_real_escape_string($_POST['post_title']);
    $slug=  mysql_real_escape_string($_POST['post_slug']);
    $content=$_POST['post_content'];
    $status=$_POST['post_status'];
    $date=strftime("%Y-%m-%d %H:%M:%S",time());
    if(isset($_GET['pid'])){
     $pid=intval($_GET['pid']);
     $sql="UPDATE pages SET page_title='{$title}',page_slug='{$slug}',page_body='{$content}',page_status='{$status}' WHERE page_ID={$pid} LIMIT 1"; 
     $result=  mysql_query($sql);
    if($result){
        $success=true;
        $message="برگه مورد نظر با موفقیت ویرایش گردید";
    }else{
        $err=true;
        $message="خطایی رخ داده است لطفا بعدا امتحان کنید";
    }
    }else{
    $sql="INSERT INTO pages (page_title,page_body,page_date,page_slug,page_status,comment_count)";
    $sql.=" VALUES('{$title}','{$content}','{$date}','{$slug}','{$status}',0) ";
    $result=  mysql_query($sql);
    if($result){
        $success=true;
        $message="ّبرگه جدید با موفقیت ثبت گردید";
    }else{
        $err=true;
        $message="خطایی رخ داده است لطفا بعدا امتحان کنید";
    }
    }

}
if(isset($_GET['pid'])){
    $pid=intval($_GET['pid']);
    if($pid!=0){

        $edit_page= get_page_by_id($pid);

    }
}
?>
<!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">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </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-9 col-md-9">
                   <div class="panel panel-default">
                  <div class="panel-heading">
                      <h3 class="panel-title">اضافه کردن برگه جدید</h3>
                  </div>
                       <div class="panel-body">
                             <?php if($success): ?>
                       <div class="alert alert-success"><?php echo $message; ?></div>
                       <?php elseif($err): ?>
                        <div class="alert alert-danger"><?php echo $message; ?></div>
                       <?php endif; ?>
         <form action="" method="post" role="form" class="form-horizontal">
                  <div class="form-group">
                      <div class="col-sm-6">
                          <input type="text" class="form-control" name="post_title" value="<?php echo !empty($edit_page)?$edit_page['page_title']:''; ?>"  placeholder="عنوان برگه در این جا ...">
                      </div>
                  </div>
                <div class="form-group">
                    <div class="col-sm-6">
                        <input type="text" class="form-control" name="post_slug" value="<?php echo!empty($edit_page) ? $edit_page['page_slug'] : ''; ?>"  placeholder="نامک برگه  در این جا ...">
                    </div>
                </div>
                   <div class="form-group">
                      <div class=" col-xs-12 col-sm-12 col-md-12">
                          <textarea id="content" name="post_content" >
                              <?php echo !empty($edit_page)?$edit_page['page_body']:''; ?>
                          </textarea>
                      </div>
                  </div>
                <div class="form-group">
                    <div class="col-sm-12">
                        <select class="selectpicker" name="post_status">
                            <option value="published" <?php echo (!empty($edit_page) && $edit_page['page_status'] == 'published') ? 'selected' : ''; ?> >منتشر شده</option>
                            <option value="draft" <?php echo (!empty($edit_page) && $edit_page['page_status'] == 'draft') ? 'selected' : ''; ?>>پیش نویس</option>
                        </select>
                    </div>
                </div>
              <div class="form-group">
                  <div class="col-sm-offset-1 col-sm-10">
                      <button type="submit" name="submit_post" class="btn btn-primary">ذخیره برگه</button>
                  </div>
              </div>
              </form>
            </div>
              </div>
              </div>
          </div>
           <div class="row">
              <div class="col-sm-12" id="admin_footer"></div>
          </div>
      </div>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../js/jquery-1.10.2.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="ckeditor/ckeditor.js"></script>
    <script src="ckeditor/adapters/jquery.js"></script>
    <script src="../js/bootstrap.min.js"></script>
    <script src="../js/script.js"></script>
  </body>
</html>

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

ویرایش تصویر در مدیریت محتوا

 

خوب اینم از بخش مدیریت برگه ها،در قسمت بعدی انشاالله بخش مدیریت نظرات رو می‌نویسیم.

نکته :

بابت تاخیری که در بروز رسانی این سری پیش اومده از همه کاربران عزیز سون لرن عذر خواهی میکنم،سعی میکنیم این سری حتما در این ماه تموم بشه.

موفق و پیروز باشید.

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

نیاز به لاگین

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

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

Shahoo

با سلام
معذرت میخوام یک سوال برام پیش امده اگه جواب بدید ممنون میشم:
تفاوت مطلب جدید با برگه جدید چیه در این cms ؟ یعنی مطلب جدید حاوی یک پست جدید است که به کاربر نمایش داده میشود و برگه های جدید حاوی چه چیزی هستند؟

سجاد دریس

برای ایجاد صفحات خاص استفاده میشه. مثل تماس با ما، درباره ما و ….

rockstar

سلام
آقا لقمان لطفا هزینه VIP رو به صورت دوره آموزشی کنید. یعنی برای هر آموزشی که ارائه میشه هزینه ای رو پرداخت کنیم و کاربر برای همیشه به مطالب دوره ای که ثبت نام کرده و هزینه پرداخت کرده دسترسی داشته باشه….قیمتشم دانشجویی باشه لطفا….

سجاد دریس

سلام.
به زودی این امکان افزوده میشه

Shahoo

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

سجاد دریس

آقای علیمحمدی فعلا درگیر کارای دیگه ای هستن. هر وقت فرصت پیدا کنن، حتما ادامه میدن

Shahoo

ممنونم
انشاا… موفق و سربلند باشید

xvision

با تشکر از آموزشهای بسیار خوبتون
اگر لطف کنید و فایل های آماده شده تا پایان هر آموزش رو هم برای دانلود قرار بدین برای آماتوری مثل من خیلی مفید خواهد بود با وجود دقتی که دارم به خرج می دم قسمت هایی از کار رو درست نمی دنم باید کجا اضافه کنم وقتی کد نهایی وجود داشته باشه من می تونم با مقایسه بفهمم دقیقا چه کاری مد نظر بوده

سجاد دریس

کجا مشکل دارین؟

aligh

سلام . دلیل استفاده از construct در مبحث شی گرایی چی هست ؟

لقمان آوند

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