视图层

<style>
#tab tr td{
    height:40px;
    width:100px;
}
</style>
<form action="index.php?r=ceshi/index" method='post'>
<input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">
<table id="tab">
    <tr>
        <td></td>
        <td>显示顺序</td>
        <td>站点名称</td>
        <td>站点URL</td>
        <td></td>
    </tr>
    <?php foreach($info as $key=>$v): ?>
        <tr>
            <input type="hidden" name="cid[]" value="<?php echo $v['id']; ?>" />
            
            <td><input type="checkbox" name="check[]" class="ids" value="<?php echo $v['id'] ?>"></td>
            <td><input type="text" name="order[]" value="<?php echo $v['order']; ?>" size="3" /></td>
            <td><input type="text" name="title[]" value="<?php echo $v['title']; ?>"  size="8" /></td>
            <td><input type="text" name="url[]" value="<?php echo $v['url']; ?>" /></td>
            <td></td>
        </tr>
    <?php endforeach; ?>
    <tr>
        <td></td>
        <td colspan="4"><a href="javascript:;" onclick="jia(this)" >+添加友情链接</a></td>
    </tr>
    <tr>
        <td><input type="checkbox" id="all" onclick="getAll(this)" />删?</td>
        <td colspan="4">
            <input type="submit" value="提交" />
        </td>
    </tr>
</table>
</form>

<script>
    //点击添加一行
    function jia(obj){
        var tr=$(obj).parent().parent();
        //点击加一行
        var html='<tr><td></td><td><input type="text" name="order[]" size="3"  /></td><td><input type="text" name="title[]" size="8"  /></td><td><input type="text" name="url[]" /></td><td><input type="button" value="删除" onclick="del(this)" /></td></tr>';
        tr.before(html);
    }
    //点击删除当前行
    function del(obj){
        $(obj).parent().parent().remove();
    }
    //全选
    function getAll(ts){
        var ids = $('.ids');
        //alert(ids.length);
        for(var i=0;i<ids.length;i++){
            if(ts.checked==true){
                ids[i].checked=true;
            }else{
                ids[i].checked=false;
            }
        }
    }
</script>

控制器层

<?php

namespace frontend\controllers;

use Yii;
use frontend\models\Ceshi;
use yii\db\Query;

class CeshiController extends \yii\web\Controller
{
    public function actionIndex()
    {
        
        //判断是否为提交表单
        if(Yii::$app->request->ispost){
            //判断是否为删除操作
            if(Yii::$app->request->post('check')){
                $check = Yii::$app->request->post('check');
                //var_dump($check);die;
                $str = '';
                for($i=0 ; $i<count($check) ; $i++){
                    $sql = "delete from ceshi where id=".$check[$i];
                    if(Yii::$app->db->createCommand($sql)->execute()){
                        $str++;
                    }
                }
                if($str!=''){
                    echo "<script>alert('删除成功'); location.href='index.php?r=ceshi/index'; </script>";
                }
            }else{
                //执行修改和添加操作
                //var_dump(Yii::$app->request->post());die;
                $cid = Yii::$app->request->post('cid');
                $orders = Yii::$app->request->post('order');
                $titles = Yii::$app->request->post('title');
                $urls = Yii::$app->request->post('url');
                $flage = '';
                foreach ($orders as $k=>$v){
                    //判断是否有ID传值
                    if(!empty($cid[$k])){
                        
                        $order = $v;
                        $title = $titles[$k];
                        $url = $urls[$k];
                        $id = $cid[$k];
                        //echo $id;exit;
                        $res = Yii::$app->db->createCommand()->update('ceshi', [
                                            'order' => $v,
                                            'url'  => $url,
                                            'title' => $title
                                        ] , "id=$id")->execute();
                        //数据可能没被修改,只有成功一条就改变标记的值
                        if($res){
                            $flage = '1';
                        }
                    }else{
                        $order = $v;
                        $title = $titles[$k];
                        $url = $urls[$k];
                        $res = Yii::$app->db->createCommand()->insert('ceshi', [
                                            'order' => $v,
                                            'url'  => $url,
                                            'title' => $title
                                        ])->execute();
                        if($res){
                            $flage = '1';
                        }
                    }
                }
                //判断是否成功
                if($flage=='1'){
                    echo "<script>alert('修改/添加成功'); location.href='index.php?r=ceshi/index'; </script>";
                }else{
                    echo "<script>alert('无任何操作'); location.href='index.php?r=ceshi/index'; </script>";
                }
            }
        }
        $query = new Query();
        //查询所有数据
        $info =  $query
                ->select('*')
                ->from('ceshi')
                ->orderBy(['order' => SORT_ASC])
                ->all();
        
        return $this->render('index' , ['info' => $info]);
    }

}

另一种表单,0-0

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
$form = ActiveForm::begin(['method'=>'post','action' => 'index.php?r=test/index']);

?>
<style>
#tab tr td{
    height:40px;
    width:100px;
}
</style>
<table id='tab'>
<tr>
    <td><input type='checkbox'  /></td>
    <td>显示顺序:</td>
    <td>站点名称:</td>
    <td>站点地址:</td>
</tr>
<?php foreach ($data as $key=> $v):?>
    <tr id='tr1'>
    <input type="hidden" name="cid[]" value="<?php echo $v['id']; ?>" />
        <td><input type='checkbox' name='check[]' class='ids' value="<?php echo $v['id']?>" /></td>
        <td><input type='text' name='t_xu[]' value="<?= $v['t_xu']?>" size="3"/></td>
        <td><input type='text' name='t_name[]' value="<?= $v['t_name']?>"size="8" /></td>
        <td class='td1'><input type='text' name='t_url[]' value="<?= $v['t_url']?>" /></td>        
    </tr>
<?php endforeach; ?>
    <tr id='tr2'></tr>
</table>
<input type='button' value='+' id='btn' />添加友情链接
<p><input type='checkbox' onclick='getAll(this)'  />&nbsp;&nbsp;&nbsp;&nbsp;
删?&nbsp;&nbsp;&nbsp;&nbsp;
<input type='submit' id='btnok' value='提交'/></p>
<?php ActiveForm::end()?>

<?php $this->beginBlock('checkAgree');?>
    $('#btn').on('click',function()
    {
        //var trhtml = "<td><input type='checkbox' name='id' /></td><td><input type='text' name='t_xu' /></td><td><input type='text' name='t_name'/></td><td><input type='text' name='t_url' /></td>";
        //alert(trhtml);
        //$('#tr2').append(trhtml);
        var tab=document.getElementById('tab');
        var n=document.getElementById('tr2').rowIndex+1;
        var tr=tab.insertRow(n);
        var td=tr.insertCell(0);
        tr.innerHTML="<td></td><td><input type='text' name='t_xu[]' size='3' /></td><td><input type='text' name='t_name[]' size='8'/></td><td><input type='text' name='t_url[]' /><td><input type='button' value='删除此行' onclick='deltr(this)' /></td>";
    });
    function deltr(ts){  
        var tr = $(ts).parent().parent();  
        tr.remove();  
    }
    function getAll(ts)
    {
        var ids = $('.ids');
        //alert(ids.length);
        for(i=0; i<ids.length; i++)
        {
            if(ts.checked == true)
            {
                ids[i].checked = true;
            } else {
                ids[i].checked = false;
            }
        }
    }
<?php $this->endBlock(); $this->registerJs($this->blocks['checkAgree'], \yii\web\View::POS_END);?>

yii2 单页面增删改的更多相关文章

  1. 权限管理系统之LayUI实现页面增删改查和弹出层交互

    由于对LayUI框架不太熟悉,昨天抽空看了下LayUI的文档,今天在网上找了使用LayUI进行增删改查相关内容,自己照葫芦画了个瓢,画瓢部分不是很难,主要是下午遇到了一个弹出层的问题耗时比较久. 同一 ...

  2. 在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计

    在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今 ...

  3. vue.js带复选框表单的增删改查

    近段时间由于公司项目要求,前端开始使用VUE框架进行开发,最近刚开始学习,做了一个表单的增删改查,和大家分享一下. 页面模型代码设计如下 <template> <div id=&qu ...

  4. django-orm框架表单的增删改查

    08.14自我总结 django-orm框架 一.orm基本配置 1.创建django项目 命令行:cmd先去到django创建目录,然后输入django-admin startproject dja ...

  5. Django框架(八)--单表增删改查,在Python脚本中调用Django环境

    一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...

  6. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

  7. YII2.0 数据库增删改查

    /*==================== dkhBaseModel 数据库增删改查方法 start ================================*/ //新增一条数据 publ ...

  8. $Django orm增删改字段、建表 ,单表增删改查,Django请求生命周期

    1 orm介绍  ORM是什么   ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM.  一 ...

  9. 在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建

    通常,在同一个页面上实现增删改查,会通过弹出框实现异步的添加和修改,这很好.但有些时候,是不希望在页面上弹出框的,我们可能会想到Knockoutjs,它能以MVVM模式实现同一个页面上的增删改查,再辅 ...

随机推荐

  1. Populating Next Right Pointers in Each Node II [Leetcode]

    Problem Description http://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ ...

  2. TortoiseGit GitHub 使用指南

    TortoiseGit GitHub 使用指南  这个文档讲的还是比较清楚和完整的.需要注意的一点是ssh的方式,取gitHub的URL的时候选取ssh方式. http://www.360doc.co ...

  3. 今天同事给介绍了一个LINQ的工具,LINQPad

    今天刚知道LINQPad,详细信息参照http://www.linqpad.net/,免费下载,安装之后样子如下所示,根据向导,链接上本地数据库,比较熟悉的操作风格. 对LINQ的了解太浅,还没有更多 ...

  4. SASS学习笔记1 —— 安装、编译和调试

    一.什么是SASS SASS是一种"CSS预处理器"(css preprocessor)的开发工具,为CSS加入编程元素,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的 ...

  5. ASP.NET文章目录导航

    ASP.NET文章目录导航 ASP.NET-[读书笔记]-原创:ASP.Net状态管理读书笔记--思维导图 (2013-12-25 10:13) ASP.NET-[潜在危险]-从客户端中检测到有潜在危 ...

  6. spring mvc如何获取问号后的url参数

    @RequestMapping(method=RequestMethod.GET) public ModelAndView allUsers(@RequestParam int page){ Mode ...

  7. Htmlhelper—CheckBox自动生成两个input

    前言 在之前的一篇文章中小猪分享了Htmlhelper的用法.其中有意思的一个就是Checkbox,有必要单独拿出来讲一讲. Htmlhelper—CheckBox 细心的读者一定发现了当使用类似语法 ...

  8. java面向对象编程——第五章 对象的行为

    5.1 方法调用栈 当一个方法被调用时,将导致控制流程跳转到被调用的方法.然后,控制流程执行方法中的语句.当然,被执行的方法可能会调用其它方法,导致控制流程跳转到其它方法.所有的方法调用都维护在一个称 ...

  9. js基础之动画(一)

    一.让div动起来 var oBtn = document.getElementById('btn1');  var timer='';//设置定时器 oBtn.onclick=function st ...

  10. http://bootswatch.com/

    http://bootswatch.com/ http://v3.bootcss.com/examples/dashboard/