Table of Contents
AJAX usage scenarios
AJAX features
The basics of implementing AJAX Idea
Basic knowledge
Learning objectives
Rendering
Code implementation
Table SQL
Display data process
Build the front-end structure before adding data
Editing function
1. Style: main.css
Home Backend Development PHP Tutorial How to implement real-time editing of tables with php and ajax (code attached)

How to implement real-time editing of tables with php and ajax (code attached)

Aug 18, 2018 pm 05:29 PM
php

The content of this article is about how to implement real-time editing of tables with php and ajax (with code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

AJAX usage scenarios

  • Asynchronous search filtering content data (keyword search)

  • Form asynchronous verification (form submission Verification)

  • Asynchronous loading of content data (more content)

  • Data logic processing

AJAX features

  • Asynchronous interaction with the server without refreshing the current page

  • Optimizes the data between the browser and the server Transmission, reducing unnecessary data round-trips

  • Transfer part of the data to the client, reducing the pressure on the server

The basics of implementing AJAX Idea

  • Select a javascript class library according to your needs

  • The javascript part transmits data to the server

  • PHP accepts the passed data, processes the data, and returns it to JavaScript

  • javascript accepts the data from PHP and processes it accordingly

Basic knowledge

  • Front-end aspect: html css javascript jquery json

  • Server aspect: php apache (nginx)

  • Database: mysql sql

Learning objectives

  • Learn asynchronous interaction between php and javascript

  • Understand the operating structure and basic principles of ajax code

  • Clear layout of javascript code

Rendering

How to implement real-time editing of tables with php and ajax (code attached)

Code implementation

  • Create a basic data table

  • Complete the display function

  • Complete the delete data function

  • Complete the add data function

  • Complete the data modification function

Table SQL

1

2

3

4

5

6

7

8

9

10

11

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)

);

Copy after login

Display data process

  • Display a basic html

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

  • data.php gets db data ==>js

  • js=>Generate rows and throw them to basic html

Build the front-end structure before adding data

  • Add buttons to UI and 8 text box operation columns

  • Cancel function

  • Confirm to add button and collect UI data—>data.php

  • data.php —>js

  • The list displays normally, and the record still exists after refreshing

Editing function

  • Add events to the edit button , Replace UI Delete button –>Save button Edit button –>Cancel button

  • Cancel editing event

  • Save edited event, Mobile data->data.php

  • ##data.php->js

  • ##js row editing status=>normal status
  • Source code display and analysis

1. Style: main.css

1

2

3

4

5

6

7

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;}

Copy after login

2. Basic template: index.html

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<!doctype html><html>

    <head>

        <meta charset="utf-8">

        <title>可编辑表格DEMO</title>

        <link rel="stylesheet" href="css/main.css" >

    </head>

    <body>

        <p class="container">

            <table class="data">

                <tr>

                    <td>1</td> 

                    <td>2</td> 

                    <td>3</td> 

                    <td>4</td> 

                    <td>5</td> 

                    <td>6</td> 

                    <td>7</td> 

                    <td>8</td> 

                    <td style="width:240px;">

                        <a id="addBtn" class="optLink" href="javascript:;"/>添加</a>

                    </td>  

                </tr>

            </table>

        </p>

        <script type="text/javascript" src="js/jquery.js"> </script>

        <script type="text/javascript" src="js/app.js"> </script>

    </body></html>

Copy after login

3 , JS code: app.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

$(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 = $("<tr></tr>");       

        for(var k in data_item){           

        if("id" != k){//去除返回字段中的id

                var col_td = $("<td></td>");

                col_td.html(data_item[k]);//给col_td写入内容

                row_obj.append(col_td);//追加DOM

            }

        }        //自定义按钮

        var delButton = $(&#39;<a class="optLink" href="javascript:;">删除 </a>&#39;);//删除按钮

        delButton.attr("dataid",data_item[&#39;id&#39;]);//给按钮添加dataid属性

        delButton.click(delHandler);//给按钮添加点击事件

        var editButton = $(&#39;<a class="optLink" href="javascript:;">编辑</a>&#39;);//编辑按钮

        editButton.attr("dataid",data_item[&#39;id&#39;]);

        editButton.click(editHandler);        //追加操作列

        var opt_td = $(&#39;<td></td>&#39;);

        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 = $("<tr></tr>");        //八个文本框

        for(var i=0;i<8;i++){          

         var col_td = $("<td><input type=&#39;text&#39; class=&#39;txtField&#39;/></td>");

            addRow.append(col_td);

        }        //操作列

        var col_opt = $("<td></td>");       

        var confirmBtn = $("<a href=&#39;javascript:;&#39; class=&#39;optLink&#39;>确认 </a>");

        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<j;i++){

                post_fields[&#39;col_&#39; + i] = input_fields[i].value;

            }

            $.post("data.php?action=add_row",post_fields,function(res){

                if(0 < res){

                    post_fields[&#39;id&#39;] = res;                   

                    var postAddRow = create_row(post_fields);

                    currentRow.replaceWith(postAddRow);

                }else{

                    alert(res);

                }

            });

        });       

        var cancelBtn = $("<a href=&#39;javascript:;&#39; class=&#39;optLink&#39;>取消</a>");

        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 = $("<tr></tr>");      

         for(var i=0;i<8;i++){           

         var editTd = $("<td><input type=&#39;text&#39; class=&#39;txtField&#39;/></td>");           

         var v = meRow.find(&#39;td:eq(&#39; + i +&#39;)&#39;).html();

            editTd.find(&#39;input&#39;).val(v);

            editRow.append(editTd);

        }        //操作列

        var opt_td = $("<td></td>");       

        var saveButton = $("<a href=&#39;javascript:;&#39; class=&#39;optLink&#39;>保存 </a>");

        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<j;i++){

                post_fields[&#39;col_&#39; + i] = input_fields[i].value;

            }

            post_fields[&#39;id&#39;] = data_id;

            $.post("data.php?action=edit_row",post_fields,function(res){

                if(res == &#39;ok&#39;){                   

                var newUpdateRow = create_row(post_fields);

                    currentRow.replaceWith(newUpdateRow);

                }else{

                    alert(res);

                }

            });

        });      

         var cancleButton = $("<a href=&#39;javascript:;&#39; class=&#39;optLink&#39;>取消</a>")

        cancleButton.click(function(){

            var currentRow = $(this).parent().parent();//当前行

            meRow.find(&#39;a:eq(0)&#39;).click(delHandler);//新替换的行没有点击事件,需要重新赋予点击事件

            meRow.find(&#39;a:eq(1)&#39;).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);

    }

});

Copy after login

4, PHP code: data.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

<?php

//路由

$action = $_GET[&#39;action&#39;];

switch($action){   

case &#39;init_data_list&#39;:

    init_data_list();   

    break;   

    case &#39;add_row&#39;:

    add_row();   

    break;   

    case &#39;del_row&#39;:

    del_row();   

    break;   

    case &#39;edit_row&#39;:

    edit_row();   

    break;

}//初始化数据

function init_data_list(){

    $sql = "SELECT * FROM `et_data` ";//下面函数的参数

    $query = query_sql($sql);//自定义函数未定义形参

    while ($row = $query->fetch_assoc()) {      

     $data[] = $row;

    }    echo json_encode($data);exit();

 

}//新增行记录function add_row(){

    $sql = &#39;INSERT INTO `et_data` ( `c_a`,`c_b`,`c_c`,`c_d`,`c_e`,`c_f`,`c_g`,`c_h` ) VALUES ( &#39;;   

    for($i = 0;$i<8;$i++){       

    $sql .= &#39;\&#39;&#39; . $_POST[&#39;col_&#39; . $i] . &#39;\&#39;,&#39;;

    }    $sql = trim($sql,&#39;,&#39;);    $sql .= &#39;)&#39;;   

    $lastInsertId = "SELECT LAST_INSERT_ID() AS LD";   

    if($res = query_sql($sql,$lastInsertId)){       

    $d = $res->fetch_assoc();       

    echo $d[&#39;LD&#39;];exit();

    }else{       

    echo "db error...";exit();

    }

}//删除行记录

function del_row(){

    $dataid = $_POST[&#39;dataid&#39;];   

    $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[&#39;id&#39;];   

    unset($_POST[&#39;id&#39;]);   

    for($i=0;$i<8;$i++){      

     $sql .= &#39;`c_&#39;.chr(97 + $i) . &#39;` = \&#39;&#39;.$_POST[&#39;col_&#39; . $i] . &#39; \&#39;,&#39;;

    }   

    $sql = trim($sql,&#39;,&#39;);   

    $sql .= &#39; WHERE `id` = &#39; . $id;   

    if(query_sql($sql)){       

    echo "ok";exit();

    }else{       

    echo "db error...";exit();

    }

}//数据库查询function query_sql(){

    $mysqli = new mysqli(&#39;127.0.0.1&#39;,&#39;root&#39;,&#39;root&#39;,&#39;etable&#39;);   

    $sqls = func_get_args();//获取函数的所有参数

    foreach ($sqls as $key => $value) {      

     $query = $mysqli->query($value);

    }   

    $mysqli->close();   

    return $query;

}

Copy after login

Source code link: https://pan.baidu.com/s/1fAinVXU-nWt7ODgrWoNRIg Password: n5yr

Related recommendations:

PHP code example to realize that member accounts can only be logged in uniquely

Solution to memory overflow in phpExcel when exporting files method

The above is the detailed content of How to implement real-time editing of tables with php and ajax (code attached). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

See all articles