最近几天在做一个网站,牵扯到一个导航管理的功能!领导说不用作,可是由于自己自作主张,搞了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. win8 企业版 安装 .net2.0 .net 3.5

    Windows 8 默认集成 .Net Framework 4.5,因此运行一些基于3.5或以前版本的程序时会弹出这个提示. 2012-3-2 15:24 上传 下载附件 (23.91 KB)   这 ...

  2. Codeforces Round #290 (Div. 2) A. Fox And Snake 水题

    A. Fox And Snake 题目连接: http://codeforces.com/contest/510/problem/A Description Fox Ciel starts to le ...

  3. POJ 2309 BST 树状数组基本操作

    Description Consider an infinite full binary search tree (see the figure below), the numbers in the ...

  4. 即时通信(RPC)的Rtmp实现--配置篇

    http://flexman.blog.sohu.com/129838570.html http://flexman.blog.sohu.com/130007574.html step 1: 首先要确 ...

  5. unity3d快捷键大全

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

  6. 为什么Wireshark无法解密HTTPS数据

    为什么Wireshark无法解密HTTPS数据 导读 由于需要定位一个问题,在服务器上tcpdump抓取https数据包,然后下载到本地打开wireshark分析.然后我们下载域名私钥配置到wires ...

  7. QQ上传大文件为什么这么快

    今天和同事在群里讨论“QQ上传大文件/QQ群发送大文件时,可以在极短的时间内完成”是如何做到的. 有时候我们通过QQ上传一个几百M的文件,竟然只用了几秒钟,从带宽上限制可以得出,实际上传文件是不可能的 ...

  8. jquery . fancybox()

    1.父页面 function chooseTopic(btn) {//选择议题 $.fancybox({ type : 'iframe', href : '', fitToView : false, ...

  9. iOS 重力感应 学习1 陀螺仪 水平仪 指南针

    小球可以随着重力感应 四处乱撞. 放大了坐标位移 就可以看见小球动了. 然后规定小球的路径 当滑到中间时候 弹出一张图片 作为提示. 我做了一个小demo 效果不错哦 CMMotionManager ...

  10. android -- WatchDog看门狗分析

    在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...