gpt4 book ai didi

php - 显示包含多个值的列表

转载 作者:行者123 更新时间:2023-11-30 00:07:58 25 4
gpt4 key购买 nike

我希望有人能够帮助解决我的问题。

我正在使用以下查询

$query = $db->prepare("SELECT p.pattern_for,
c_main.name AS cat_name, c_main.slug AS cat_slug,
c_sub.name AS sub_cat_name, c_sub.slug AS sub_cat_slug
FROM products AS p
INNER JOIN categories AS c_main ON c_main.name = p.c_main
INNER JOIN categories AS c_sub ON c_sub.name = p.c_sub
WHERE p.stock_level > 0 AND p.pattern_for != ''
GROUP BY p.pattern_for
ORDER BY p.pattern_for ASC");
$query->execute();

以上工作正常,但我想让创建产品的人能够向“pattern_for”列添加大量值。

所以它可能有以下值 -

Product A - 'Men, Women, Children
Product B - 'Women'
Product C - 'Toddlers, Girls'
Product D - 'Men, Boys'
Product E - 'Girls, Women, Babies'

我需要它做的是(在查询中)使用逗号分割值,然后将它们全部显示在列表中,同时对它们进行分组,这样它只显示一次,并按字母顺序排序。

例如,上面的输出将是...

Babies
Boys
Children
Girls
Men
Toddlers
Women

这可能吗?

最佳答案

对于那些将来可能遇到此问题的人,这是我最终使用的查询...

$query_pattern_for = $db->prepare("SELECT p.pattern_for,
c_main.name AS cat_name, c_main.slug AS cat_slug,
c_sub.name AS sub_cat_name, c_sub.slug AS sub_cat_slug
FROM products AS p
INNER JOIN categories AS c_main ON c_main.name = p.c_main
INNER JOIN categories AS c_sub ON c_sub.name = p.c_sub
WHERE c_main.type = 0 AND c_sub.type = 0 AND p.stock_level = 0 AND p.reorder = 0 AND p.pattern_for != '' AND p.status = 1
OR c_main.type = 0 AND c_sub.type = 0 AND p.stock_level > 0 AND p.pattern_for != '' AND p.status = 1
GROUP BY pattern_for
ORDER BY p.pattern_for ASC");
$query_pattern_for->execute();
$count_pattern_for = $query_pattern_for->rowCount();

然后是 php...

while ($row = $query_pattern_for->fetch(PDO::FETCH_ASSOC)) {

$get_pattern_for .= $row['pattern_for'] . ',';

}

$get_pattern_for = str_replace(', ', ',', $get_pattern_for);

$get_pattern_for = explode(",", $get_pattern_for);

$get_pattern_for = array_unique($get_pattern_for);
$get_pattern_for = array_filter($get_pattern_for);
sort($get_pattern_for);

foreach($get_pattern_for as $pattern_for) {

$pattern_for_slug = str_replace(' ','',$pattern_for);
$pattern_for_slug = str_replace('/','-',$pattern_for_slug);
$pattern_for_slug = preg_replace('/[^\w-]/', '', $pattern_for_slug);
$pattern_for_slug = strtolower($pattern_for_slug);

echo '<a href="'.$url.'&patterns-for='.$pattern_for_slug.'"><li>'; if ($get_patterns_for == $pattern_for_slug) { echo '<div class="tick-box-selected">&#10004;</div>'.$pattern_for.''; } else { echo '<div class="tick-box"></div>'.$pattern_for.''; } echo '</li></a>';

}

我希望有一天这可以帮助别人。

谢谢丹

关于php - 显示包含多个值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24356733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com