将多行选中复选框中的值插入数据库

时间:2015-05-15 10:52:28

标签: php mysql database forms checkbox

所以整个场景如下:

我的网站上有一个表单,其中包含多个复选框值。例如,“价格”有四个复选框。用户可以选择从无到四个复选框的任何位置。

我无法将“SELECTED”复选框值插入数据库表中。我尝试过在Google和Stackoverflow上找到的所有方法。

我是PHP的新手,所以我对它知之甚少。但为了解决这个问题,我已经完成了很多文件,其中很多都是。

无论如何,这就是我现在正在做的事情,并且它有效。但这是一种糟糕的方法,我知道会有更有效的方法。

<div class="panel-body">
     <label class="checkbox-inline"><input type="checkbox" name="price1" value="Less than 10,000, "> Less than 10,000</label>
     <label class="checkbox-inline"><input type="checkbox" name="price2" value="10,001 to 15000, "> 10,001 - 15000</label>
     <label class="checkbox-inline"><input type="checkbox" name="price3" value="15,001 to 25000, "> 15,001 - 25000 </label>
     <label class="checkbox-inline"><input type="checkbox" name="price4" value="25,001 to 35000, "> 25,001 - 35000 </label>
     <label class="checkbox-inline"><input type="checkbox" name="price5" value="35,001 and more, "> 35,001 and more </label>
</div>

所以基本上价格的每个复选框都有自己独立的名称。

相应的PHP如下

            <?php
        session_start();

        $_SESSION["f1"]=$_REQUEST["price1"];
        $_SESSION["f2"]=$_REQUEST["price2"];
        $_SESSION["f3"]=$_REQUEST["price3"];
        $_SESSION["f4"]=$_REQUEST["price4"];
        $_SESSION["f5"]=$_REQUEST["price5"];
        $_SESSION["f"]=$_SESSION["f1"].$_SESSION["f2"].$_SESSION["f3"].$_SESSION["f4"].$_SESSION["f5"];


        $z6=$_SESSION["f"];

        require_once('ConnectDB.php');
        $conn=mysql_connect(SERVER,USER,PASSWORD);
        mysql_select_db(DATABASE,$conn);

        query="insert into mobile_frm values('".$z6."')";
        mysql_query($query) or die(mysql_error());


        echo"Thanks for using us";
        header('Location: gadget.html');
        mysql_close($conn);

        ?>

这是将表单值写入数据库的PHP脚本。我只包含了它的一部分,以保持简单明了。

在这里,我只是获取所有单个值并从中创建一个字符串。

请给我一些指导。

5 个答案:

答案 0 :(得分:4)

您可以发送一系列表单元素,只需将标记更改为:

<input type="checkbox" name="prices[]" value="Less than 10,000, ">
<input type="checkbox" name="prices[]" value="10,001 to 15000, "> 
// etc...

然后,PHP方:

$prices = $_POST['prices'];   // this is now an array, work on it

答案 1 :(得分:1)

首先,您使用的是已弃用的库mysql。应切换到Mysqli或更好的PDO。 然后你有一个错字:

query="insert into mobile_frm values('".$z6."')";

这应该是:

$query="insert into mobile_frm values('$z6')";

假设您的表只有一列。 然后,正如其他所说的每个复选框之前应该具有相同的名称price [](即数组表示法)。在价格数组中,您只有选中的复选框。 SIDENOTE:您使用的是$_REQUEST数组,但您应该使用$_POST or $_GET,具体取决于您在表单中定义的方法。我还假设您需要使用$_SESSION来存储已发布的值(在其他地方使用它们)。在任何其他情况下,您的代码应该修改为不使用$_SESSION仅将存储的值分配给变量。

答案 2 :(得分:0)

在复选框的名称后面使用方括号([])。

<label class="checkbox-inline"><input type="checkbox" name="price1[]" value="Less than 10,000, "> Less than 10,000</label>

在PHP中,您可以使用

$price1 = $_POST['price1'];

答案 3 :(得分:0)

以下是显示如何在PHP中使用多个复选框字段的代码。

首先将复选框名称更改为price []。

<div class="panel-body">
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="Less than 10,000, "> Less than 10,000</label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="10,001 to 15000, "> 10,001 - 15000</label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="15,001 to 25000, "> 15,001 - 25000 </label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="25,001 to 35000, "> 25,001 - 35000 </label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="35,001 and more, "> 35,001 and more </label>
</div>

如何在PHP中获取价值?

Ans:您可以直接获取值:$prices = $_POST['prices'];在这种情况下,您可以将您的值作为数组获取。如果您想要分隔符,请使用$price = implode(', ', $_POST['price']);

答案 4 :(得分:0)

&#13;
&#13;
    <div class="panel-body">
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="Less than 10,000, "> Less than 10,000</label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="10,001 to 15000, "> 10,001 - 15000</label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="15,001 to 25000, "> 15,001 - 25000 </label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="25,001 to 35000, "> 25,001 - 35000 </label>
     <label class="checkbox-inline"><input type="checkbox" name="price[]" value="35,001 and more, "> 35,001 and more </label>
</div>
<?php
$price = $_REQUEST['price'];
//for single cell value separte by ,  
$p = implode(',',$price);
// for each value
for($i = 0;count($price)<$i;$i++){
    
    // put insert query and value of selected price
    $p = $price[$i];
}
?>
&#13;
&#13;
&#13;