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();
}
}
table表格实现点击修改 PHP同步数据库 排序的更多相关文章
- 一百零四、SAP中ALV事件之十六,让ALV表格能点击修改
一.上一篇我们写到生产的ALV表格,但是表格内容不支持修改,如果我们需要修改下图的数量,需要怎么操作呢 二.代码如下,设置 ls_fieldcat-edit = 'X'. "允许编辑. ...
- 双击Table表格td变成text修改内容
//先不多说这里上我的页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- table 表格的增删和修改
如上图,图片的增删都没有问题:唯一的问题就是我改变下一行的内容时,把上面一行给覆盖了,费了好久,终于找到原因了,直接贴代码: 效果如下:
- 修改SQL Service数据库排序规则
修改数据库 alter database KidsPang COLLATE Chinese_PRC_CI_AS 修改表中字段ALTER TABLE [Member] ALTER COL ...
- 修改sqlserver的数据库排序规则语句
alter database SOETMS collate Chinese_PRC_CI_AS
- [转]jquery 点击表格变为input可以修改无刷新更新数据
原文地址:http://www.freejs.net/article_biaodan_43.html 之前已经发了2篇类似的文章<点击变td为input更新>和<jquery表格可编 ...
- 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框
在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...
- js 实现table表格拖拽和点击表头升降序排序
js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...
- 使用 iview Table 表格组件修改操作的显示隐藏
使用 iview Table 表格组件修改操作的显示隐藏,如下图 1.如何设置 table 操作按后台传入的状态值去渲染 不同的按钮? 解决方法 我们在vue2中,动态渲染html 使用的是 retu ...
随机推荐
- tomcat配置文件server.xml具体解释
元素名 属性 解释 server port 指定一个port,这个port负责监听关闭tomcat 的请求 shutdown 指定向port发送的命令字符串 service name 指定servic ...
- INDY idhttp Post用法
http://www.cnblogs.com/tk-del/archive/2013/05/10/3071541.html function Post(AURL: string; ASource: T ...
- MySQL优化---DBA对MySQL优化的一些总结
非原创, 来自梦嘉朋友, 非常好的总结, 一起学习. ------------------------------------------------- 1. 要确保有足够的内存数据库能够高效的运 ...
- 从实验室搬到宿舍后可以上QQ但打不开网页
如果你是属于如标题这种情况:也就是从实验室换到宿舍或者从宿舍换到实验室,在之前的地方可以上网,但换了地方后就出现只能上QQ而不能打开网页的情况.此时,首先考虑DNS配置,很有可能是因为你搬到了宿舍,但 ...
- android 搭建开发环境
法一.直接集成的ADT+ECLIPSE 还有64位的jdk即可 法二.EClipse装好后,下载好SDK,ADT(在线或离线装) sdk下载后,点sdk.exe 文件. 如果更新失败,解决方法如下 C ...
- matplotlib作图中文显示问题
def set_ch(): from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcPa ...
- 解决java中对URL编码的问题
首先查看javascript中的encodeURI和encodeURLComponent方法的区别. encodeURI:不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行 ...
- 开启AsyncTask从网络加载图片
/*AsyncTask 异步任务即做一些简单的异步处理 :是handle与线程池的封装 * 第一个泛型:参数类型泛型 * 第二个泛型:更新进度泛型 * 第三个泛型:onProgressUpdate的返 ...
- 二手奢侈品电商Vestiaire Collective融资2000万美元
巴黎奢侈品电商Vestiaire Collective获得了2000万美元的C轮融资,投资方包括知名出版集团Condé Nast.Idinvest.Balderton和Ventech,其中Condé ...
- IOS获取系统时间 NSDate
//返回当前时间,精确到毫秒.- (NSString *)getTimeNow { NSString* date; NSDateFormatter * formatter = [[NSDateForm ...