2014-03-03 44 views
0

如何在POST後自動返回(到瀏覽器)某些數據(來自服務器)?如何在POST後自動取回某些數據?

  1. 我有一個HTML表單
  2. 我表單的POST數據到一個PHP代碼如:saveRecord()
  3. 的PHP代碼保存在一個MySQL數據庫
  4. 的數據,如果數據包含非0記錄ID將有一個更新,如果記錄ID == 0將有一個INSERT,並且PHP代碼知道(從數據庫中取回)新記錄ID
  5. (INSTER後)如何發送新的記錄ID返回(瀏覽器)HTML表單?

如果我編輯現有的記錄(ID!= 0),everithing是好的...

我的問題是,當我發表新數據(ID == 0)我可以張貼了好次,每次創建一個新的DB記錄...但我真的不希望這樣。我想(從服務器)發送(到瀏覽器)INSERT的記錄ID(在HTML表單中),以防止多個INSERT ...

我該怎麼做?!

具體CI代碼:

function update($record) { 

    print_r($record); 

    $id = $record['crn_id']; 
    $record['crn_active'] = (($record['crn_active'] == 'on') ? 1 : 0); 
    array_shift($record); 
    if ($id == 0) {    
     $this->db->insert('currencies', $record); 
    } else { 
     $this->db->where('crn_id', $id); 
     $this->db->update('currencies', $record); 
    } 
} 

>

+1

請分享你的代碼,所以我們可以看到你是**實際**做的。 –

+0

你可能需要使用mysqli_insert_id($ connection); //找到最後插入的Id .. – user1844933

回答

1

這裏有三種方法可以幫助你的方式,可以概括:

  1. 讓另一列是唯一的。如果你非常關心數據庫中可能有重複數據的情況,那麼可能有一些規則可以用約束的形式進行概括。
  2. 禁用點擊後的提交按鈕(例如<input type="submit" onsubmit="this.disabled=true">)。 (如果某些基於Ajax的驗證失敗,請確保重新啓用它)
  3. 使用生成的一次性密鑰來確保用戶不只是重新加載提交的頁面。看看form keys這也可以幫助抵禦CSRF和XSS攻擊。
+0

THX!第三Pont這是一個好主意,但我不同意第二個...用戶必須能夠一次又一次地發佈表單數據...但代碼(或系統)應該是聰明的,以瞭解是否這是一個新的數據,或者它只是以前發佈的新數據的更新... – Ruky

+0

同意第二個建議不是萬無一失的。愚蠢者重新發布的最常見的方式是不耐煩地多次點擊同一個按鈕。 –

+0

事實上,我必須用不同的方式解決它...我必須使用簡單(表單)後期的AJAX post ... – Ruky

相關問題