各位大大好:
網址:
http://www.ee.nsysu.edu.tw/key/c1.php
2018-04-01的表格假設已用PHP從資料庫讀取資料顯示該天的紀錄(11:00 EC5566)
|-------------|
|11:00 EC5566 |=>php顯示原本資料庫的資料
| |
| |
| |
|-------------|
以下為PHP,用來顯示資料庫存的資料
echo'<td id="2018-04-01" value="'.$Y."-".$yue."-".$singleday.'">'."[$day]<br>";
$sql1="select 識別碼, timest, clr,wdate from apr where bdate= :Bdate order by timest asc";
$sql =$conn->prepare($sql1);
$ar_val=array('Bdate'=>"2018-04-01" );
if($sql->execute($ar_val)){$row =$sql->fetchALL(); $num=count($row);
}
foreach($row as $key=>$showit){
echo '<h id="'.$showit['識別碼'].'" onclick="showblock(this)">';
echo "•".$showit['timest']." ".$showit['clr']."<br></h>";
}
如果我現在想要更新一筆資料為08:00 EC5544,並用js用json顯示即時更新的資料,並讓新資料依時間大小排序到,讓它移到11:00上方,而不是新增到下方(原本是更新到下方),或者要怎麼覆蓋原本用PHP顯示的 11:00 EC5566這筆資料,再重新將調整好的排序的 08:00 EC5544 與11:00 EC5566 顯示在表格,請問要怎麼處理呢?
|-------------|
| 08:00 EC5544|
| 11:00 EC5566|
| |
| |
| |
|-------------|
console.log(obj)如下
{show: Array(2), length: 2}
length:2
show:Array(2)
0:{timest: "08:00", class: "EC5544", num: "5"}
1:{timest: "11:00", class: "EC5566", num: "1"}
length:2
以下是我寫的js,但無法將第一筆用PHP顯示的11:00 EC5566覆蓋或刪除掉..
|-------------|
| 11:00 EC5566| ==>php顯示資料庫的資料(新增一筆資料,不會覆蓋過去)
| 08:00 EC5544| ==>js立即顯示新增的資料
| 11:00 EC5566| ==>js立即顯示新增的資料
| |
| |
|-------------|
$.ajax({
type: "POST",
url: "writeback1.php",
async:false,
data: {
"namen":namen,
"lab":lab,
"phone":phone,
"bdate":bdate,
"clr":clr,
"thing":thing,
"timest":timest,
"timeov":timeov,
"mdata":mdata,
"ipname":ipname
},
error: function(jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
},
success: function(info) {
var obj=JSON.parse(info);
console.log(obj);
var a=obj.length;
for(i=0;i<=a;i++){
document.getElementById(bdate).innerHTML +='<h id="'+obj.show[i].num+'" onclick="showblock(this)">•'+obj.show[i].timest+' '+obj.show[i].class+'</h><br>';
}
}
});
});
}
}
依你的html結構,jQuery code。應該可以動吧。
$("#" + bdate).find("h").each(function(){
$(this).remove();
});
javascript(ES6版本,要舊版IE也可以用的話,乖乖用temp.length跑迴圈):
var temp = document.getElementById(bdate).getElementsByTagName('h');
Array.from(temp)
.forEach(function(i){
i.remove();
});
我剛看你的HTML碼,發現你的 h id會重覆,這樣的設計好像不太好,因為ID最好是唯一值
,如果是我,先把新的資料存到資料庫,然後像froce所說,先清掉HTML上那個日期的所有資料
然後重新取資料庫時SQL就順便下order by,回傳就會排序好,然後再顯示在HTML上面,這樣就不用考慮如何調整順序