2013-10-17 171 views
0

了一下我的代碼:複選框插入/刪除數據庫

我有一個動態顯示的電子郵件與旁邊的每個電子郵件複選框代碼。

<? 
    foreach($er as $row){ ?> 
    <input name="emailcheckbox" id="emailcheckbox" type="checkbox" value="check" checked="checked"> 
    <? 
    echo $row[email]."<br><br>"; 
    echo "<input name='emailID' id='emailID' type='hidden' value='".$row[emailID]."' />";  
    } $emailquery->execute(); ?> 

我似乎無法拿出當您取消選中該複選框,從一個特定的數據庫表中刪除的每封電子郵件的EMAILID的方式。當您重新選中複選框時,我想將其插回到數據庫表中。

電子郵件不會消失,因爲它們存儲在一個完全不同的表中,而不是我想要插入/刪除的表中。

我知道這是一個完整的問題,所以我會回答你可能有的任何問題。預先感謝您的幫助!

+1

根據您要如何去了解它,你可以在這裏你檢測的複選框取消選中是,然後調用服務器與它使用AJAX。或者,您也可以將其提交爲POST(不使用GET,爬行程序和webloaders會造成嚴重破壞)並且is!isset(EMAIL_ID),請執行您的代碼以將其刪除。雖然你將不得不給每個複選框輸入自己的獨特名稱 –

+1

添加到@aayush評論,你絕對**必須**由AJAX做到這一點。基於用戶獲得點擊樂趣的重複或僅僅是大帶寬消耗的潛力都是非常真實的。使用AJAX,您可以禁用複選框並等待響應重新啓用,從而避免這些問題。 – PlantTheIdea

回答

2

第一,改變你的輸入

<input name="emailcheckbox[]" value="<?php echo htmlspecialchars($row[email]);?>" ... 

那麼,你發佈此表單回服務器後,您將有

$_POST['emailcheckbox'] == array('checkedemail1', 'checkedemail2'...) 

,所以你將需要刪除所有從電子郵件你的表格,並從這個數組中插入電子郵件,這樣你將刪除未經檢查的郵件並只保存已檢查的郵件

+2

刪除所有重新插入的大錘方法很簡單,但不雅,可能效率低下。包含所有可用清單值的隱藏表單將允許您選擇要刪除的清單。 –

+0

@DanBracuk我同意,但要注意:如果我們在此表中有一些電子郵件從「主」表中刪除 - 他們將保持放棄 –

1

你可以這樣做:

<input name="emailcheckbox" id="emailcheckbox" type="checkbox" value="[tablename][email]" checked="checked"> 

插入頁:

<? 
foreach($_POST['emailcheckbox'] as $item) 
{ 
$query = "INSERT INTO ".$item[0]." VALUES(".$item[1].")"; 
..... 
}.... 
?> 
+2

此係統不會刪除「未選中」的電子郵件 –