【问题标题】:PHP: How to organise queries and tables to generate HTML selection boxPHP:如何组织查询和表格以生成 HTML 选择框
【发布时间】:2015-02-07 05:56:17
【问题描述】:

我正在尝试为用户将在产品页面上选择的产品的各种属性创建一个下拉选择框,例如重量、风味或颜色。我的产品数据库目前如下:

products(id,productname,productprice)

productattributes(id,productid,attributename,value)

我正在使用 Laravel。到目前为止,在我的控制器中,我有:

public function show($id)
{
    $product = DB::table('products')->where('slug', $id)->take(1)->get();
    $prodid = DB::table('products')->where('slug', $id)->pluck('id');
    $prodattr = DB::table('productattributes')->where('prodid', $prodid)->get();
    return View::make('product/singleproduct', ['product' => $product, 'prodattr' => $prodattr]);
}

在我看来:

@foreach ($prodattr as $prodattribute)

{{ $attrname = $prodattribute->attributename }}
{{ $attrvalue = $prodattribute->value }}

@endforeach

这给了我输出:

Flavour Unflavoured 
Flavour Strawberry 
Weight 1kg

所以我有我需要的数据,但我的问题是如何将它放入每个属性的选择框中。我不会总是知道属性名称是什么(例如,可以添加颜色)或者会有多少,所以我不想硬编码'Flavour'等。我基本上想生成HTML这个:

<select name="flavour">
<option value="Unflavoured">Unflavoured</option>
<option value="Strawberry">Strawberry</option>
</select>
<br>
<select name="weight">
<option value="1kg">1kg</option>
</select>

有人有什么想法吗?我正在考虑循环中的循环,或者我的表格布局不太理想?我曾考虑在 foreach 循环中添加另一个查询,但这似乎适得其反,因为我认为我拥有所需的所有数据。我还想知道是否有可能以某种方式组合或合并数组?非常感谢任何帮助!

【问题讨论】:

    标签: php html sql laravel database-design


    【解决方案1】:

    您可以创建第三个表,以分隔自定义属性和每个属性的可用值。

    我将使用的结构示例:

    products(id, name, price)
    
    product_meta_name(id, name)
    
    product_meta_value(id, product_meta_name_id, product_id, value)
    

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2015-06-06
      • 1970-01-01
      • 2015-09-05
      • 2021-03-23
      • 2012-03-03
      • 2012-11-04
      • 2014-01-05
      • 1970-01-01
      相关资源
      最近更新 更多