【问题标题】:Process HTML checkboxes and their values处理 HTML 复选框及其值
【发布时间】:2012-01-26 15:33:03
【问题描述】:

只有在它们被选中时我才能处理复选框并仅获取选中的值。

php

if (is_array($_POST['add'])) {
  foreach ($_POST['add'] as $key => $value) {
    $_POST['add'][$key] = mysql_real_escape_string(stripslashes($value));
  }
}

html

<input type="checkbox" id="wmeet_ce" 
        value="ce" 
        name="add[wmeet]" 
        title="Wanting To Meet" 
        class="checkbox {validate:{required:true,minlength:1}}"/>

<input type="checkbox" id="wmeet_sf"
        value="sf" 
        name="add[wmeet]" 
        class="checkbox"/>

<input type="checkbox" id="wmeet_sm" 
        value="sm" 
        name="add[wmeet]" 
        class="checkbox" />

【问题讨论】:

    标签: php html forms checkbox


    【解决方案1】:

    只有选中的复选框才会呈现给 PHP,因此您的 PHP 代码是正确的。

    但是,您的 HTML 不正确,因为您的所有复选框都具有相同的名称。这意味着 PHP 只会看到其中一个。

    要获得一组复选框,您需要为您的复选框指定唯一的名称,如下所示

    <input type="checkbox" id="wmeet_ce" 
            value="ce" 
            name="add[ce]" 
            title="Wanting To Meet" 
            class="checkbox {validate:{required:true,minlength:1}}"/>
    
    <input type="checkbox" id="wmeet_sf"
            value="sf" 
            name="add[sf]" 
            class="checkbox"/>
    
    <input type="checkbox" id="wmeet_sm" 
            value="sm" 
            name="add[sm]" 
            class="checkbox" />
    

    或者像这样使用空箱技术。

    <input type="checkbox" id="wmeet_ce" 
            value="ce" 
            name="add[]" 
            title="Wanting To Meet" 
            class="checkbox {validate:{required:true,minlength:1}}"/>
    
    <input type="checkbox" id="wmeet_sf"
            value="sf" 
            name="add[]" 
            class="checkbox"/>
    
    <input type="checkbox" id="wmeet_sm" 
            value="sm" 
            name="add[]" 
            class="checkbox" />
    

    【讨论】:

    • 当我使用空技术时会发生什么,它会检索复选框的值,即 ce、sf 和 sm?
    • 您将获得一个索引数组,其中包含已签入的值。如果您使用其他技术,您将获得一个关联数组。