mb_categoryとmb_items の2 つのテーブルがあります。mb_categoryで割り当てられているカテゴリと同じ ID を持つ mb_items からアイテムを選択しようとしています。
mb_category には、id と category の 2 つの行があります。
mb_items には 4 つの行があります: id、item_name、item_price、および mb_category_id
やりたいことは、mb_items のすべてのアイテムを対応するカテゴリ ID で選択し、正しいドロップダウンにエコーすることです。
私が現在持っているものは次のとおりです。
<ul class="nav">
<?php
$category = $db->read('mb_category', '*', '', 'ORDER BY id ASC');
// echo $category["count"] . "<br />";
// print_r($category);
foreach ($category["results"] as $row) {
?>
<li class="button-dropdown">
<a href="javascript:void(0)" class="dropdown-toggle">
<?php echo $row->category; ?> <span>▼</span>
</a>
<ul class="dropdown-menu">
<?php
$cid = $db->read('mb_category', 'id', '', '');
$item = $db->read('mb_items', '*', 'mb_category_id="$cid"', '');
// var_dump($item);
// echo $item["count"] . "<br />";
// print_r($item);
foreach ($item["results"] as $irow) {
?>
<li>
<a href="#">
<?php
echo $irow->item_name;
?>
</a>
</li>
<?php
}
?>
</ul>
</li>
<?php
}
?>
そして、これは私のSELECTです:
public function read($table_name, $cols, $where = NULL, $limit = NULL) {
//GET $cols FROM $table_name WHERE $where returns 0 for false and fetch_object() for true
$query = "SELECT " . $cols . " FROM " . $table_name;
if ($where) {
$query .= " WHERE " . $where;
}
if ($limit) {
$query .= " " . $limit;
}
//echo $query;
$sql = $this->query($query);
if ($sql) {
$data = array();
$data['count'] = $sql->num_rows;
while ($row = $sql->fetch_object()) {
$data['results'][] = $row;
}
return $data;
}
return false;
}
}
私はあなたに 2 つのことを提案できます (私があなたに与えているコードをテストしたわけではありません。これは単にアイデアを示すためです)。
1) リクエストが多すぎます。必要なのは 1 つだけです。
SELECT c.id AS category_id, c.category AS category_name, i.id AS item_id, i.item_name
FROM mb_category c
LEFT JOIN mb_items i ON c.id = i.mb_category_id
2) データをフォーマットし、それを使用してリストを表示します。
<?php
// format data
$categories = [];
foreach ($category["results"] as $row) {
if (empty($categories[$row[category_id]])) {
$categories[$row[category_id]] = [
'id' => $row[category_id],
'name' => $row['category_name'],
'items' => [],
];
}
if (!empty($categories[$row[item_id]])) {
$categories[$row[category_id]]['items'][] = [
'id' => $row['item_id'],
'name' => $row['item_name'],
];
}
}
?>
<ul class="nav">
<?php
// display data
foreach ($categories as $categoryId => $category) {
?>
<li class="button-dropdown">
<a href="javascript:void(0)" class="dropdown-toggle">
<?php echo $category['name']; ?> <span>▼</span>
</a>
<ul class="dropdown-menu">
<?php foreach ($category['items'] as $item) { ?>
<li>
<a href="#">
<?php
echo $item['name'];
?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php } ?>
</ul>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加