繁体   English   中英

结合MySQL结果中的多个产品属性

[英]Combine multiple product attributes from MySQL result

我有一个mySQL表,该表具有产品属性的行,每个行都与一个特定的属性类别(id_attrib_cat)相关联。

应该为用户定义每个产品属性组合的价格,因此我需要一个循环来创建属性表,并在每行的末尾输入价格。

属性类别值对于将相同类别的属性排除在组合之外很重要。

我该怎么做?

编辑

属性类别示例:值

格式 :正方形,四舍五入

尺码 :S,M,L

颜色 :白色,蓝色,黑色,黄色

属性组合表示例(下面的循环应执行此操作):

  1. 正方形+ S +白色= [价格输入]
  2. 正方形+ S +蓝色= [价格输入]
  3. 正方形+ S +黑色= [价格输入]

[...]


$q = mysql_query("SELECT id_attrib_cat, id_attrib, name FROM cms_products_attribs WHERE id_product=10 ORDER BY id_attrib ASC"); 

  while ($row = mysql_fetch_array($q, MYSQL_NUM)) {

      [** attribute combination + price input code **] 

  }

使用CONCAT连接查询本身

SELECT CONCAT(`id_attrib_cat`, ' ', `id_attrib`) AS `attributes`, `name` 
FROM `cms_products_attribs` 
WHERE `id_product`=10 
ORDER BY `id_attrib` ASC

这对您意味着什么,您将在该行中获得单个输出:

while ($row = mysql_fetch_array($q, MYSQL_NUM)) {
  $attribs = $row['attributes'];
  echo $attribs . '<input name="price" type="text" />;
}

从机械上讲,您可能需要的比这还多,包括完整形成表格并在提交时处理表格,但这应该可以帮助您入门。

如果可以的话,应该始终让数据库承担它设计的繁重任务。


停止使用mysql_*函数 这些扩展已在PHP 7中删除。了解有关PDOMySQLi的 准备好的语句并考虑使用PDO, 这确实非常容易

首先,我建议使用PDO。 mysql_query在PHP 5.5.0中已弃用,在PHP 7.0.0中已删除

您的查询应类似于:

$q  =   $db->prepare("SELECT `id_attrib_cat`, `id_attrib`, `name` FROM cms_products_attribs WHERE `id_product`=:id_product ORDER BY `id_attrib` ASC");
$q->execute(array(':id_product'=>"10"));

我相信查询将返回多行。 代替一会儿,使用foreach:

foreach($q as $row){

$id_attrib_cat  =   $row['id_attrib_cat'];
$id_attrib      =   $row['id_attrib'];
$name           =   $row['name'];

//Price Input goes here
echo $id_attrib_cat.'<br>';
echo $id_attrib.'<br>';
echo $name.'<br>';
echo '<input type = "text" name="'.$id_attrib.'">';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM