2009-10-09 144 views
2

我在網絡開發的時候並不是很熟練,但我已經設法使用PHP創建了一個Web應用程序,它查詢MYSQL數據庫並在HTML中顯示數據。簡單的Javascript MYSQL檢查功能

我想檢查表是否已經使用我已經創建的時間戳字段進行更改,並且每次插入都會更新。比較兩個時間戳(前一個和當前)是關鍵,但我不處理JavaScript那麼多。

如何傳遞一個參數到我的hastablechanged.php文件(上一個時間戳)並簡單地將一個標誌(1:更改,0:未更改)返回給javascript? 和...如何將一個基本的JavaScript函數來運行一個計時器和調用hastablechanged.php張貼old_timestamp和接收國旗,然後更新div?

我一直在使用谷歌搜索,但我發現的解決方案非常複雜,我知道我只需要一個JavaScript函數,我不知道如何編寫。

這是hastablechanged.php:

<?php 
include 'config.php'; 
include 'opendb.php'; 

$table = "data_table"; 
$query_timestamp = "select timestamp from {$table} where id = 0;"; 
$timestamp = mysql_query("{$query_timestamp}"); 
if (!$timestamp) { 
die("query failed"); 
} 

$row_timestamp = mysql_fetch_array($timestamp); 
echo $row_timestamp['timestamp']; 
?> 

,這是我的index.php

<!DOCTYPE HTML PUBLIC> 


<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta http-equiv="Content-Style-Type" content="text/css"> 
    <title>Data values</title> 
</head> 

<body> 

<div id=data> 
    <? include("table.php");?> 
</div> 
</body> 

</html> 

其中 「table.php」 是選擇數據並顯示它繪製的PHP代碼html表格。

我要感謝很多的幫助,因爲我卡在這個問題上進行整理我的學位項目

+4

我有點迷路,其中的JavaScript來到這... – RedFilter 2009-10-09 12:24:15

+1

哦,聽起來你不知道關於setInterval,並且你想定期使用AJAX查詢數據...因爲你沒有提到AJAX或setInterval,這些關鍵字應該幫助你。 – RedFilter 2009-10-09 12:27:08

+0

而不是JavaScript,你可以再次使用php來查詢時間戳,並返回你想要的值 – 2009-10-09 12:36:32

回答

0

我終於想出瞭如何去做。發佈它對任何人都有用。

這是PHP和javacript其中的組合:

  • php文件return_timestamp.php簡單地返回具有ID的行的時間戳= 0(沒有真正的ID,它只是更新其時間戳在每個插入與觸發)

  • JavaScript的比較與所述一個所接收到的時戳先前接收的(最先之一被設定爲0,所以它在開始更新DIV)

這樣:

JavaScript代碼是最重要的事情(我認爲你們可以編寫PHP從MySQL檢索數據):您的幫助

<script type="text/javascript"> 
$(document).ready(function() { 

    $timestamp1='0'; 
    var refreshId = setInterval(function() { 
    $.get(('return_timestamp.php', function(data) { 
    $timestamp2 = data; }) 

    if ($timestamp2 != $timestamp1) { 

     $('#data').load('data.php'); 

     $timestamp1 = $timestamp2; } 

}, 1000); 
}); 
</script> 

希望它能幫助,感謝的!

1

您需要的Ajax和setInterval。

這裏的setInterval是如何工作的 http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

的setInterval基本上只是告訴瀏覽器調用javascript函數每x毫秒。

下面是幾個例子阿賈克斯 http://www.w3schools.com/Ajax/ajax_examples.asp

阿賈克斯基本上是對JavaScript的方式來請求一個頁面,而無需重新加載頁面獲取其內容。在下面的例子中,它嘗試爲所有瀏覽器創建一個xmlhttprequest(可惜它是這樣做的),然後發送請求。我們將state_change定義爲當我們收到回覆時要調用的函數。在這個例子中,它只是響應並顯示它,但你可以隨心所欲地做任何事情。

下面是一個修改後的例子。它應該工作。

<html><head> 
<script type="text/javascript"> 
var xmlhttp; 
function loadPage() 
{ 
xmlhttp=null; 
if (window.XMLHttpRequest) 
    {// code for IE7, Firefox, Opera, etc. 
    xmlhttp=new XMLHttpRequest(); 
    } 
else if (window.ActiveXObject) 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
if (xmlhttp!=null) 
    { 
    xmlhttp.onreadystatechange=state_Change; 
    xmlhttp.open("GET","hastablechanged.php?tablename=awesometable",true); 
    xmlhttp.send(null); 
    } 
else 
    { 
    alert("Your browser does not support XMLHTTP."); 
    } 
} 

function state_Change() 
{ 
if (xmlhttp.readyState==4) 
    {// 4 = "loaded" 
    if (xmlhttp.status==200) 
    {// 200 = "OK" 
    document.getElementById('A1').innerHTML=xmlhttp.responseText; 
    } 
    else 
    { 
    alert("Problem retrieving ata:" + xmlhttp.statusText); 
    } 
    } 
} 
</script> 
</head> 

<body onLoad="setInterval('loadPage()', 10000)"> 

<p><b>Status:</b> 
<span id="A1"></span> 
</p> 

<button onclick="loadPage()">Check Updates</button> 

</body> 
</html> 
+0

非常感謝:)我將使用此代碼構建表更改內容的解決方案。希望它有效。再次感謝! :) – 2009-10-09 14:04:35

0

只是要清楚:你不使用AJAX。只要定期重新加載頁面就會給你想要的東西。但是如果你想讓應用程序流暢 - 那麼你必須深入研究AJAX,如其他答案中所述。

-CF

+0

如果他定期重新加載頁面,那麼它不需要檢查它是否被修改,並且自動頁面刷新是在90年代死亡的可怕做法。 – Gus 2009-10-09 13:27:34

+0

是的,閃爍不好。我使用元刷新啓動了我的Web應用程序,但意識到這是顯示數據庫數據的難題。 – 2009-10-09 14:03:26