最近几天在做一个网站,牵扯到一个导航管理的功能!领导说不用作,可是由于自己自作主张,搞了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();
}
}

 

table表格实现点击修改 PHP同步数据库 排序的更多相关文章

  1. 一百零四、SAP中ALV事件之十六,让ALV表格能点击修改

    一.上一篇我们写到生产的ALV表格,但是表格内容不支持修改,如果我们需要修改下图的数量,需要怎么操作呢 二.代码如下,设置 ls_fieldcat-edit = 'X'.   "允许编辑. ...

  2. 双击Table表格td变成text修改内容

    //先不多说这里上我的页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. table 表格的增删和修改

    如上图,图片的增删都没有问题:唯一的问题就是我改变下一行的内容时,把上面一行给覆盖了,费了好久,终于找到原因了,直接贴代码: 效果如下:

  4. 修改SQL Service数据库排序规则

    修改数据库 alter   database   KidsPang   COLLATE   Chinese_PRC_CI_AS 修改表中字段ALTER TABLE [Member] ALTER COL ...

  5. 修改sqlserver的数据库排序规则语句

    alter database SOETMS collate Chinese_PRC_CI_AS

  6. [转]jquery 点击表格变为input可以修改无刷新更新数据

    原文地址:http://www.freejs.net/article_biaodan_43.html 之前已经发了2篇类似的文章<点击变td为input更新>和<jquery表格可编 ...

  7. 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框

    在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...

  8. js 实现table表格拖拽和点击表头升降序排序

    js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...

  9. 使用 iview Table 表格组件修改操作的显示隐藏

    使用 iview Table 表格组件修改操作的显示隐藏,如下图 1.如何设置 table 操作按后台传入的状态值去渲染 不同的按钮? 解决方法 我们在vue2中,动态渲染html 使用的是 retu ...

随机推荐

  1. WOSA/XFS及SP综述

    转自  http://blog.csdn.net/andyhou/article/details/6888416 前言:         写给ATM硬件和软件人员的无言歌.         希望对工作 ...

  2. Flex中NetConnection与NetStream的关系、及浏览器并发连接数测试[转]

    最近在做一个基于BS结构的视频会议系统,决定采用开源的FluorineFx.net与Flex结合的方法进行开发,前期开发都非常顺利,包括同步白板等.但到了实时视频传输的时候,原本设计是每个客户端可以显 ...

  3. TP复习7

    //编写search方法,实现搜索 public function search(){ //获取post的数据,根据数据组装查询的条件,根据条件从数据库中获取数据,返回给页面中遍历 if(isset( ...

  4. Topcomponent --sighoff

    Topcomponent --sighoff 实现一个置于右边框的Topcomponent: 1.可远程同步更新(根据远程的xml文件),修改(增删)该xml文件,查看.刷新等 2.打包工程,记录该打 ...

  5. unity3d快捷键大全

    Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面 整合的专业游戏引擎.Unit ...

  6. Ambari源代码分析之总览

    一.基本概念: Resource:Ambari把能够被管理的资源的抽象为一个Resource实例,资源能够包括服务.组件.主机节点等,一个resource实例中包括了一系列该资源的属性: Proper ...

  7. Control.Refresh Control.Invalidate 和 Control.OnPaint之间的联系和区别

    1.Control.Invalidate会放一个WM_PAINT消息到消息队列,当Control处理到该消息的时候,就调用OnPaint. 2.Control.Refresh相当于以下两行:Contr ...

  8. 【优先队列】HDU 1873——看病找医生

    来源:点击打开链接 看路径记录的BFS之前,再看一遍优先队列的用法. 优先队列的排序规则可以用运算符重载的方式完成,通常意义下,应该用friend bool operator <进行重载. #i ...

  9. Laravel 5.1使用命令行模式(artisan)运行php脚本

    Laravel有内置命令调度器,可以方便的实现Cron. 任务调度定义在app/Console/Kernel.php文件的schedule方法中,该方法已经包含了一个示例.Laravel里有两种方法执 ...

  10. LeetCode26 Remove Duplicates from Sorted Array

    题目: Given a sorted array, remove the duplicates in place such that each element appear only once and ...