最近几天在做一个网站,牵扯到一个导航管理的功能!领导说不用作,可是由于自己自作主张,搞了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. tomcat配置文件server.xml具体解释

    元素名 属性 解释 server port 指定一个port,这个port负责监听关闭tomcat 的请求 shutdown 指定向port发送的命令字符串 service name 指定servic ...

  2. INDY idhttp Post用法

    http://www.cnblogs.com/tk-del/archive/2013/05/10/3071541.html function Post(AURL: string; ASource: T ...

  3. MySQL优化---DBA对MySQL优化的一些总结

      非原创, 来自梦嘉朋友, 非常好的总结, 一起学习. ------------------------------------------------- 1. 要确保有足够的内存数据库能够高效的运 ...

  4. 从实验室搬到宿舍后可以上QQ但打不开网页

    如果你是属于如标题这种情况:也就是从实验室换到宿舍或者从宿舍换到实验室,在之前的地方可以上网,但换了地方后就出现只能上QQ而不能打开网页的情况.此时,首先考虑DNS配置,很有可能是因为你搬到了宿舍,但 ...

  5. android 搭建开发环境

    法一.直接集成的ADT+ECLIPSE 还有64位的jdk即可 法二.EClipse装好后,下载好SDK,ADT(在线或离线装) sdk下载后,点sdk.exe 文件. 如果更新失败,解决方法如下 C ...

  6. matplotlib作图中文显示问题

    def set_ch(): from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcPa ...

  7. 解决java中对URL编码的问题

    首先查看javascript中的encodeURI和encodeURLComponent方法的区别. encodeURI:不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行 ...

  8. 开启AsyncTask从网络加载图片

    /*AsyncTask 异步任务即做一些简单的异步处理 :是handle与线程池的封装 * 第一个泛型:参数类型泛型 * 第二个泛型:更新进度泛型 * 第三个泛型:onProgressUpdate的返 ...

  9. 二手奢侈品电商Vestiaire Collective融资2000万美元

    巴黎奢侈品电商Vestiaire Collective获得了2000万美元的C轮融资,投资方包括知名出版集团Condé Nast.Idinvest.Balderton和Ventech,其中Condé ...

  10. IOS获取系统时间 NSDate

    //返回当前时间,精确到毫秒.- (NSString *)getTimeNow { NSString* date; NSDateFormatter * formatter = [[NSDateForm ...