zoukankan      html  css  js  c++  java
  • table表格实现点击修改 PHP同步数据库 排序

    最近几天在做一个网站,牵扯到一个导航管理的功能!领导说不用作,可是由于自己自作主张,搞了1天的功能。领导说这个导航管理就是不用做!容易牵扯出好多问题来!估摸是客户小的原因!

    没办法就把我1天的劳动荒废了!在这里贴出来,一个是与大家交流, 第二,也是希望大家可以使劲拍砖,相信大家的拍砖可以使我更好的成长!我可以学到更多的知识!

    本人初级PHP鸟一只!希望各位多多指教!

    上代码!

    首先是HTML代码!主要实现了!table的一个表格,未添加任何CSS样式,因为做到这一步,要添加样式的时候,领导说不需要!就再没往下做!

    我直接拷贝的我做的数据,表格里面存的是数据!我用的CI框架做的!所以数据都是PHP代码段输出!$nav_array是从数据库取出来的导航数组

    <div>这里是导航管理界面</div>
    <form method="post">
        <table class="table" border="1" style="border-collapse: collapse">
            <thead><tr><th>顺序</th><th>导航名称</th><th>管理</th></tr></thead>
    
            <tbody>
            <?php foreach($nav_array as $key=>$value):?>
                <tr num="<?php echo $value['id']?>" navid="<?php echo $value['id'];?>">
                    <td><?php echo $value['sort']?></td>
                    <td><?php echo $value['nav_name']?></td>
    <!--                <td><button class="button" num="--><?php //echo $value['id']?><!--">修改</button></td>-->
                </tr>
            <?php endforeach ?>
    
            </tbody>
        </table>
    </form>

    jquery代码实现的点击变修改!主要的思路就是用empty抹掉原来表格中的数据,添加进去一段input

    这段input  html代码应该可以用for循环搞定!我懒的搞了!有兴趣的自己研究下吧!

     $('.table').on('click', '.button', function(){
    
            var num = $(this).attr('num');//当前点击事件的按钮flag
            var current_tr  = $('table').find('tr[num="'+ num +'"]');//当前点击事件的tr行
            var current_tds = $(current_tr).find('td');//当前点击事件的行所有td
            var navid = $(current_tr).attr('navid');//这个是导航的id 是主键
            //存储当前点击事件行中td的原值,用在下面的form 的html代码中显示
            var arr = [];
            for(var i = 0; i < current_tds.length; i++){
                arr[i] = $(current_tds).eq(i).text();
            }
            //要替换的html代码
            var td_html = '<td><input type="hidden" name="nav_id" value="'+ navid +'"><input type="text" name="sort" value="'+ arr[0] +'"></td><td><input type="text" name="nav_alter" value="'+ arr[1] +'"></td><td><input type="submit" name="" value="确定"></td>';
            $('.table').find('tr[num="'+ num +'"]').empty().append(td_html);
    
        });

    PHP代码,这里直接从我的代码拷贝过来了,不修改了!有缺点欢迎指正!懂的话,应该可以改成自己的代码

    index主要就是载入这个页面,用了CI的input类,post接收到数据,从数据库提取一级导航,然后验证post过来的数据是否存在于数据库中的数据中!

     public function index(){
            $nav_id    = $this->input->post('nav_id');   //导航ID
            $nav_name = $this->input->post('nav_alter');//修改的导航名
            $sort = $this->input->post('sort');          //排序num
            $data['nav_array'] = $this->m_nav_manage->getNav();//提取所有一级导航,从数据库
    
            //检查post过来的数据 是否已经存在于数据库中
            if( $nav_name || $sort) {
                if( !$this->check_nav_in_array( $nav_name, $data['nav_array'] ) || !$this->check_nav_in_array($sort, $data['nav_array'])) {
    
                    $this->m_nav_manage->up_data_nav($nav_name, $sort, $nav_id);
                    $data['nav_array'] = $this->m_nav_manage->getNav();
                    //重写数据库并且提取数据
    
                }
            }
    
            $this->load->view('nav_manage', $data);
        }
    
    
    
        /**检查nav是否存在于二维数组中
         * @param $nav     待搜索的值
         * @param $array   被搜索的二维数组
         * @return bool
         */
        private function check_nav_in_array($value, $array) {
            for( $i = 0; $i < count($array); $i++ ) {
                foreach( $array as $key=>$value ) {
                    if( in_array( $value, $array[$i] ) ) {
                        return TRUE;
                    }
                }
            }
        }

    另外有一段在model中的函数,主要用来update数据和并且将排序更改

    ,实现思路 ----主要是用传过来的sort,$navid是隐藏的input中提交过来的,$navname    三个变量都是post过来的数据

    这段实现的比较纠结!总之  $nav_a  取得的是这个nav的ID    $nav_b取得的是这个nav的sort

    功能实现了,我自己到现在还没别过劲来!~~留给自己慢慢思考吧!

    get_one() 生成的select语句   SELECT id FROM $this->table WHERE sort = $sort;  其他自己的研究吧!

        public function up_data_nav($navName, $sort, $navId) {
        $nav_a = $this->m_common->get_one('id', $this->table, array('sort'=>$sort));//要被改成$sort的nav的id
            $nav_b = $this->m_common->get_one('sort', $this->table, array('id'=>$navId));//正在修改的nav的sort
            //print_r($nav_a); print_r($nav_b); die();
            $nav_alter_array['nav_name'] = $navName;
            $nav_alter_array['sort'] = $sort;
            //print_r($nav_alter_array);die();
            $this->m_common->up_data($this->table, $nav_alter_array, array('id' => $navId) );
            $this->m_common->up_data($this->table, array('sort'=>$nav_b['sort']), array( 'id' => $nav_a['id'] ) );
        }
    /**
         * 获取单条数据
         * @param $table 表名
         * @param $where 条件数组
         * @param string $fields 查询的字段 默认是 '*'
         *
         * 返回一个数组
         */
        public function get_one($fields = '*', $table, $where ) {
            if($where != '') {
                return $this->db->select($fields)->from($table)->where($where)->get()->row_array();
            } else {
                return $this->db->select($fields)->from($table)->get()->row_array();
            }
        }
    
    
    
     
  • 相关阅读:
    spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)
    spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群
    windows下安装redis
    Spring注解@Resource和@Autowired的区别
    spring常用管理bean注解
    maven中package和install命令的区别
    SpringBoot打war包并部署到tomcat下运行
    使用jquery.qrcode生成二维码及常见问题解决方案
    动态生成二维码插件 jquery.qrcode.js
    Notepad++的列编辑功能
  • 原文地址:https://www.cnblogs.com/itafter/p/4120005.html
Copyright © 2011-2022 走看看