使用“提交”按钮将复选框发布到MySQL数据库

时间:2012-12-12 16:42:05

标签: php html mysql arrays checkbox

目前,我有一段代码显示四个复选框,允许用户选中复选框,单击提交,然后通过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 个答案:

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

请参阅:How do I create arrays in a HTML ?Docs

答案 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...

}

希望有所帮助。