php
  • html
  • forms
  • 2012-01-11 34 views 2 likes 
    2

    我正在根據HTML表單中的mysql數據生成清單。當點擊提交按鈕時,php腳本會更改mysql數據庫中的「完整」字段。我如何一次處理多個具有可變長度的列表的項目?目前,當我點擊兩個以上的框時,只有一個被處理。使用PHP處理HTML複選框表單

    這裏的HTML表單:

    <form method='post' action='listprocessor.php'> 
    <input style="float:right" type='checkbox' name='complete_goal' value='61'>Milk</input> 
    <input style="float:right" type='checkbox' name='complete_goal' value='117'>Eggs</input> 
    <input style="float:right" type='checkbox' name='complete_goal' value='118'>Bread</input> 
    <input style="float:right" type='submit' name='submitbtn' value='Completed'></input> 
    </form> 
    

    和這裏的簡化PHP:

    $_POST['submitbtn']; 
    
    $completed_goal = $_POST['complete_goal']; 
    
    $query = mysql_query("UPDATE notes SET complete='1' where note_id='$completed_goal'"); 
    

    回答

    3

    您的輸入元素名稱應該是一個數組,例如complete_goal[]

    <input style="float: right;" type="checkbox" name="complete_goal[]" value="61">Milk</input> 
    

    您可以使用WHERE note_id IN (<?php echo implode(',', $_POST['completed_goal']); ?>)更新他們都在一個單一的查詢。

    $query = mysql_query("UPDATE `notes` SET `complete` = '1' WHERE `note_id` IN (" . implode(',', $_POST['completed_goal']) . ")"); 
    
    0

    也許這將工作(可能需要檢查語法,因爲它是把我的頭頂部)。原位缺口」籤任何複選框不應在$ complete_goals陣列中列出所以你安全地處理它們:)

    foreach ($_REQUEST['complete_goal'] as $key) { 
        $query = mysql_query("UPDATE notes SET complete='1' where note_id='$key'"); 
    } 
    
    3

    應工作,並希望它能幫助。 Afaik都是具有相同名稱的輸入被視爲單選按鈕。所以你必須創建一個包含所有複選框的數組。

    <form method='post' action='listprocessor.php'> 
        <input style="float:right" type='checkbox' name='complete_goal[]' value='61'>Milk</input> 
        <input style="float:right" type='checkbox' name='complete_goal[]' value='117'>Eggs</input> 
        <input style="float:right" type='checkbox' name='complete_goal[]' value='118'>Bread</input> 
    
        <input style="float:right" type='submit' name='submitbtn' value='Completed'></input> 
    </form> 
    
    <?php 
        if(isset($_POST['complete_goal'])) 
        { 
        $query = mysql_query("UPDATE `notes` SET `complete`='1' WHERE `note_id` IN ('".implode("','", array_values($complete_goal))."');"); 
        } 
    ?> 
    

    編輯:添加了克里斯N的MySQL更新的想法。

    0

    我會使用每個複選框唯一的名稱屬性,然後抓住所有腳本複選框您使用的是提交處理的,做

    foreach($post_fields as $post_field_name) { 
        if(isset($_POST[$post_field_name])) { 
        // do your query 
        } 
    } 
    
    相關問題