首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用复选框将$_POST as $key => $value

使用复选框将$_POST as $key => $value
EN

Stack Overflow用户
提问于 2009-08-30 22:59:02
回答 5查看 4K关注 0票数 3

我在获取表单以更新从复选框传递的信息时遇到问题。我得到了这个代码。

代码语言:javascript
运行
复制
$one = isset($_POST['one']) ? 'on' : 'off'; 

只要我单独调用每个复选框,这就很有效。我的问题是我总共有大约200个复选框。

这是我用来UPDATE的代码。有没有人能帮我找出在我现在的代码中插入代码的位置?我尝试过各种各样的变种。

代码语言:javascript
运行
复制
if($_POST['submit']){
    if(!empty($applicant_id)){
        $sql = "UPDATE play SET ";
        foreach($_POST as $key => $value){
                if(($key != 'submit') && ($key != 'applicant_id')){
                    $sql .=  $key. " = '$value',";
                }
        }
        $sql = substr($sql, 0, -1);
        $sql .= " WHERE ".$applicant_id." = $applicant_id";
        $result = mysql_query($sql,$db) or die(mysql_error(). "<br />SQL: $sql");   
    } 
} 
EN

回答 5

Stack Overflow用户

发布于 2009-08-30 23:16:35

解决方案是从array()或类似的可能复选框的已知列表开始。我可以假设您是用这样的列表生成表单的吗?如果不是,您可能应该这样做。然后,您可以在相同的数据上使用循环来检查每个复选框的存在。

其他一些提示:

不推荐使用isset($array[$key])。虽然它在大多数情况下都是可靠的,但如果$array[$key]null,它将失败。正确的调用是array_key_exists($key, $array)

在为SQL组装字符串片段时,就像您正在做的那样,执行以下操作会更优雅:

代码语言:javascript
运行
复制
 $sqlvalues = array();
 foreach( $options as $field ) {
    if( array_key_exists('checkbox_'.$field, $_POST) )
        $sqlvalues[] = $field.' = \'on\'';
    else
        $sqlvalues[] = $field.' = \'off\'';
 }
 mysql_query('UPDATE '.$table.' SET '.implode(', ', $sqlvalues).' WHERE applicant_id = '.$applicant_id);
票数 5
EN

Stack Overflow用户

发布于 2009-08-30 23:20:03

您可能正在运行HTML复选框行为:只有当复选框处于打开状态时,才会将其发送到服务器;如果它们处于关闭状态,则不会发送名称/值对。在上面的代码中,你会遇到关闭值的问题。

因此,您需要遍历已知值列表,并在$_POST参数中检查它们。

票数 1
EN

Stack Overflow用户

发布于 2009-08-31 07:29:40

您应该使用数组名称,它将是PHP中的数组。

正如ndp所说,如果未选中某个复选框,则不会传输其值。因此,您需要在复选框输入字段之前使用具有相同名称的隐藏输入字段,并使用"off“值。

代码语言:javascript
运行
复制
<label for="one">One</label> 
<input type="hidden" name="checkboxes[one]" value="off"/>
<input type="checkbox" name="checkboxes[one]" id="one" value="on"/>

记住,如果checked=默认设置为on,请记住它是“checked”。

现在可以使用POST或GET循环复选框

代码语言:javascript
运行
复制
foreach ($_POST['checkboxes'] as $key => $value) {
    //something
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1355155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档