我使用PHP和MySQL從表中選擇數據並將其顯示在div中,而無需使用jQuery使用定時間隔刷新頁面。我希望能夠使行(或單個單元格)的背景顏色發生改變,數據在上次刷新後發生了變化。然後,如果用戶點擊行(或td),它應該變回CSS中定義的常規顏色。我猜我應該在PHP中使用會話變量來比較刷新之間的值,但我不明白PHP是如何與Javascript交談的,因爲他們是服務器/客戶端技術。我找到了一個線程@http://www.codingforums.com/showthread.php?t=191813,其中一個人正在尋找做同樣的事情,他想通了,但我不明白他的代碼,它是好的和壞的代碼片斷。想知道是否有人能指出我正確的方向。謝謝。如何在數據更改時更改td或tr背景顏色
編輯:下面是調用PHP腳本來獲取數據的頁面代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Tes View</title>
<link rel="stylesheet" type="text/css" href="offtime3.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type='text/javascript'>
$(document).ready(function(){
$("#container").load('dcviewQuery.php');
var timer = null,
interval = 30000,
timer = setInterval(function() {
$("#container").fadeOut("slow").load('dcviewQuery.php').fadeIn("fast");
}, interval);
$(".dcview").live("blur", (function() {
if (timer !== null) return;
timer = setInterval(function() {
$("#container").fadeOut("slow").load('dcviewQuery.php').fadeIn("fast");
}, interval);
}));
$(".dcview").live("focus", (function() {
clearInterval(timer);
timer = null
}));
$.ajaxSetup({ cache: false });
});
</script>
</head>
<body>
<form action="viewajax-exec.php" method="post">
<div id="container"></div>
<input type="submit" value="Update" name="submit" />
</form>
</body>
</html>
這裏是dcView.php的代碼,即從表中抓取的數據位
$query="SELECT pID, fname, lname, offTime, pickUpTime, notes FROM mytable WHERE status <> 'Inactive' ORDER BY offTime";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_numrows($result);
if($result)
{
if(mysql_num_rows($result) > 0)
{
echo "<table><tr>";
echo "<th id=\"fname\">F. Name</th><th id=\"lname\">L. Name</th><th id=\"date\">Date</th><th id=\"offtime\">Off Time</th><th id=\"pickup\">Pick Up Time</th><th id=\"notes\">Notes</th><th id=\"status\">Comp?</th>";
echo "</tr>\n";
$num = 0;
$i = 0;
while($row = mysql_fetch_array($result))
{
$pid = $row['pID'];
$tmptime1 = strtotime($row['pickUpTime']);
$tmptime2 = strtotime($row['offTime']);
$mydate = date("m-d-Y", $tmptime1);
$cjdate = date("Y-m-d", $tmptime2);
$putime = date("H:i", $tmptime1);
$offtime = date("H:i", $tmptime2);
$num++;
if ($odd = $num%2)
{
echo "<tr class=\"odd\">";
}
else
{
echo "<tr class=\"even\">";
}
echo "<input name=\"pid[]\" type=\"hidden\" value=\"$pid\" />";
echo "<input name=\"jdate[]\" type=\"hidden\" value=\"$cjdate\" />";
?>
<td id="fname" class="dcview"><?php echo $row['fname'];?></td>
<td id="lname" class="dcview"><?php echo $row['lname'];?></td>
<td id="date" class="dcview"><?php echo $mydate;?></td>
<td id="offtime" class="dcview"><input type="text" size="4" name="offtime[]" value="<?php echo $offtime;?>" /></td>
<td id="pickup" class="dcview"><?php echo $putime;?></td>
<td id="notes" class="dcview"><textarea rows="1" cols="15" name="notes[]" wrap="physical"><?php echo $row['notes'];?></textarea></td>
<td id="status" class="dcview"><input type="checkbox" name="status[]" value="Inactive" />
<?php
++$i;
echo "</tr>\n";
}
echo "</table>\n";
exit();
}
else
{
//Search failed
}
}
else
{
die("Query failed");
}
?>
我想你可以忽略調用viewajax-exec.php的提交按鈕,因爲該腳本更新數據庫中的數據,但我一直無法弄清楚如何在不刷新的情況下將數據發送到服務器整個頁面(但這是以後的另一個問題)。我拿出了所有使用會話變量的臨時代碼,因爲我試圖找出哪些標記被設置爲什麼。
請提供一些代碼或您正在使用的標記 – Rafay 2011-12-28 04:24:17
如何更新表格?完成擦拭和重新顯示?更新各個單元格/行?你如何跟蹤發生了什麼變化? – mrtsherman 2011-12-28 04:32:06