您好我通过使用for循环生成复选框列表,我想将已检查复选框的value
传递到数据库中。
foreach($this->lis as $lst)
{?>
<tr>
<td>
<input type="checkbox" name="list" value="1" />
<label for="list_32"><?php echo $list->nList ?></label>
</td>
</tr>
<?php } ?>
当我选中复选框时我想将标签名称传递到数据库中,可以有人帮忙。
答案 0 :(得分:4)
检查此代码。您需要将数组作为复选框名称,即list []。提交表单后,您可以使用它的值插入数据库。
<?
if(isset($_POST['submit'])) // once form is submitted build your logic
{
$list = $_POST['list'];
foreach($list as $value)
{
echo "<br />Checked: $value";
// use $value to insert into database
$sql = "insert into...";
mysql_query($sql);
}
}
?>
<form name="frm" method="post">
<table>
<? foreach($this->lis as $lst)
{?>
<tr>
<td>
<input type="checkbox" name="list[]" value="<?php echo $list->nList ?>" />
<label for="list_32"><?php echo $list->nList ?></label>
</td>
</tr>
<?php } ?>
<tr>
<td><input name="submit" value="Submit" type="submit" /></td></tr></table>
</form>
答案 1 :(得分:2)
好的,那里有一些问题..
首先,请避免打开php标签并不断关闭它们。回想一下HTML。经常进出php会导致性能问题。
所以,首先,您需要在此处设置表单,您的表单需要指向第二页(或使用isset函数进行自我处理,但为了清楚起见,请使用前一个解决方案)。第二页是根据用户勾选的内容将内容转储到数据库中的内容。
所以,这是表格的HTML;
<form action="database.php" method="POST">
<div>
<label for="checkbox1">This is the first option:</label>
<input type="checkbox" id="checkbox1" name="checkbox1" />
</div>
<div>
<label for="checkbox2">This is the second option:</label>
<input type="checkbox" id="checkbox2" name="checkbox2" />
</div>
<div>
<input type="submit" />
</div>
</form>
同样,我建议在你的foreach循环中回复这个 - 一个简短的函数可以为你完成这个。
因此,一旦有人点击“提交”按钮,他们就会被带到你的第二页(我们称之为database.php),他们的选项将被存储在POST数组中。对于良好实践,在处理数据库条目时始终使用POST而不是GET。
因此,在此页面上,我们将检查选中的复选框,然后根据需要更新数据库;
if (isset($_POST['checkbox1']))
{
// user ticked checkbox1
$sql = "UPDATE table
SET 'checkbox1' = 1
WHERE 'user' = 'username';"
mysqli_query($sql);
}
请注意,这只是一个粗略的解决方案 - 你还没有告诉我你是怎么做的,所以我假设你的数据库与用户的投票等有关。你也可以通过增加值来更新checkbox1 ..等等等
希望这有帮助。
答案 2 :(得分:0)
在名称中你应该使用[](因为它是一个数组)。所以在这种情况下,它将是name =“list []”。然后,当您提交它(发布或获取)时,您只需获取list []数组中的已检查数据。我不确定我是否理解你的问题。如果我没有;请分享更多信息。
答案 3 :(得分:0)
我认为这就是你要找的东西:
foreach($this->lis as $lst)
{?>
<tr>
<td>
<input type="checkbox" name="list[<?php echo $list->nList ?>]" value="1" />
<label for="list_32"><?php echo $list->nList ?></label>
</td>
</tr>
<?php } ?>
然后在PHP中,你会foreach($_POST['list'] as $listval)
再次循环它。如果您在表单中使用$_POST
,请将$_GET
替换为GET
。
编辑:我刚刚注意到你在echo $list->nList
所做的事情,这个变量要么不会在你的循环中改变,要么就是一个错字。假设它是一个拼写错误,它应该是echo $lst->nList
。如果它不是拼写错误,那么您只想将其删除并在HTML中添加name="list[]"