PHP商城实战之栏目的添加(MVC模式)

  • 1,356

第一步:sql建表

  1. #栏目表
  2. create table category (
  3. cat_id int auto_increment primary key,
  4. cat_name varchar(20) not null default'',
  5. intro varchar(100) not null default '',
  6. parent_id int not null default 0
  7. )engine myisam charset utf8;

第二步:表单页,POST发送表单 到  cateaddAct.php

PHP商城实战之栏目的添加(MVC模式)

  1. <form action="cateaddAct.php" method="post" name="theForm" enctype="multipart/form-data">
  2. <table width="100%" id="general-table">
  3.     <tr>
  4.       <td class="label">分类名称:</td>
  5.       <td>
  6.         <input type='text' name='cat_name' maxlength="20" value='' size='27' /> <font color="red">*</font>
  7.       </td>
  8.     </tr>
  9.     <tr>
  10.       <td class="label">上级分类:</td>
  11.       <td>
  12.         <select name="parent_id">
  13.                       <option value="0">顶级分类</option>
  14.                       <?php foreach($catlist as $v){?>
  15.                       <option value="<?php echo $v['cat_id']; ?>">
  16.                       <?php echo str_repeat('&nbsp;',$v['lev']),$v['cat_name']; ?></option>
  17.                       <?php } ?>
  18.                     </select>
  19.       </td>
  20.     </tr>
  21.     <tr>
  22.       <td class="label">栏目简介:</td>
  23.       <td>
  24.         <textarea name='intro' rows="6" cols="48"></textarea>
  25.       </td>
  26.     </tr>
  27.     </table>
  28.     <div class="button-div">
  29.       <input type="submit" value=" 确定 " />
  30.       <input type="reset" value=" 重置 " />
  31.     </div>
  32.   <input type="hidden" name="act" value="insert" />
  33.   <input type="hidden" name="old_cat_name" value="" />
  34.   <input type="hidden" name="cat_id" value="" />
  35. </form>

第三步:cateaddAct.php接收数据,校验数据,调用model,添加成功/失败

  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. /*
  4. file cateaddAct.php
  5. 作用:接收cateadd.php表单发送过来的数据
  6. 并调用Model,把数据库入库
  7. */
  8. //---------接收cateadd.html表单页POST传过来的数据---------
  9. define('ACC',true);
  10. require('../include/init.php');
  11. //第一步,接收数据
  12. //print_r($_POST);
  13. //---------第二步,校验数据---------
  14. $data = array();
  15. if(empty($_POST['cat_name'])){              //校验POST传过来的cat_name
  16.     exit('栏目名不能为空');                 //如果为空,退出
  17. }
  18. $data['cat_name'] = $_POST['cat_name'];     //不为空,把$_POST['cat_name']赋值给$data['cat_name']
  19.                                             //同理判断intro及父栏目id是否合法
  20. $data['parent_id'] = $_POST['parent_id'];   //把$_POST['parent_id'];赋值给$data['parent_id']
  21. $data['intro'] = $_POST['intro'];           //把$_POST['intro'];赋值给$data['intro']
  22. //print_r($data); exit;
  23. //---------第三步,实例化model---------
  24. $cat = new CatModel();
  25. if($cat->add($data)){                       //判断  调用model的add方法
  26.     echo '栏目添加成功';
  27.     exit;
  28. }else{
  29.     echo '栏目添加失败';
  30.     exit;
  31. }
  32. ?>

调用CatModel方法

model.php

  1. defined('ACC')||exit('ACC Denied');
  2. class Model {
  3.     protected $table = NULL; // 是model所控制的表
  4.     protected $db = NULL; // 是引入的mysql对象
  5.     public function __construct() {
  6.         $this->db = mysql::getIns();
  7.     }
  8.     public function table($table) {
  9.         $this->table = $table;
  10.     }
  11. }

catemodel.php

  1. class CatModel extends Model{
  2.     protected $table = 'category';                              //category表
  3.     /*
  4.        你给我一个关键数组,键-->表中的列,值-->表中的值
  5.        add()函数自动插入改行数据
  6.     */
  7. //---------插入列表数据---------
  8.     public function add($date){                                 //cateaddAct.php调用此方法
  9.     return $this->db->autoExecute($this->table,$date);          //mysql类中的autoExecute方法拼接sql插入数据

mysql.class.php数据库类

  1. <?php
  2. /****
  3. 燕十八 公益PHP讲堂
  4. 论  坛: http://www.zixue.it
  5. 微  博: http://weibo.com/Yshiba
  6. YY频道: 88354001
  7. ****/
  8. defined('ACC')||exit('ACC Denied');
  9. class mysql extends db {
  10.     private static $ins = NULL;
  11.     private $conn = NULL;
  12.     private $conf = array();
  13.     protected function __construct() {
  14.         $this->conf = conf::getIns();
  15.         $this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);
  16.         $this->select_db($this->conf->db);
  17.         $this->setChar($this->conf->char);
  18.     }
  19.     public function __destruct() {
  20.     }
  21.     public static function getIns() {
  22.         if(!(self::$ins instanceof self)) {
  23.             self::$ins = new self();
  24.         }
  25.         return self::$ins;
  26.     }
  27.     public function connect($h,$u,$p) {
  28.         $this->conn = @mysql_connect($h,$u,$p);
  29.         if(!$this->conn) {
  30.             $err = new Exception('连接失败');
  31.             throw $err;
  32.         }
  33.     }
  34.     protected function select_db($db) {
  35.         $sql = 'use ' . $db;
  36.         $this->query($sql);
  37.     }
  38.     protected function setChar($char) {
  39.         $sql = 'set names ' . $char;
  40.         return $this->query($sql);
  41.     }
  42.     public function query($sql) {
  43.         $rs = mysql_query($sql,$this->conn);
  44.         log::write($sql);
  45.         return $rs;
  46.     }
  47.     public function autoExecute($table,$arr,$mode='insert',$where = ' where 1 limit 1') {
  48.         /*    insert into tbname (username,passwd,email) values ('',)
  49.         /// 把所有的键名用','接起来
  50.         // implode(',',array_keys($arr));
  51.         // implode("','",array_values($arr));
  52.         */
  53.         if(!is_array($arr)) {
  54.             return false;
  55.         }
  56.         if($mode == 'update') {
  57.             $sql = 'update ' . $table .' set ';
  58.             foreach($arr as $k=>$v) {
  59.                 $sql .= $k . "='" . $v ."',";
  60.             }
  61.             $sql = rtrim($sql,',');
  62.             $sql .= $where;
  63.             return $this->query($sql);
  64.         }
  65.         $sql = 'insert into ' . $table . ' (' . implode(',',array_keys($arr)) . ')';
  66.         $sql .= ' values (\'';
  67.         $sql .= implode("','",array_values($arr));
  68.         $sql .= '\')';
  69.         return $this->query($sql);
  70.     }
  71.     public function getAll($sql) {
  72.         $rs = $this->query($sql);
  73.         $list = array();
  74.         while($row = mysql_fetch_assoc($rs)) {
  75.             $list[] = $row;
  76.         }
  77.         return $list;
  78.     }
  79.     public function getRow($sql) {
  80.         $rs = $this->query($sql);
  81.         return mysql_fetch_assoc($rs);
  82.     }
  83.     public function getOne($sql) {
  84.         $rs = $this->query($sql);
  85.         $row = mysql_fetch_row($rs);
  86.         return $row[0];
  87.     }
  88.     // 返回影响行数的函数
  89.     public function affected_rows() {
  90.         return mysql_affected_rows($this->conn);
  91.     }
  92.     // 返回最新的auto_increment列的自增长的值
  93.     public function insert_id() {
  94.         return mysql_insert_id($this->conn);
  95.     }
  96. }

 

历史上的今天
11月
1
weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2016年11月1日18:58:48
  • 转载请务必保留本文链接:https://www.150643.com/393.html
匿名

发表评论

匿名网友 填写信息