【问题标题】: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']) 是一个反模式,不应该以任何理由存在于任何人的代码中。 stackoverflow.com/a/4559976/2943403

标签: php arrays checkbox while-loop


【解决方案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
    Mike
    Alycia
    我正在为结果做一个 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,我会在早上试试这个。我也喜欢这种方法,它比我原来的代码少得多。
  • 虽然紧凑,但这个单行答案缺少教育解释。
猜你喜欢
  • 1970-01-01
  • 2011-08-14
  • 2013-01-25
  • 1970-01-01
  • 2019-01-26
  • 2018-07-03
  • 1970-01-01
相关资源
最近更新 更多