• PHP和MySQL Web开发从新手到高手,第6天-创建joke管理页面


    1. 创建joke管理页面

      主要包含以下几个页面:

      A. index.php, 准备各种变量数据.供展示页面使用.

      B. jokes.html.php, 显示joke.

      C. form.html.php, 用于编缉或添加笑话的页面.

      D. search.form.html.php, 用于搜索笑话的面面.

    页面郊果:

    image

    2. index.php的主要流程

    1111111111111111111111111111111111111

    2.1 是否已登录

    if (!user_is_login()){
          include '../login.html.php';
          exit();
      }

    2.2 是否有权限

    if (!user_has_role('Content Editor')){
          $error = 'only Content Editor may access this page...';
          include '../access.denied.html.php';
          exit();
      }

    2.3 搜索笑话

    // add search joke function
      if (isset($_GET['searchjoke']))
      {
          // build list of authors 
          try {
              $statement = 'select id, name from author';
              $result = $pdo->query($statement);
    
              foreach($result as $row) {
                  $authors[] = array('id'=>$row['id'], 'name'=>$row['name']);
              }      
          } catch (PDOException $e) {
              $error = 'Query authors faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          // build list of categories
          try {
              $statement = 'select id,name from category;';
              $result = $pdo->query($statement);
               
              foreach($result as $row) {
                  $categories[] = array('id'=>$row['id'], 'name'=>$row['name'], 'selected'=>false);
              }
          } catch (PDOException $e) {
              $error = 'Query categories faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          include 'search.form.html.php';
          exit();
      }
      
      // push search button 
      if (isset($_GET['action']) && $_GET['action'] == 'search'){      
          $select = ' select joke.id, joketext, name, email ';
          $from = ' from joke LEFT JOIN author ON author.id = joke.authorid  ';
          $where = ' where true ';
          
          $placeholders = array();
          
        if ($_GET['author'] != '') {
              $where .= ' and authorid = :authorid ';
              $placeholders[':authorid'] = $_GET['author'];
          }
          if ($_GET['category'] != '') {
              $from .= ' inner join jokecategory on joke.id = jokeid ';      
              $where .= ' and categoryid = :categoryid ';
              $placeholders[':categoryid'] = $_GET['category'];
          }
          if ($_GET['text'] != '') {
              $where .= ' and joketext like :joketext ';
              $placeholders[':joketext'] = '%'.$_GET['text'].'%';
          }
          
          try {
              $sql = $select.$from.$where;
              $s = $pdo->prepare($sql);
              $s->execute($placeholders);
              $rowCount = $s->rowCount();
          } catch (PDOException $e) {
              $error = 'Query joke faild...'
                      .$e->getMessage();
          
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          foreach ($s as $row) {
              //$jokes[] = array('id'=>$row['id'],'name'=>$row['joketext']);
              $jokes[] = array('id'=>$row['id'],'text'=>$row['joketext'],'name'=>$row['name'],'email'=>$row['email']);
          }
          
          include 'jokes.html.php';
          exit(); 
      }

    2.4 添加笑话

    // add joke link
      if (isset($_GET['addjoke'])) {
          $pageTitle = 'Add joke';
          
          $jokeText='';
          
          $action = 'addJoke';
          $id = '';
          $button = 'Add joke';
          $authorid = '';
          
          // build list of authors
          try {
              $statement = 'select id, name from author';
              $result = $pdo->query($statement);
              
              foreach($result as $row) {
                  $authors[] = array('id'=>$row['id'], 'name'=>$row['name']);
              }
              
          } catch (PDOException $e) {
              $error = 'Query authors faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          // build list of categories
          try {
              $statement = 'select id,name from category;';
              $result = $pdo->query($statement);
          
              foreach($result as $row) {
                  $categories[] = array('id'=>$row['id'], 'name'=>$row['name'], 'selected'=>false);
              }          
          } catch (PDOException $e) {
              $error = 'Query categories faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          include 'form.html.php';
          exit();
      }
    
      // add joke button
      if (isset($_GET['addJoke'])) { 
          // error tips...
          if($_POST['jokeText'] == ''){
              $error = 'jokeText is empty...';
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }      
          if($_POST['author'] == ''){
              $error = 'author is empty...';
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          if(!isset($_POST['categories'])){
              $error = 'categories is empty...';
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          try {
              $statement = 'INSERT INTO joke SET joketext = :joketext, authorid=:authorid, jokedate = CURDATE()';
              $s = $GLOBALS['pdo']->prepare($statement);
              $s->bindValue(':joketext', $_POST['jokeText']);
              $s->bindValue(':authorid', $_POST['author']);
              $s->execute();          
          } catch (PDOException $e) {
              $error = 'Error adding joke to databases...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }      
          
          $jokeid = $pdo->lastInsertId();      
          
          // insert joke jokecategory , step 1 insert new items.
          // step 1 insert new items.
          try {
              $statement = 'insert into jokecategory(jokeid,categoryid) values(:jokeid,:categoryid)';
              $s = $pdo->prepare($statement);
          
              foreach ($_POST['categories'] as $categoryid)
              {
                  $s->bindValue(':jokeid', $jokeid);
                  $s->bindValue(':categoryid', $categoryid);
                  $s->execute();
              }
          
          } catch (Exception $e) {
              $error = 'Error deleting joke to databases...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }           
          
        header('Location: .');
          exit();
      }

    2.5 编辑笑话

    // edit a joke
      if (isset($_POST['action']) && $_POST['action'] == 'Edit') {
          
          // build list of authors
          try {
              $statement = 'select id, name from author';
              $result = $pdo->query($statement);
          
              foreach($result as $row) {
                  $authors[] = array('id'=>$row['id'], 'name'=>$row['name']);
              }
          
          } catch (PDOException $e) {
              $error = 'Query authors faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          // build list of categories
          try {
              $statement = 'select distinct categoryid from jokecategory where jokeid=:jokeid';
              $s = $pdo->prepare($statement);
              $s->bindValue(':jokeid', $_POST['id']);
              $s->execute();          
              $idCount = $s->rowCount();
              while ($row = $s->fetch()) {
                  $categoryids_of_joke[] = $row['categoryid'];
              }
          } catch (PDOException $e) {
              $error = 'Query categories faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          try {
              $statement = 'select id,name from category;';
              $result = $pdo->query($statement);
                  
              foreach($result as $row) {
                  if ($idCount > 0)
                  {
                      $categories[] = array('id'=>$row['id'], 'name'=>$row['name'], 'selected' => in_array($row['id'], $categoryids_of_joke));
                  }
                  else 
                  {
                      $categories[] = array('id'=>$row['id'], 'name'=>$row['name'], 'selected' => false);
                  }
                  
              }
          } catch (Exception $e) {
              $error = 'Query category faild...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          try {
              $sql = 'SELECT joketext,jokedate,authorid FROM joke WHERE id=:id';
              $s = $pdo->prepare($sql);
              $s->bindValue(':id', $_POST['id']);
              $s->execute();
              
              $row = $s->fetch();
              
              $jokeText = $row['joketext'];
              
              $pageTitle = 'Edit joke';
              $action = 'editJoke';
              $id = $_POST['id'];      
              $authorid = $row['authorid'];
              $button = 'Update joke';
               
              include 'form.html.php';
              exit();
              
          } catch (Exception $e) {
              $error = 'Error Edit joke ...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
      }
      
      if (isset($_GET['editJoke']) && $_POST['jokeText'] != '') {      
          if ($_POST['author'] == '' || !isset($_POST['categories'])){
              $error = 'Please select author and category...';
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          // update jokeText
          try {
              $statement = 'update joke set joketext = :joketext, authorid=:authorid where id=:id';
              $s = $pdo->prepare($statement);
              $s->bindValue(':joketext', $_POST['jokeText']);
              $s->bindValue(':authorid', $_POST['author']);
              $s->bindValue(':id', $_POST['id']);
              $s->execute();
          } catch (Exception $e) {
              $error = 'Error update joke to databases...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          // update joke jokecategory , step 1 delete old items, step 2 insert new items.
          // step 1 delete old items
          try {
              $statement = 'delete from jokecategory where jokeid=:jokeid';
              $s = $pdo->prepare($statement);
              $s->bindValue(':jokeid', $_POST['id']);
              $s->execute();
          } catch (Exception $e) {
              $error = 'Error deleting jokecategory to databases...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          // step 2 insert new items.
          try {
              $statement = 'insert into jokecategory(jokeid,categoryid) values(:jokeid,:categoryid)';
              $s = $pdo->prepare($statement);
              
              foreach ($_POST['categories'] as $categoryid)
              {
                  $s->bindValue(':jokeid', $_POST['id']);
                  $s->bindValue(':categoryid', $categoryid);
                  $s->execute();
              } 
          } catch (Exception $e) {
              $error = 'Error deleting joke to databases...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
      }

    2.6 删除笑话

    // delete a joke button
      if (isset($_POST['action']) && $_POST['action'] == 'Delete') {
          try {
              $statement = 'DELETE FROM joke WHERE id = :id';
              $s = $GLOBALS['pdo']->prepare($statement);
              $s->bindValue(':id', $_POST['id']);
              $s->execute();          
          } catch (PDOException $e) {
              $error = 'Error deleting joke to databases...'
                      .$e->getMessage();
              include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
              exit();
          }
          
          header('Location: .');
          exit();
      }

    2.7 显示笑话列表

    // main page contents
      try {
          $statement = 'SELECT joke.id, joketext, name, email FROM joke LEFT JOIN author ON author.id = joke.authorid LIMIT 10;';
          $result = $GLOBALS['pdo']->query($statement);
          
          while ($row = $result->fetch()) {
              $jokes[] = array(
                      'id'=>$row['id'], 
                      'text'=>$row['joketext'], 
                      'name'=>$row['name'], 
                      'email'=>$row['email']
              );          
          }      
          
          $sql = "SELECT table_rows AS RCT FROM information_schema.tables WHERE table_name = 'joke';";
          
          $s = $pdo->prepare($sql);
          $s->execute();
          $row = $s->fetch();
          $rowCount = $row['RCT'];
          
      } catch (PDOException $e) {
          $error = 'exec query sql error...'
                  .$e->getMessage();
          include $_SERVER['DOCUMENT_ROOT'].'/PHP_MySQL_Web/includes/error.html.php';
          exit();
      }
      
       include 'jokes.html.php';
  • 相关阅读:
    JavaScripts广告轮播图以及定时弹出和定时隐藏广告
    JavaScript正则表达
    表单常用标签 和 属性
    html框架集
    Hbuilder 快捷键
    css 图片
    html input accept类型
    db2 sql
    js 数组排序
    html input size maxlength
  • 原文地址:https://www.cnblogs.com/BigBigLiang/p/4934235.html
Copyright © 2020-2023  润新知