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