•••--->>> สอบถามเรื่อง Realtime แบบใช้ ajax .append ครับ <<<---•••
1.) ประเด็นมันอยู่ที่ว่าคุณจะทราบได้อย่างไรว่าข้อมูลเรคคอร์ดไหนถูกลบออกไปครับ
เว้นเสียแต่มีเทเบิ้ลที่เอาไว้จัดเก็บเรคคอร์ดที่ถูกลบออกไป เอาแค่ไอดีก็ได้ครับ ข้อมูลไม่ต้อง
2.) โครงสร้างข้อมูลที่ส่งกลับมาสำหรับ .append() เอื้ออำนวยต่อการลบออกจากหน้ารายงานหรือไม่
ขอเอาโค้ดส่วนนี้มาดูหน่อย "formData.chk"
3.) ต้องเพิ่มโค้ด jquery ส่วนของการลบข้อมูล ..... แต่ขอข้อ 2. มาดูก่อนครับ
Date :
2015-03-05 10:48:07
By :
sakuraei
ขอตอบคุณ Insufficient memory
ข้อ 1.
หน้ารายงานจะถูกส่งข้อมูล จะมีการ refresh 1 ที แล้วข้อมูลก็จะเป็นปกติ แต่อีกเครื่องที่เปิดไว้ ข้อมูลจะไม่หายครับ สรุปคือต้องการให้อีกเครื่องที่เปิดอยู่อัพเดทให้หายไปด้วย
ข้อ 2.
Code (PHP)
while($data=mssql_fetch_array($query))
{
$return .= '<tr><td>'.$message.'</td><td>'.$datetime".'</td><td><input type="checkbox" name="chkUP[]" id="chkUP'.$numi.'" value="'.$id.'"></td><td><a href=del_msg.php?id='.$id.'><img src="remove.png" width="20"></a></td></tr>';
$lastid = $datetime;
$numi++;
}
$return;
$numi;
$back = array("chk"=>"$return","ids"=>"$lastid","numi"=>"$numi");
echo json_encode($back);
Date :
2015-03-05 11:43:11
By :
Nos1001
คง ต้องทำ ajax ไปเช็คครับ
สร้าง ฟีลด์ เวลา update ไว้ด้วย
เอาเวลา อัพเดทเก่า ไปเช็ค ถ้ามีการ update ได้เวลาใหม่ก็เอาข้อมูล มาเปลี่ยน หรือ สั่ง refresh
Date :
2015-03-05 11:55:00
By :
Chaidhanan
มีวิธีเขียนเช็คแบบ ajax ไหมครับ เพราะผมเวลาลบให้ update field status อยู่แล้วครับ
Date :
2015-03-05 12:24:35
By :
Nos1001
ตัวอย่างการใช้ jquery ประยุกต์เอานะครับ
Code (PHP)
<?php
session_start();
$_SESSION['rownum']=isset($_SESSION['rownum'])? $_SESSION['rownum'] : 0;
if(isset($_POST['getdata'])){
echo '<tr><td>'.(++$_SESSION['rownum']).'</td><td>Message '.$_POST['value'],' '.$_SESSION['rownum'].'</td></tr>';
exit;
}
if(isset($_GET['cleardata'])) { $_SESSION['rownum']=0; exit; }
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<!-- ///////// หาโหลดมาใช้ด้วยนะครับ ////////////////////// -->
<script language="javascript" src="../jquery-2.1.1.min.js"></script>
<!-- ///////////////////////////////////////////// -->
<script language="javascript" type="text/javascript">
$(document).ready(function(e) {
$('#select_job').change(function(e) {
if($(this).val()>''){
$.ajax({ url: '', type:'POST', data:{ getdata: 'test', value: $(this).val() }}).done(function(msg){
$('#testTB').append(msg);
});
}
});
$('button').click(function(e){
$('#testTB').empty().append('<tr><th>Item</th><th>Description</th></tr>');
$.ajax({ url:'?cleardata=1'});
});
});
</script>
<select id="select_job" >
<option value="">-- Select Your Job --</option>
<option value="getYourJob1">getYourJob1</option>
<option value="getYourJob2">getYourJob2</option>
</select><br />
<button type="button">clear</button>
<table border="1" id="testTB">
<tr><th>Item</th><th>Description</th></tr>
</table>
</body>
</html>
Date :
2015-03-05 12:40:42
By :
Chaidhanan
เพราะฉะนั้นต้องสร้างอีกเทเบิ้ลครับ ให้เก็บไอดีของเรคคอร์ดที่ถูกลบไปแล้วโดยมีโค้ดคร่าวๆดังนี้
$sql = "delete from tbxxxx where id='xxxx'";
.....
$sql ="insert into tb_trash(deletedid) values('xxxx')";
หรือเพิ่มฟิลด์สถานะเพื่อเก็บว่าเรคคอร์ดนั้นถูกลบหรือยกเลิก หรือป่าว ผมสมมุติชื่อฟิลด์ว่า trash enum('deleted') null default null
Quote: เช่นตำสั่ง alter table tbxxxx add trash enum('deleted') null default null
หลังจากนี้ตอนเรียกข้อมูลมาเก็บไว้ในตัวแปร $resturn ให้เพิ่ม <tr data-id="{$data["id"]}" >
while($data=mssql_fetch_array($query))
{
$return .= '<tr data-id="{$data["id"]}"><td>'.$message.'</td><td>'.$datetime".'</td><td><input type="checkbox" name="chkUP[]" id="chkUP'.$numi.'" value="'.$id.'"></td><td><a href=del_msg.php?id='.$id.'><img src="remove.png" width="20"></a></td></tr>';
$lastid = $datetime;
$numi++;
}
$return;
$numi;
$back = array("chk"=>"$return","ids"=>"$lastid","numi"=>"$numi");
echo json_encode($back);
สุดท้ายให้เพิ่มโค้ด
$(document).ready(function() {
<?PHP
$d=date(d);
$m=date(m);
$y=date(Y);
$date=$y."-".$m."-".$d." 00:00:00";
?>
var lastid = '<?=$date;?>';
var numi = '1';
var refreshId = setInterval(function()
{ // alert('ON');
var formData = $.ajax({
url : "http://test.test.com/feed.php?type=reloadData",
type: "POST",
data : "&lastid="+lastid+"&numi="+numi,
dataType: "json",
success: function(formData)
{
$( ".wrapper" ).append(formData.chk);
lastid = formData.ids;
numi = formData.numi;
},
});
$.post("http://test.test.com/check-unlink.php",{},function(data){
var json = $.parseJSON(data);
$.each(json, function(){
$(".wrapper tr[data-id='"+this.id+"]").remove();
});
});
}, 1000);
});
check-unlink.php
<?php
$returning = array();
//
$sql = "select id from tbxxx where (trash is not null or trash = 'deleted') and dating = curdate() ";
// สมมุติว่ามีฟิลด์ dating เก็บวันที่ทำการบันทึกน่ะครับ เราจะคัดกรองเอาข้อมูลของวันทีปัจจุบันเท่านั้น
....
while($data = mysql_fetch_assoc($.....)){
$returning[] = array("id"=>$data["id"]);
}
echo json_encode($result);
?>
ทดลองดูน่ะครับ มันเป็นเพียงแค่แนวความคิดแต่ก็ไม่ไกลจากความเป็นไปได้
Date :
2015-03-05 13:08:57
By :
sakuraei
ขอเปลี่ยน single quote สลับกับ double quote ครับ
while($data=mssql_fetch_array($query))
{
$return .= "<tr data-id='{$data["id"]}'><td>{$message}</td><td>{$datetime}</td><td><input type='checkbox' name='chkUP[]' id='chkUP{$numi}' value='{$id}'></td><td><a href='del_msg.php?id={$id}'><img src='remove.png' width='20'></a></td></tr>";
$lastid = $datetime;
$numi++;
}
$return;
$numi;
$back = array("chk"=>"$return","ids"=>"$lastid","numi"=>"$numi");
echo json_encode($back);
Date :
2015-03-05 13:32:08
By :
sakuraei
Load balance : Server 03