目前,我有一段代码显示四个复选框,允许用户选中复选框,单击提交,然后通过POST方法将数据发送到数据库(称为“电子表格”),在那里将被存储。
通常,使用单选按钮,存储的数据只是一个元素。但我注意到,对于复选框,元素(具体来说是我的情况)可以从零到四个项目。所以我的代码问题是,即使我按下所有四个元素,也只会存储一个元素。我想我必须将这些项目存储为数组,但是如何存储+从数据库中检索所述项目?
以下是我的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <!-- tells browser this is an HTML document -->
<head> <!-- container of all head elements --> </head>
<body> <!-- Begin the content of the document -->
<?
if (isset($_POST['formSubmit2'])){
$category = $_POST['category'];
$accountID = $_POST['accountID'];
mysql_query("UPDATE Spreadsheet SET category='$category' WHERE accountID='$accountID'");
}
while($row = mysql_fetch_array($query)){
$values = array('0 - Luxury','1 - Brand','2 - Retailer','3 - B2B');
?>
<form name ="category" method ="POST" action ="" >
<?
echo "<input type = 'hidden' name = 'accountID' value = '" . $row['accountID'] . "' >";
for($i = 0; $i < count($values); $i++){
?>
<input type="checkbox" name="category" value="<?php echo $values[$i]; ?>" id="rbl_0" <? if($row['category'] == $i) echo "checked='checked'"; ?>/>
<? echo $values[$i] ?><br>
<? } ?>
<input type ="Submit" name ="formSubmit2" value ="Submit" />
</form>
</body>
</html>
答案 0 :(得分:0)
您必须为每个checkbox
指定一个不同的名称,因为如果没有,则会覆盖其值。
您还可以为他们提供类似category[]
的数组名称,结果如下:
<input type="checkbox" name="category[]" value="value 1"/> value 1<br/>
<input type="checkbox" name="category[]" value="value 2"/> value 2<br/>
<input type="checkbox" name="category[]" value="value 3"/> value 3<br/>
然后使用以下命令检索它们:
$categories = $_GET['category'];
foreach($categories as $category){
echo "Selected " . $category . "<br/>";
}
答案 1 :(得分:0)
您可以序列化数组,然后将其存储在数据库的varchar列中
保存:
$values = array(...);
$data = serialize($values);
// Store data in your database
提取:
// $data should come from your DB
$values = unserialize($data);
// Now values holds your array
答案 2 :(得分:0)
要在表单提交时在HTTP POST请求中发送多个值,您需要定义HTML数组。
请参阅以下代码段
<input type="checkbox" name="category[]" value="0"/>Luxury
<input type="checkbox" name="category[]" value="1"/> Brand
<input type="checkbox" name="category[]" value="2"/> Retailer
<input type="checkbox" name="category[]" value="3"/> B2B
复选框的POST值可通过超全局变量$ _POST ['category']
访问这里S_POST ['category']可以作为数组访问。 例如 $ _ POST ['category'] [0] , 的 $ _ POST [ '类别'] [1] 下, 的 $ _ POST [ '类别'] [2] 下, 的 $ _ POST [ '类别'] [3] 强> 因此,您需要遍历数组以插入复选框的各个值。
答案 3 :(得分:0)
不是传入name =“category”,而是将其设置为“$ category []”。
您应该能够从$ _POST中检索它,将其设置为新变量,并按照您的需要进行操作。
if (isset($_POST['formSubmit2'])){
$submitted_category = $_POST['$category'];
$accountID = $_POST['accountID'];
// rest of your code...
}
希望有所帮助。