问题描述
表 2:名称
两个表中的“名称”行相同。表 1 由每个项目的规格详细信息组成。表 2 只是应该包含在整个页面上的产品名称列表。 我想获取每个产品名称的所有规格。 例如,Product Rajwadi 晚餐套装应从表 1 中获取其所有规格。 我需要添加大约 50 个这样的产品。 我希望它的显示方式也如下图所示。
我一直在尝试的代码是这样的:
<?PHP
include("connection.PHP");
$db_dinner_set = "dinner_set";
$db_names = "names";
$query2= "SELECT * FROM $db_names";
//echo($query);
$statement2 = $connection2->prepare($query2);
$statement2->execute();
$result2 = $statement2->fetchAll();
foreach($result2 as $row){
echo '
'.$row['Name'].'
<br>
<br>
';
$Name = $row['Name'];
$query3= "SELECT * FROM $db_dinner_set WHERE Name = $Name ";
//echo ($query3);
$statement3 = $connection2->prepare($query3);
$statement3->execute();
$result3 = $statement3->fetchAll();
foreach($result3 as $row)
{
echo '
<div class="poem-genre">
'.$row['Items'].'
</div>
';
}
}
?>
解决方法
您的桌子设计需要一些工作,但您仍然可以完成任务。按名称加入表格(不理想):
SELECT d.Name,d.Items,d.pieces,d.image FROM dinner_set d LEFT JOIN names n ON d.Name = n.Name
然后在 PHP 中循环遍历结果,为每个项目构建一个对象。
$items = [];
foreach($result3 as $row){
// Add item by name
if (!array_key_exists($row['name'],$items)) {
$items[$row['name']] = [];
}
$piece = [];
// Add attributes of the particular piece
$piece['name'] = $row[Items];
$piece['qty'] = $row[pieces];
// Assign this piece to this item
$items[$row['name']][] = $piece;
}
现在您有一个项目数组,每个项目都将包含该项目的零件列表。