使用动态创建的复选框和数组维护复选框值
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']) && !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代码吗?也许我们可以从那里得到一些线索? 我不敢相信!这甚至不起作用! 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,我会在早上试试这个。我也喜欢这种方法,它比我原来的代码少得多。 虽然紧凑,但这个单行答案缺少教育解释。以上是关于使用动态创建的复选框和数组维护复选框值的主要内容,如果未能解决你的问题,请参考以下文章