【问题标题】:Updating select tag from database with multiple values使用多个值更新数据库中的选择标签
【发布时间】:2015-08-09 11:55:10
【问题描述】:

我在数据库中有一个名为“item”的表,它有不同的列,其中一个名为“size”的表有两个用逗号分隔的值,即 Medium、Large。现在,当我检索这些值以显示在我的“选择”标签中时,它会一起显示它们,我尝试使用 explode();但我搞砸了它的行为。我已经附上了表格的图片和我网站内的结果数据以及代码。

上面实现了while循环,这只是'Size:'部分

    Size :  
<?php var_dump($row["item_size"]);
$arr = $row["item_size"];  
$exp = explode("," , $arr);
var_dump($exp);

 ?>
      <select name="product_size">
<?php
echo "<option value='".$row["item_size"]."'>".$row["item_size"]."</option>";
echo "</select>";
?>

【问题讨论】:

  • 不应该在字段中存储数组(标准化你的存储)
  • 更好的方法是将类别(中、小等)存储在一个表中,并在您的产品和此类别之间建立一个链接表,例如。产品猫。然后您可以轻松加入并检索此信息(以及更改要求时的更多信息)
  • 如果我理解正确,在这种情况下,链接表 product_cats 可能包含一个 product_id(在我的情况下为 item_id)和一个类别列。现在再一次,我必须在类别列中存储一个数组如果我想存储多个类别 (Medium, Small) ,不是吗?
  • 没有。您最终将存储两条记录 product_id: 10, cat_id: 1 ( Small ) 和 product_id: 10, cat_id: 2 ( Medium )。这种结构可以以简单的方式连接和分析

标签: php mysql select explode


【解决方案1】:

您需要在爆炸后立即循环遍历size 数组。

    $arr = $row["item_size"];  
    $exp = explode("," , $arr);

echo "<select name='product_size'>";

foreach($exp as $key=>$val) {
        echo "<option value='" . $val . "'>" . $val . "</option>";
}

echo "</select>";

工作Demo

【讨论】:

    猜你喜欢
    • 2013-12-15
    • 1970-01-01
    • 2023-03-11
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多