이 글의 내용은 php와 ajax로 테이블의 실시간 편집을 구현하는 방법에 대한 내용입니다. 참고할만한 가치가 있으니 도움이 필요한 분들에게 도움이 되었으면 좋겠습니다.
비동기 콘텐츠 데이터 검색 및 필터링(키워드 검색)
양식 비동기 확인(양식 제출 확인)
콘텐츠 데이터 비동기 로딩(더 많은 콘텐츠)
data Logic 처리
현재 페이지를 새로 고치지 않고 서버와 비동기식 상호 작용
브라우저와 서버 간의 데이터 전송을 최적화하여 불필요한 데이터 왕복을 줄입니다
데이터의 일부를 전송합니다.
필요에 따라 javascript 클래스 라이브러리를 선택하세요
javascript 부분은 서버에 데이터를 전송합니다
PHP는 전달된 데이터를 받아 데이터를 처리하고 JavaScript로 반환합니다.
javascript는 PHP에서 데이터를 받아 그에 따라 처리합니다.
프론트 엔드 측면: html css javascript jquery json
서버 측면 :php apache (nginx)
데이터베이스: mysql sql
PHP와 Javascript 간의 비동기 상호 작용 알아보기
실행 구조 이해 그리고 기본 원칙 ajax 코드
자바스크립트 코드 레이아웃 지우기
기본 데이터 테이블 만들기
표시 기능 완성
데이터 삭제 기능 완료
데이터 추가 기능 완료
데이터 수정 기능 완료
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
<!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>
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 = $("<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 = $('<a class="optLink" href="javascript:;">删除 </a>');//删除按钮 delButton.attr("dataid",data_item['id']);//给按钮添加dataid属性 delButton.click(delHandler);//给按钮添加点击事件 var editButton = $('<a class="optLink" href="javascript:;">编辑</a>');//编辑按钮 editButton.attr("dataid",data_item['id']); editButton.click(editHandler); //追加操作列 var opt_td = $('<td></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 = $("<tr></tr>"); //八个文本框 for(var i=0;i<8;i++){ var col_td = $("<td><input type='text' class='txtField'/></td>"); addRow.append(col_td); } //操作列 var col_opt = $("<td></td>"); var confirmBtn = $("<a href='javascript:;' class='optLink'>确认 </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['col_' + i] = input_fields[i].value; } $.post("data.php?action=add_row",post_fields,function(res){ if(0 < res){ post_fields['id'] = res; var postAddRow = create_row(post_fields); currentRow.replaceWith(postAddRow); }else{ alert(res); } }); }); var cancelBtn = $("<a href='javascript:;' class='optLink'>取消</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='text' class='txtField'/></td>"); var v = meRow.find('td:eq(' + i +')').html(); editTd.find('input').val(v); editRow.append(editTd); } //操作列 var opt_td = $("<td></td>"); var saveButton = $("<a href='javascript:;' class='optLink'>保存 </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['col_' + i] = input_fields[i].value; } post_fields['id'] = data_id; $.post("data.php?action=edit_row",post_fields,function(res){ if(res == 'ok'){ var newUpdateRow = create_row(post_fields); currentRow.replaceWith(newUpdateRow); }else{ alert(res); } }); }); var cancleButton = $("<a href='javascript:;' class='optLink'>取消</a>") 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
<?php //路由 $action = $_GET['action']; switch($action){ case 'init_data_list': init_data_list(); break; case 'add_row': add_row(); break; case 'del_row': del_row(); break; case 'edit_row': 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 = '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 코드 예제
위 내용은 PHP와 Ajax로 테이블 실시간 편집을 구현하는 방법(코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!