-1

目前,我有一段代码,它显示四个复选框,并允许用户选择复选框,单击提交,数据将通过 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>
4

4 回答 4

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/>";
}

另请参阅:如何在 HTML 中创建数组?文档

于 2012-12-12T16:47:15.167 回答
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
于 2012-12-12T16:56:38.033 回答
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['category'] 访问复选框的 POST 值

这里 S_POST['category'] 可以作为数组访问。例如$_POST['category'][0] , $_POST['category'][1] , $_POST['category'][2] , $_POST['category'][3] 所以你需要遍历用于插入复选框的单个值的数组。

于 2012-12-12T17:03:23.240 回答
0

不要传入 name="category",而是将其设置为 "$category[]"。

您应该能够从 $_POST 中检索它,将其设置为一个新变量,然后按照您的意愿对其进行操作。

if (isset($_POST['formSubmit2'])){

   $submitted_category = $_POST['$category'];
   $accountID = $_POST['accountID']; 

   // rest of your code...

}

希望有帮助。

于 2012-12-12T17:05:56.460 回答