使用动态创建的复选框和数组维护复选框值

Posted

技术标签:

【中文标题】使用动态创建的复选框和数组维护复选框值【英文标题】:Maintain checkbox value with dynamically created checkboxes and array 【发布时间】:2011-08-08 09:17:06 【问题描述】:

我试图让我的复选框值保存在我的动态创建的输入中,但我失败了。是的,我已经在线阅读了十几篇或更多教程,但我找不到适合动态复选框列表的教程...请让我束手无策!!

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="checkboxForm">
<?php
$checkbox[] = array();
while($row = mysql_fetch_array($result)) 

$checked = isset($_POST['checkbox']) ? " checked" : "";

echo "<input name=\"checkbox[]\" type='checkbox' value='" . $row['first_name'] . "'     $checked /> ";
echo $row['first_name'];
echo "<hr />";
//print_r( $_POST['checkbox']);


if(isset($_POST['checkbox']) && !empty($_POST['checkbox'])) 
 foreach($_POST['checkbox'] as $checkbox)
echo $checkbox . "<br />";
 
?>

【问题讨论】:

你能在发帖前展示你生成的html吗?? 郑重声明,isset($_POST['checkbox']) &amp;&amp; !empty($_POST['checkbox']) 是一个反模式,不应该以任何理由存在于任何人的代码中。 ***.com/a/4559976/2943403 【参考方案1】:

给你!!

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="checkboxForm">
<?php

    $chvalues = array();

    if(isset($_POST['checkbox']))
    
        foreach($_POST['checkbox'] as $ch => $value)
        
            $chvalues[] = $value;
        
    

    while($row = mysql_fetch_array($result))
        if(in_array($row['first_name'], $chvalues))
        
            echo "<input name=\"checkbox[]\" type='checkbox' value='" . $row['first_name'] . "' checked='checked'/> ";
        
        else
        
            echo "<input name=\"checkbox[]\" type='checkbox' value='" . $row['first_name'] . "'/> ";
                   
        echo $row['first_name'];
        echo "<hr />";      

    

    if(isset($_POST['checkbox'])) 
        foreach($_POST['checkbox'] as $checkbox => $val)
            echo $checkbox .':'.$val."<br />";
     
?>
</form>

【讨论】:

我明白你在做什么,但部分问题是该值需要保留为 first_name 值。我不能使用柜台号码。 @OldWest,这个想法几乎是一样的,你能发布你生成的html代码吗?也许我们可以从那里得到一些线索?
数组 ( [0] => Mike [1] => Alycia ) Mike
Array ([0] => Mike [1] => Alycia) Alycia
MikeAlycia 我正在为结果做一个 print_r。
我不敢相信!这甚至不起作用! foreach($_POST['checkbox'] as $checkbox) // 回显 $checkbox . ""; $checked = $checkbox != "" ? “检查”:“”; while($row = mysql_fetch_array($result)) echo " ";回声 $row['first_name'];回声“”; //print_r($_POST['checkbox']);如果只选择了一个复选框,则每次提交时都会检查两个复选框??? #experimentX,成功了。有一个错位的支架和其他一些我不得不调整的小项目,但据我所知,这解决了这个问题。谢谢你的坚持。。我的心都融化了。【参考方案2】:
$checked = isset($_POST['checkbox']) && in_array($row['first_name'], $_POST['checkbox']) ? " checked" : "";

【讨论】:

Gaurav,我会在早上试试这个。我也喜欢这种方法,它比我原来的代码少得多。 虽然紧凑,但这个单行答案缺少教育解释。

以上是关于使用动态创建的复选框和数组维护复选框值的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组动态创建复选框列表?

动态创建复选框

如果 php 和 jQuery 选中或未选中,则在 php 中动态创建复选框值

如何使用 JSP 在复选框中动态包含值?

如何在agGrid中获取动态生成的复选框列的新旧值

将javascript创建的复选框传递给控制器 以保存到表格?