2012-04-24 44 views
1

我有一個時間表數據庫,志願者可以檢查他們的班次。我會通過電子郵件向他們發送指向他們輸入電子郵件地址的頁面的鏈接到HTML表單以訪問此信息。用戶跟蹤/驗證/更新MySQL結果

有沒有一種方法可以跟蹤哪些電子郵件被查詢,以便我可以重新發送計劃鏈接到那些誰沒有訪問數據庫?

如果有必要,我可以添加一個額外的'確認'複選框的結果,並有更新數據庫。我喜歡這個想法,但是我不確定如何實現(或者這個操作的術語)。

編輯:這是我用來實現的代碼。但是,我沒有在確認的專欄中獲得結果。

   $db = new mysqli("host", "user", "pass", "db"); 

    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?'); 
    $stmt->bind_param('s', $_POST['email']); 
    $stmt->execute(); 

    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?'); 
    $stmt->bind_param('s', $_POST['email']); 
    $result = $stmt->get_result(); 
    while ($row = $result->fetch_array(MYSQLI_NUM)) { 
    // construct your output here using $row to access database record 
    echo "<h2>" . $row['agreeName'] . "</h2>"; 
    echo "<p> You have been assigned as a volunteer for:" . $row['position'] . "</p>"; 
    echo "<p>Your shift times are scheduled for:" . $row['shift_times'] . "</p>"; 
    echo "<p>Your shift has been confirmed:" . $row['confirmed'] . "</p>"; 
    } 
+0

您可以添加一個字段您的表(已訪問),當用戶輸入電子郵件時將其從0更新爲1。 – Leri 2012-04-24 14:01:53

+0

您是否收到任何MySQL錯誤?將第四行改爲'$ result = mysql_query($ query)或者die(mysql_error());'。另外,在上面的代碼中,您應該使用mysql_real_escape_string來轉義用戶輸入。永遠不要相信用戶輸入:) http://en.wikipedia.org/wiki/SQL_injection – Daan 2012-04-24 14:43:37

+0

嗨大安 - 我沒有得到任何錯誤,當我添加'或死'。 (OP中更新的代碼) – Commandrea 2012-04-24 15:16:16

回答

1

你需要做的線沿線的東西:

  1. 一個新列添加到您的志願者表格

    ALTER TABLE Volunteers ADD COLUMN Confirmed BOOLEAN NOT NULL DEFAULT FALSE; 
    
  2. 已在提交頁面更新的PHP該列:

    UPDATE Volunteers SET Confirmed = TRUE WHERE Email = '[email protected]'; 
    

    在您的代碼段:

    $db = new mysqli("dbhostname", "username", "password", "dbschema"); 
    
    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?'); 
    $stmt->bind_param('s', $_POST['email']); 
    $stmt->execute(); 
    
    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?'); 
    $stmt->bind_param('s', $_POST['email']); 
    $result = $stmt->get_result(); 
    
    while ($row = $result->fetch_array(MYSQLI_NUM)) { 
        // construct your output here using $row to access database record 
    } 
    
  3. 在未來的某個時刻,讓誰尚未訪問的網頁的所有用戶的列表:

    SELECT Email FROM Volunteers WHERE Confirmed = FALSE; 
    
+0

嘿Eggy-謝謝!我已經添加了列(#1),但是,我應該用什麼替換'用戶'?我嘗試了我的'volConfirm'表鍵,但它不更新數據庫。 – Commandrea 2012-04-24 14:31:38

+0

對不起,我的壞。 #2中的「用戶」應該是「志願者」(即表名)。糾正。 – eggyal 2012-04-24 14:32:22

+0

好吧 - 我這樣做了,而且它無法工作:)我認爲我遇到了一個問題瓦特/'[email protected]' - 作爲電子郵件='$電子郵件'(或查詢輸入用戶) – Commandrea 2012-04-24 14:35:24