말씀하신 것처럼 mysql에 저장하는 autosave.php 파일에 에러 상황이 있네요.
1. 먼저, 아래 부분을 바꿔주세요.
( AA 함수는 제가 만든 사용자정의 함수라 바꿔주세요. 앞서 post형식으로 전송하셔서, $_POST 변수로 받음)
$id = AA($id);
$header = AA($header);
$value = AA($value);
--->
$id = $_POST["id"];
$header = $_POST["header"];
$value = $_POST["value"];
2. 아래 부분의 result_query 함수도 사용자정의 함수이므로 바꿔주세요.
$result = result_query($SQL);
--->
$result=mysqli_query($coon, $SQL);
바꾼 후, 잘 안되시면 PHP 에러 문구(html의 에러 문구)도 알려주세요.
[datatable 강의중 data update 질문입니다(강의 엑셀형태의 테이블제작 5-1,5-2) 관련의 답글] ----------------------------------------------------------------
안녕하세요
datatables 중 자료수정하여 db에 업데이트 관련 문의드립니다(엑셀형태 데이타 테이블 5-1, 5-2)
붙임파일의
autosave_input.php 에서 자료를 받아 autosave.html에t서 datatables 초기자료를 구현하였고
autosave,html에서 수정하면 autosave.php에서 DB로 update 하는 과정을 실행합니다
1. html 에서 구현한 포커스 이동 등은 잘 구현되고 수정자료도 잘 입력됩니다
2. 그러나 DB에 에러 메시지가 안 뜹니다(이건 다른 컴에서하면 뜹니다)
3. 업데이트도 되지 않습니다
예상되는 문제점은
autosave.php 에서 DB 연결과 관련된 문제 인 것 같습니다
해결 방법 정중히 부탁드려도 될까요
autosave.html 입니다
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/keytable/2.5.3/css/keyTable.dataTables.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.js" type="text/javascript">script>
<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js" type="text/javascript">script>
<script src="https://cdn.datatables.net/keytable/2.5.3/js/dataTables.keyTable.min.js" type="text/javascript">script>
<script>
var table = null;
$(document).ready(function() {
$('#example').DataTable( {
"ajax": "data/2020_autosave_input1.php",
// 데이블 키 값 이동 활성
keys:true,
"columns": [
{"data":"id"},
{"data":"school_city"},
{"data":"school_gun"},
{"data":"supply_name"},
{"data":"supply_code"}
],
// id 비활성화
"columnDefs":[
{
"targets":[0],
"visible":false,
"searchable":false
}
]
} );
// 데이터 input//
table = $('#example').DataTable();
var preClickedTD = null;
// $('#example tbody').on('click','td', function(){
// if(preClickedTD)
table
.on('key-focus', function(e, datatable, cell, originalEvent){
var rowData = datatable.row(cell.index().row).data();
var clickCellData = cell.data();
var clickCellInputId = "td_" + cell.index().row+ "_" + cell.index().column;
var inputData = ";
cell.data(inputData).draw();
cell.inputID = clickCellInputId;
$("#"+clickCellInputId).attr("originData",clickCellData);
// original data 저장함
$("#"+clickCellInputId).val(clickCellData);
$("#"+clickCellInputId).focus();
preClickedTD = cell;
})
.on('key-blur', function(e, datatable, cell) {
if(preClickedTD)
{
// 선택 상태에서 원복
returnTdToOriginal(preClickedTD, cell.index().row, cell.index().column);
}
});
// , end of $(document).ready(function() {
} );
// 데이터 input2//
function returnTdToOriginal(preClickedTD, rowIdx, colIdx)
{
// 이때 서버 데이타 업데이트
var cellInputId = "td_"+ rowIdx + "_" + colIdx;
var cell = table.cell(rowIdx,colIdx);
var id = table.cell(rowIdx,0).data();
var columnHeader = table.column(colIdx).header();
var columnHeaderText = $(columnHeader).html();
// originData 가 바뀌었을때만 서버 업데이트
if($("#"+cellInputId).attr("originData") !=$("#"+cellInputId).val())
{
saveTdData(id, columnHeaderText, $("#"+cellInputId).val());
}
preClickedTD.data($("#"+preClickedTD.inputID).val());
}
function saveTdData(id,header,value)
{
$.ajax({
type:'POST',
url: "data/2020_autosave1.php",
data:{"id":id, "header":header, "value":value},
cache:false,
async:false
})
.done(function(result){
if(result=="ok") //성공
{
// alert("ok");
}
else
{
alert("수정실패");
}
});
}
script>
head>
<body>
<table id="example" class="display" style="width:100%">
<thead>
<tr>
<th>IDth>
<th>시도th>
<th>구군th>
<th>대리점명th>
<th>대리점번호th>
tr>
thead>
<tfoot>
<tr>
<th>IDth>
<th>school_cityth>
<th>school_gunth>
<th>supply_nameth>
<th>supply_numth>
tr>
tfoot>
table>
body>
html>
autosave.php 입니다
// include "data/conn.php";
// include "data/cls.php";
// $id, $header, $value
$coon=mysqli_connect(
'localhost',
'root',
'livestock01',
'milk');
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$id = AA($id);
$header = AA($header);
$value = AA($value);
$dbColumn="";
switch($header){
case "시도" :
$dbColumn="school_city";
break;
case "구군" :
$dbColumn="school_gun";
break;
case "대리점명" :
$dbColumn="supply_name";
break;
case "대리점번호" :
$dbColumn="supply_code";
break;
}
$result = null;
if($dbColumn && $id && $value)
{
//update dt_excel set name 'AA' where dt_id='1'
$SQL="update bidresult set ".$dbColumn."='".$value."' where id='".$id."'";
$result=result_query($SQL);
}
if ($result)
{
echo "수정 성공";
}
?>
첨부파일 : 압축파일도 올렸습니다
감사합니다.
----------------------------------------------------------------