【问题标题】:How to store multiple checkbox value into one database filed如何将多个复选框值存储到一个数据库字段中
【发布时间】:2015-02-22 08:53:32
【问题描述】:

我正在开发一个系统,在该系统中,我要求用户将哪些客户要购买的产品标记为已检查产品。我已经详细创建了这个产品表,并根据产品表中的条目动态创建了一个复选框列表。下面是我创建复选框的代码。

    $query_parent4 = mysql_query("SELECT * FROM product") or die("Query failed: ".mysql_error());
    <div class="col-sm-8 icheck ">
    <?php while($row = mysql_fetch_array($query_parent4)): ?>
    <div class="square-blue single-row">
    <div class="checkbox" >
    <input  name="product[]" value="<?php echo $row['product_id']; ?>" type="checkbox"><label> <?php echo $row['product_name']; ?></label>
    </div>
    </div>
    <?php endwhile; ?>
    </div>

现在我想将所有选中的复选框值存储在我在客户表中创建的名为“产品”的字段中,如下所示

产品:1:2:3:4:5

我使用下面提到的代码来完成这个任务,但没有成功

<?php
if(isset($_POST['submit']))
{
    $fac=$_POST['product'];
    $fac1=implode(":",$fac);

    $sql=mysql_query("update hotel_info set product='$fac1' where custid=$custid");

}
?>

请帮忙!!!

【问题讨论】:

  • 你可以用逗号存储,表示逗号分隔值..
  • $_POST['product']; 返回什么值。是数组还是别的什么。
  • 坏主意。那应该是新表中的 5 行
  • 我知道这超出了这个问题的范围,但你可能想看看重新设计你的数据库。更常见的做法是有一个额外的表,我们称之为“customer_product”,它有外键(custid,product_id)
  • 使用 jQuery 并在一个变量中获取所有选中的复选框值,并在获得所有复选框值后将该变量分配给某个隐藏字段并存储该隐藏字段......

标签: php mysql cakephp mysqli phpmyadmin


【解决方案1】:

试试这个,它会起作用的:

<?php
if(isset($_POST['submit']))
{
    $fac=$_POST['product'];


foreach($fac as $fac1)
        {
           $sql=mysql_query("update hotel_info set product='$fac1' where custid=$custid");

        }        
}
?>

这里,$fac 返回一个array,所以你不能直接使用它。

【讨论】:

  • 这没有意义,除非他以某种方式在他的数据库中存储了同一客户的多个副本,然后您的查询仍会同时使用相同的值更新所有这些副本。跨度>
【解决方案2】:

将多个值存储到单个列中是个坏主意。
我建议,使用一个新表来映射每个产品与客户(因为它是多对多关系)。

类似这样的:

Customer: id, name<br>
Product: id, name, price<br>
Customer_Product(or call it Order):id, customer_id, product_id, qty, due etc.

这将使表结构标准化。

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 2013-02-20
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多