2013-06-20 40 views
2

我使用下面的代碼在我的php文件中獲取多個複選框的值。在POST變量中也包含未選中的框 - 多個複選框

if(!empty($_POST['check_list'])) { 
     foreach($_POST['check_list'] as $check) { 
       update_comment_meta($check, 'consider', 1); 
     } 


    } 

問題是,這段代碼顯然只在數組$_POST['check_list']中加入了檢查值。

我的需求是通過將'0'作爲第三個參數而不是'1'來執行函數update_comment_meta

有關詳細信息,我給的代碼生成HTML表單:

<form action="" id="primaryPostForm" method="POST"> 

<?php  
     $defaults = array(
    'post_id' => $current_post); 
     $com= get_comments($defaults); 

     foreach ($com as $co) { 
    if(get_comment_meta($co->comment_ID, 'consider', true)==1) { 
    ?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" checked="checked"> 

    <?php } 
    else { 
    ?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" > 
    <?php 
    }} 
</form> 

你平常的幫助總是讚賞。

+2

這就是它的工作原理。你知道沒有檢查哪些值沒有被髮送。 – PeeHaa

+1

您可以使用AJAX(jQuery)發送數據,而您可以完全控制行爲。 – silkfire

+0

@PeeHaa埽我用你的評論來找到解決方案,我在上面寫過。非常感謝你。 –

回答

0

這裏是解決方案中使用(基於PeeHaa評論)我:

 if(!empty($_POST['check_list'])) { 
     foreach ($com as $co) { 

     if (in_array($co->comment_ID,$_POST['check_list'])) 
     update_comment_meta($co->comment_ID, 'consider', 1); 

     else 
     update_comment_meta($co->comment_ID, 'consider', 0); 
     } 
     } 

事實上POST變量是這樣工作的有複選框,這樣簡單的方法是使用服務器端語言知道什麼值不是通過POST發送的。

謝謝你的時間。

+0

。 – Notepad

+0

我真的不理解你! –

+2

感謝您自己發佈您的答案,而不是忘記線程。就是這樣 – Notepad

6

發送未經檢查的值發佈是有點不容易。更好的解決方案是,您以一種方式使用您的名稱複選框,您可以輕鬆地迭代他們在發佈頁面。

使用隱藏的輸入和checkbox.Checkbox優先於隱藏的輸入。

<form> 
    <input type='hidden' value='0' name='check_box_con'> 
    <input type='checkbox' value='1' name='check_box_con'> 
</form> 

現在提交後,因爲兩者具有相同的名稱,check_box_con會顯示隱藏字段的值如果不加以控制,否則將覆蓋並顯示原。

更多看到 Post the checkboxes that are unchecked

+0

非常感謝,明天早上我會試試明白並給出反饋。 –

+0

標記線程解決了 – Notepad

+0

即使它不工作,我也投了票。這不是爲我工作的解決方案。 –

相關問題