0

0

php和ajax怎么实现表格的实时编辑(附代码)

不言

不言

发布时间:2018-08-18 17:29:36

|

3112人浏览过

|

来源于php中文网

原创

本篇文章给大家带来的内容是关于php和ajax怎么实现表格的实时编辑(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

AJAX用用场景

  • 异步搜索过滤内容数据(关键字搜索)

  • 表单异步验证(表单提交验证)

  • 异步加载内容数据(更多内容)

  • 数据逻辑处理

    立即学习PHP免费学习笔记(深入)”;

AJAX特点

  • 在不刷新当前页面的前提下,与服务器进行异步交互

  • 优化了浏览器和服务器之间的数据传输、减少了不必要的数据往返

  • 把部分数据转移到客户端,减少了服务器的压力

实现AJAX的基本思路

  • 根据需求选择一个javascript类库

  • javascript部分向服务器传递数据

  • php接受传递的数据,处理数据,返回给javascript

  • javascript接受php的数据,并做相应处理

基础知识

  • 前端方面:html css javascript jquery json

  • 服务器方面:php apache(nginx)

  • 数据库方面:mysql sql

学习目标

  • 学习php和javascript之间异步交互

  • 理解ajax代码的运行结构和基本原理

  • 清晰布局javascript代码

效果图

这里写图片描述

代码实现

  • 创建基本的数据表

  • 完成显示功能

  • 完成删除数据功能

  • 完成添加数据功能

  • 完成修改数据功能

    AItools.fyi
    AItools.fyi

    找到让生活变得更轻松的最佳AI工具!

    下载

表SQL

create table et_data(
    id int primary key auto_increment,
    c_a varchar(30),
    c_b varchar(30),
    c_c varchar(30),
    c_d varchar(30),
    c_e varchar(30),
    c_f varchar(30),
    c_g varchar(30),
    c_h varchar(30)
);

显示数据过程

  • 显示出来一个基本的html

  • $.get=====>data.php

  • data.php获取db数据==>js

  • js=>生成行,扔给基本html

添加数据之前端结构搭建

  • UI添加按钮,8个文本框 操作列

  • 取消功能

  • 确认添加按钮,收集UI数据—>data.php

  • data.php —>js

  • 列表正常显示,刷新后记录仍然存在

编辑功能

  • 给编辑按钮添加事件 ,替换UI 删除按钮–>保存按钮  编辑按钮—->取消按钮

  • 取消编辑事件

  • 保存编辑的事件,手机数据->data.php

  • data.php->js

  • js 行编辑状态=>正常状态

源码展示与分析

1、样式:main.css

body{background-color:#899BA5;}
.container {width:960px;margin:80px auto;}
td {font-size:20px;width:120px;height:40px;text-align:center;color:black;cursor:pointer;background-color:white;}
td:hover{background-color:#aaaacc;}
input.txtField{width:90px;height:30px;}
.optLink{text-decoration:none;  color:#f46948;}
.optLink:hover{color:#cc0033;}

2、基础模板:index.html


    
        
        可编辑表格DEMO
        
    
    
        

1 2 3 4 5 6 7 8 添加

3、JS代码:app.js

$(function(){
    var g_table = $("table.data");//定义全局变变量,定位到html的表格
    var init_data_url = "data.php?action=init_data_list";
    $.get(init_data_url,function(data){
        var row_items = $.parseJSON(data);//json数据转换成json数组对象
        //js循环遍历
        for(var i = 0 , j = row_items.length ; i < j ; i++){            
        var data_dom = create_row(row_items[i]);
            g_table.append(data_dom);
        }
    });    //循环生成行记录
    function create_row(data_item){
        var row_obj = $("");        
        for(var k in data_item){            
        if("id" != k){//去除返回字段中的id
                var col_td = $("");
                col_td.html(data_item[k]);//给col_td写入内容
                row_obj.append(col_td);//追加DOM
            }
        }        //自定义按钮
        var delButton = $('删除 ');//删除按钮
        delButton.attr("dataid",data_item['id']);//给按钮添加dataid属性
        delButton.click(delHandler);//给按钮添加点击事件
        var editButton = $('编辑');//编辑按钮
        editButton.attr("dataid",data_item['id']);
        editButton.click(editHandler);        //追加操作列
        var opt_td = $('');
        opt_td.append(delButton);
        opt_td.append(editButton);
        row_obj.append(opt_td);        return row_obj;
    }    //操作列的删除事件
    function delHandler(){
        var data_id = $(this).attr("dataid");//获取删除的dataid的值,$(this)指点击的这个button
        var meButton = $(this);//按钮这个变量
        $.post("data.php?action=del_row",{dataid:data_id},function(res){
            if(res == "ok"){
                $(meButton).parent().parent().remove();//删除行记录
            }else{
                alert(res);
            }
        });
    }    //添加行记录
    $("#addBtn").click(function(){
        var addRow = $("");        //八个文本框
        for(var i=0;i<8;i++){           
         var col_td = $("");
            addRow.append(col_td);
        }        //操作列
        var col_opt = $("");        
        var confirmBtn = $("确认 ");
        confirmBtn.click(function(){//确认操作
            var currentRow = $(this).parent().parent();//tr
            var input_fields = currentRow.find("input");           
             var post_fields = {};//发送数据对象
            for(var i=0,j=input_fields.length;i取消");
        cancelBtn.click(function(){//删除操作,取消直接删除行
            $(this).parent().parent().remove();
        });


        col_opt.append(confirmBtn);
        col_opt.append(cancelBtn);
        addRow.append(col_opt);

        g_table.append(addRow);
    });    //编辑行记录
    function editHandler(){
        var data_id = $(this).attr("dataid");        
        var meButton = $(this);        
        var meRow = $(this).parent().parent();//没有事件
        var editRow = $("");       
         for(var i=0;i<8;i++){            
         var editTd = $("");            
         var v = meRow.find('td:eq(' + i +')').html();
            editTd.find('input').val(v);
            editRow.append(editTd);
        }        //操作列
        var opt_td = $("");        
        var saveButton = $("保存 ");
        saveButton.click(function(){
            var currentRow = $(this).parent().parent();            
            var input_fields = currentRow.find("input");           
             var post_fields = {};            
             for(var i=0,j=input_fields.length;i取消")
        cancleButton.click(function(){
            var currentRow = $(this).parent().parent();//当前行
            meRow.find('a:eq(0)').click(delHandler);//新替换的行没有点击事件,需要重新赋予点击事件
            meRow.find('a:eq(1)').click(editHandler);
            currentRow.replaceWith(meRow);//meRow为以前的行
        });

        opt_td.append(saveButton);
        opt_td.append(cancleButton);
        editRow.append(opt_td);
        meRow.replaceWith(editRow);
    }    //打印输出调试
    function debug(res){
        console.log(res);
    }
});

4、PHP代码:data.php

fetch_assoc()) {       
     $data[] = $row;
    }    echo json_encode($data);exit();

}//新增行记录function add_row(){
    $sql = 'INSERT INTO `et_data` ( `c_a`,`c_b`,`c_c`,`c_d`,`c_e`,`c_f`,`c_g`,`c_h` ) VALUES ( ';    
    for($i = 0;$i<8;$i++){        
    $sql .= '\'' . $_POST['col_' . $i] . '\',';
    }    $sql = trim($sql,',');    $sql .= ')';    
    $lastInsertId = "SELECT LAST_INSERT_ID() AS LD";    
    if($res = query_sql($sql,$lastInsertId)){        
    $d = $res->fetch_assoc();        
    echo $d['LD'];exit();
    }else{        
    echo "db error...";exit();
    }
}//删除行记录
function del_row(){
    $dataid = $_POST['dataid'];    
    $sql = "DELETE FROM `et_data` where `id` = " . $dataid;    
    if(query_sql($sql)){        
    echo "ok";exit();
    }else{        
    echo "db error...";exit();
    }
}//编辑行记录
function edit_row(){
    $sql = "UPDATE     `et_data` SET ";    
    $id = $_POST['id'];    
    unset($_POST['id']);    
    for($i=0;$i<8;$i++){       
     $sql .= '`c_'.chr(97 + $i) . '` = \''.$_POST['col_' . $i] . ' \','; 
    }    
    $sql = trim($sql,',');    
    $sql .= ' WHERE `id` = ' . $id;    
    if(query_sql($sql)){        
    echo "ok";exit();
    }else{        
    echo "db error...";exit();
    }
}//数据库查询function query_sql(){
    $mysqli = new mysqli('127.0.0.1','root','root','etable');    
    $sqls = func_get_args();//获取函数的所有参数
    foreach ($sqls as $key => $value) {       
     $query = $mysqli->query($value);
    }    
    $mysqli->close();    
    return $query;
}

源码链接:https://pan.baidu.com/s/1fAinVXU-nWt7ODgrWoNRIg 密码:n5yr

相关推荐:

PHP实现会员账号只能唯一登录的代码实例

phpExcel在导出文件时内存溢出的解决方法


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2853

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1699

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1559

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

1058

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1525

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1276

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1629

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1309

2023.11.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10.4万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号