• php下拉选项的批量操作方法


    实现功能,操作项可以单独删除,批量项可以批量删除,批量显示,隐藏(改广告的数据库的status_is的值);

    1.视图关键点:

    <td ><input type="checkbox" name="id[]" value="<?php echo $row->id?>">
            <?php echo $row->id?></td>
    

      

    <div class="fixsel">
              <input type="checkbox" name="chkall" id="chkall" onclick="checkAll(this.form, 'id')" />
              <label for="chkall">全选</label>
              <select name="command">
                <option>选择操作</option>
                <option value="adDelete">删除</option>
                <option value="adVerify">显示</option>
                <option value="adUnVerify">隐藏</option>
              </select>
              <input id="submit_maskall" class="button confirmSubmit" type="submit" value="提交" name="maskall" />
            </div>
    
    /*单个删除*/
    
    <a href="<?php echo  $this->createUrl('batch',array('command'=>'adDelete', 'id'=>$row->id))?>" class="confirmSubmit">
    

      

    2.控制器:

    /**
    	 * 批量操作
    	 *
    	 */
        public function actionBatch ()
        {
            if (XUtils::method() == 'GET') {     //单个删除是get方式
                $command = trim($_GET['command']);
                $ids = intval($_GET['id']);
            } else 
                if (XUtils::method() == 'POST') {
                    $command = trim($_POST['command']);
                    $ids = $_POST['id'];
                    is_array($ids) && $ids = implode(',', $ids);
                } else {
                    XUtils::message('errorBack', '只支持POST,GET数据');
                }
            empty($ids) && XUtils::message('error', '未选择记录');
            
            switch ($command) {
                
                case 'adDelete':
                    parent::_acl('ad_delete');
                    parent::_adminiLogger(array('catalog'=>'delete', 'intro'=>'删除广告,ID:'.$ids));
                    parent::_delete(new Ad(), $ids, array ('ad' ), array ('attach_file' ));
                    break;
                case 'adVerify':
                    parent::_acl('ad_verify');
                    parent::_adminiLogger(array('catalog'=>'delete', 'intro'=>'广告状态变更为显示,ID:'.$ids));
                    parent::_verify(new Ad(), 'verify', $ids, array ('ad' ));
    	
                    break;
                case 'adUnVerify':
                    parent::_acl('ad_verify');
                    parent::_adminiLogger(array('catalog'=>'delete', 'intro'=>'广告状态变更为隐藏,ID:'.$ids));
                    parent::_verify(new Ad(), 'unVerify', $ids, array ('ad' ));
                    break;
                default:
                    throw new CHttpException(404, '错误的操作类型:' . $command);
                    break;
            }
        
        }
    

     父类的删除函数:

    protected function _delete ($model = null, $id = '', $redirect = 'index', $attach = null, $pkField = 'id')
        {
            if ($attach) {          //如果有附件要删除广告的图片
                $data = $model->findAll($pkField . ' IN(:id)', array (':id' => $id ));
                foreach ((array) $data as $row) {
                    foreach ((array) $attach as $value) {
                        if (! empty($row[$value])) {
                            @unlink($row[$value]);
                        }
                    }
                }
            }
            $result = $model->deleteAll(array ('condition' => 'id IN(' . $id . ')' ));
            //刷新缓存
            self::_refreshCache($model);
            $this->redirect($redirect);
        }
    

      

    protected function _verify ($model = null, $type = 'verify', $id = '', $redirect = 'index', $cdField = 'status_is', $pkField = 'id')
        {
            $criteria = new CDbCriteria();
            $criteria->condition = $pkField . ' IN(' . $id . ')';
            $showStatus = $type == 'verify' ? 'Y' : 'N';
            $result = $model->updateAll(array ($cdField => $showStatus ), $criteria);
            //刷新缓存
            self::_refreshCache($model);
            $this->redirect($redirect);
        }
    

      

  • 相关阅读:
    如何创建多线程
    Oracle导入数据表
    Oracle如何创建数据库用户
    Oracle忘记密码,如何修改密码
    Oracle如何创建表空间
    leetcode 787. K 站中转内最便宜的航班 js题解
    JS实现平衡二叉树
    typescript的安装与配置
    二分查找JS实现
    JS作用域(一):一般变量声明
  • 原文地址:https://www.cnblogs.com/fengzhiqiangcaisangzi/p/3367969.html
Copyright © 2020-2023  润新知