2016-04-26 29 views
0

我有一個HTML表,它是從我的SQL數據庫回顯數據的。 我需要的是,只要表中的某個字段在數據庫中從其他位置更新,就會在HTML頁面上彈出警報。如果echo'd SQL表已被修改,則發出警報

在我的主頁所在的表格所在的位置,它顯示了我的getTable.php文件中的表格。

我想要更新的特定列是一個註釋列,它會定期從工廠的操作員那裏獲得輸入。

我不確定哪些代碼可以幫助理解情況,但是我正在尋找關於非JavaScript函數的任何建議,這些函數可以簡單地保持選項卡是否正在編輯SQL表。

這裏是該小區的代碼,用於指示我,有一張紙條存在:

$conN = mysqli_connect(DB_HOST, DB_USER); 
     if (!$conN) {die('Could not connect: ' . mysqli_error($conN));} // Check Connection 
     mysqli_select_db($conN,"jms"); 

     $jid = $row['jobID']; 
     $opn = $row['operation']; 
     $highlight = mysqli_query($conN,"SELECT notes FROM operations WHERE jobID=$jid AND operation=$opn"); 
     while ($data = mysqli_fetch_array($highlight)) 
      if (isset($data['notes']) && $data['notes'] != "") { 
      echo "<td id='notes' style='background-color:red;width:1%;' onChange='alert(\"New note on Job No " .$jid. "\")'><input id='target' type='text' value='" .$data["notes"]. "' >" . "</td>"; 
      } else { 
      echo "<td style='background-color:palegreen;width:1%;'>" . "</td>"; 
      } 
     echo "</tr>"; // End the row 
     $index++; 
+0

我製作了一個能夠迴應音符值的單元格,並且創建了一個輸入以便我可以手動更改它。當我改變其中的文本時會彈出警告,但是當它從PHP查詢本身改變時,它不會給我一個通知。 – Eksepshon

回答

0

這可能比你想象的更復雜的事情。

有幾個選項可以實現這一點,它們取決於您對較大系統的控制。最終,使用PHP,您可能需要使用輪詢方法。要使用一個簡單的示例,您可以使用JavaScript來打一個AJAX PHP腳本,並將它張貼到當前數據數組。然後,PHP可以檢查當前的數據,並比較兩個數組。這可能不是非常有效,但它可以讓你知道字段何時更改。

爲了使這更加優化,您可以在每一行上存儲修改時間。然後,您只需發送最後一次修改時間,然後使用索引來檢查更新的記錄。只有AJAX PHP腳本更新時,它纔會發回數據。你可能仍然需要一個數組來告訴哪個特定字段發生了變化,但是這可以在客戶端完成。

另一個選擇是使用TRIGGER(如果您的數據庫引擎支持它們),它可以用更改信息更新單獨的表。然後你可以使用遊標通過AJAX輪詢發送這些信息。

繼續下去,你可以用websocket代替AJAX。如果您需要儘可能實時的信息,這可能會更有效。儘管它連接到的代碼最終仍然需要進行輪詢(除非它是一個長期生活的應用程序,更新也會經歷...儘管如此,但如果使用PHP,這種可能性不大)。

無論如何,無論如何,你需要的成分是:

  1. JavaScript要求服務器每X時間或通過一個長壽的websocket進行更改。
  2. 一種識別數據何時不同的方法(如修改時間,結果集,TRIGGER更新日誌表等)
  3. 某些東西在服務器上檢查並報告信息。
  4. JavaScript在用戶出現時向用戶顯示更改。
+0

你說得對,這絕對比我想象的更復雜。我只是各種劇本的初學者。這大概是我在使用html,php和js工作的第二個月,同時在機械工程師的某處工作。 – Eksepshon

+0

如果你真的想要避免使用JavaScript,你可以將數據存儲在$ _SESSION中,然後每隔X個時間刷新頁面(使用https://en.wikipedia.org/wiki/Meta_refresh),並使用PHP輸出警報。甚至,如果你可以沒有警報地活着,元刷新會自動更新,或多或少。 –

相關問題