首页 > 其他 > 详细

时间: 2014年3月31日21:04:48 商城实战之栏目编辑

时间:2014-04-01 02:27:44      阅读:465      评论:0      收藏:0      [点我收藏+]


catedit.php

<?php

/**

*思路:

*接收cat_id

*实例化model

*调用model取出栏目信息

*展示到表单

**/

define(‘ACC‘,true);

require(‘../include/init.php‘);

$cat_id = $_GET[‘cat_id‘] + 0;

$cat = new CatModel();

$catinfo = $cat->find($cat_id);

$catlist = $cat->select();

$catlist = $cat->getCatTree($catlist);

//print_r($catinfo);

include(ROOT . ‘view/admin/templates/catedit.html‘);

修改CatModel.class.php ,增加取出一行数据的功能

   // 根据主键 取出一行数据

   public function find($cat_id) {

       $sql = ‘select * from category where cat_id=‘ . $cat_id;

       return $this->db->getRow($sql);

   }

Catedit.html

 <form action="cateditAct.php" method="post" name="theForm" enctype="multipart/form-data">

 <table width="100%" id="general-table">

     <tr>

       <td class="label">分类名称:</td>

       <td>

         <input type=‘text‘ name=‘cat_name‘ maxlength="20" value=‘<?php echo $catinfo[‘cat_name‘]; ?>‘ size=‘27‘ /> <font color="red">*</font>

       </td>

     </tr>

     <tr>

       <td class="label">上级分类:</td>

       <td>

         <select name="parent_id">

                       <option value="0">顶级分类</option>

<?php foreach($catlist as $v) { ?>

                       <option value="<?php echo $v[‘cat_id‘];?>"

  <!-- 如何默认选中父类? -->

<?php echo $v[‘cat_id‘] = = $catinfo[‘parent_id‘]?"selected":‘‘?>>

 <?php echo str_repeat(‘  ‘,$v[‘lev‘]),$v[‘cat_name‘]; ?></option>

 <?php } ?>

                     </select>

       </td>

     </tr>

     <tr>

       <td class="label">栏目简介:</td>

       <td>

         <textarea name=‘intro‘ rows="6" cols="48"><?php echo $catinfo[‘intro‘]; ?></textarea>

       </td>

     </tr>

     </table>

     <div class="button-div">

       <input type="submit" value=" 确定 " />

       <input type="reset" value=" 重置 " />

     </div>

<!-- 传递要修改的cat_id,放在隐藏表单内 -->

   <input type="hidden" name="cat_id" value="<?php echo $catinfo[‘cat_id‘];?>" />

 </form>

cateditAct.php

<?php

define(‘ACC‘,true);

require(‘../include/init.php‘);

// POST判断合法性

$data = array();

if(empty($_POST[‘cat_name‘])) {

   exit(‘栏目名不能为空‘);

}

$data[‘cat_name‘] = $_POST[‘cat_name‘];

$data[‘parent_id‘] = $_POST[‘parent_id‘];

$data[‘intro‘] = $_POST[‘intro‘];

$cat_id = $_POST[‘cat_id‘] + 0;

// 调用model 来更改

$cat = new CatModel();

if($cat->update($data,$cat_id)) {

   echo ‘修改成功‘;

} else {

   echo ‘修改失败‘;

}

修改CatModel.class.php ,增加修改功能

   public function update($data,$cat_id=0) {

       $this->db->autoExecute($this->table,$data,‘update‘,‘ where cat_id=‘ . $cat_id);

       return $this->db->affected_rows();

   }

关于:$cat_id = $_GET[‘cat_id‘] + 0;

目的: 为了防止sql注入,tid,goods_id都是正整数类型,防止人为了在后面追加 ?tid=1 or 1 这样的语句.
原理: 不管你的参数多么险恶,+0后都老老实实变成数值类型


比如 ‘?tid=1 or 1‘ , $_GET[‘tid‘]+0 后值变成1;


有学生问,你为什么不用(int)强转或intval来转换.
1: 用哪种方式,目的都是一样的
2: +0,只需要打2个字符,(int)要打5,intval()要打8.
3: 对于+0,我不需要关心$tid是整型还是浮点型,还是大于2^32的长整型(mysql中取得bigint), +0都能适应.
而用强转,则会发生溢出,当然你可以说,我用float来转,那不是还得分情况区别吗.

问题:1.删除上级目录,其子目录仍有内容,应不能删除,如何解决?

     2.栏目编辑,栏目选择上的混乱?


本文出自 “杜国栋个人PHP学习博文” 博客,请务必保留此出处http://duguodong.blog.51cto.com/7667978/1387693

时间: 2014年3月31日21:04:48 商城实战之栏目编辑,布布扣,bubuko.com

时间: 2014年3月31日21:04:48 商城实战之栏目编辑

原文:http://duguodong.blog.51cto.com/7667978/1387693

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!