2015-02-10 26 views
1

我有一個通知下拉框(如臉書),它顯示存儲在我的數據庫中的通知。下拉菜單打開時更新MySQL數據庫(注)

我想在用戶放下通知「菜單」時將通知標記爲已讀。這可能嗎?如果有的話,誰能幫我做到這一點?

數據庫將信息存儲在字段'notification_read'中,並將其設置爲0或1(0表示未讀)。

謝謝你,對不起,我爲我的下拉菜單中的代碼

<ul class="dropdown-menu notifications arrow"> 
        <li class="dd-header"> 
         <span>You have 3 new notification(s)</span> 
         <span><a href="#">Mark all Seen</a></span> 
        </li> 
        <div class="scrollthis"> 
         <li> 
          <a href="#" class="notification-user active"> 
           <span class="time">4 mins</span> 
           <i class="fa fa-user"></i> 
           <span class="msg">New user Registered. </span> 
          </a> 
         </li> 

回答

1

一個NB

例沒有進入太多細節(因爲這是非常寬泛的,我不知道的結構你代碼),你基本上需要兩件事:

  1. 更新數據庫的服務器端腳本。這可以接受要更新的參數,也可以是全局操作,將所有項目標記爲當前用戶讀取的項目。 (我將假設後者。)
  2. 通過AJAX調用服務器端腳本的客戶端代碼。

對於服務器端腳本,爲簡單起見,它將是一個單獨的獨立「頁面」。如果我們假設沒有參數,並且它可以從會話中推斷當前用戶,那麼所有腳本需要執行的是執行任何SQL代碼執行更新。然後它可以返回(以及「打印到頁面」)如truefalse那樣簡單以指示更新是否成功。 (如果不成功,請務必在某處記錄錯誤,以便診斷問題。)

我們假設這被稱爲markAsRead.php

現在的客戶端腳本,這可能是因爲這簡單的東西(假設jQuery的,因爲它更容易釋放手吧):

$.get('markAsRead.php'); 

或者,如果客戶端代碼需要以某種方式響應,如從菜單更改樣式:

$.get('markAsRead.php', function (data) { 
    // examine data for the response, which from the above 
    // description could just be a "true" or "false", and 
    // perform client-side logic based on that response 
}); 

此客戶端代碼只會在您使用的任何處理程序中調用。例如,如果有一些div稱爲#messages多數民衆贊成被點擊的用戶,它可能是這樣的:

$('#messages').click(function() { 
    $.get('markAsRead.php', function (data) { 
     // examine data for the response, which from the above 
     // description could just be a "true" or "false", and 
     // perform client-side logic based on that response 
    }); 
}); 

總體而言,問題是,客戶端代碼響應UI事件(點擊),發送請求服務器端資源,然後再執行服務器端邏輯,然後從該資源讀取響應以執行任何其他客戶端邏輯。

+0

謝謝!我已經將一些代碼添加到問題中,我需要做些什麼? – user4547025 2015-02-10 15:25:01

+0

@ user4547025:好的,這是一個非常寬泛的問題,並且超出了Stack Overflow提供的範圍。 *一般來說*,你需要做的是編寫JavaScript代碼來響應點擊事件。 (網上有很多例子和教程介紹瞭如何做到這一點。)在這段代碼中,您將對此答案中描述的服務器端代碼執行AJAX請求。 (同樣,*許多AJAX例子都可用。)並且服務器端代碼將更新數據庫。 (相同的反應,大量的例子和教程可用。) – David 2015-02-10 15:27:40

+0

好的,謝謝。我認爲添加一個按鈕「Mark as read」會更容易... – user4547025 2015-02-10 15:29:05