我有一个显示类别的脚本,但我希望脚本只显示用户选择的某些类别,范围从1到多个类别。我需要对脚本做些什么来解决这个问题?一个例子会有很多帮助。
这是我的PHP脚本。
function make_list ($parent = 0, $parent_url = '') {
global $link;
echo '<ol>';
foreach ($parent as $id => $cat) {
$url = $parent_url . $cat['url'];
echo '<li><a href="' . $url . '" title="' . $cat['category'] . ' Category Link">' . $cat['category'] . '</a>';
if (isset($link[$id])) {
make_list($link[$id], $url); // $url adds url value to sub categories
}
echo '</li>';
}
echo '</ol>';
}
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if (!$dbc) {
print mysqli_error();
}
$link = array();
while (list($id, $parent_id, $category, $url) = mysqli_fetch_array($dbc)) {
$link[$parent_id][$id] = array('category' => $category, 'url' => $url);
}
make_list($link[0]);
这是我的MySQL表。
CREATE TABLE categories (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
category VARCHAR(255) NOT NULL,
url VARCHAR(255) NOT NULL,
depth INT NOT NULL DEFAULT 0,
PRIMARY KEY (id),
INDEX parent (parent_id),
UNIQUE KEY(parent_id, url)
);
以下是我的类别列表,我评论了要显示的类别。
Antiques
Antiquities
Architectural & Garden
Asian Antiques
Books & Manuscripts
Decorative Arts
Ethnographic
Furniture // I want to select this category
Home & Hearth
Linens & Textiles
Restoration & Care // I want to select this category
Rugs & Carpets // I want to select this category
Science & Medicine
Silver // I want to select this category
Reproduction Antiques
答案 0 :(得分:0)
将您的查询更改为类似的内容,您需要获取类别ID并将其插入IN子句中。
SELECT * FROM categories WHERE categories IN(1,5,10,12) ORDER BY parent_id, category ASC
答案 1 :(得分:0)
我同意之前关于使用IN子句的帖子。只是动态地将它们添加到您的查询中。因此,每次用户单击某个类别(但您允许他们这样做)时,您可以将该类别的ID添加到数组中。然后使用类似PHP的内爆函数来制作逗号分隔列表
implode(",", $array)
所以你的查询字符串看起来像
$string = "SELECT * FROM categories WHERE categories IN(" . implode(",", $selectedCats) . ") ORDER BY parent_id, category ASC"