You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PHP+MySQL商品筛选系统添加多维度排序下拉框功能

第一步:修改index.php文件

首先调整表单提交方式,新增排序选择框:

<div class="filters row">
    <div class="col-md-12">
        <!-- 把method从post改为get,和product.php的参数接收逻辑保持一致,action按你实际入口调整 -->
        <form id="filter-form" class="form" action='index.php' method="get">
            <span>Filter Products</span>
            
            <select name="cats" class="form-control form-control-sm">
                <option value="">Filter by Category</option>
                <option value="eat">Eat</option>
                <option value="drink">Drink</option>
                <option value="Pants">Pants</option>
                <option value="Shirts">Shirts</option>
            </select>
            <input type="text" name="search" placeholder="Search" class="form-control form-control-sm" title="Search by product name or SKU" />
            
            <span> Show </span>
            <select name="per-page" class="form-control form-control-sm">
                <option value="3">3</option>
                <option value="6">6</option>
                <option value="9">9</option>
                <option value="12">12</option>
            </select>

            <!-- 新增排序选择框 -->
            <span> Sort by </span>
            <select name="sort" class="form-control form-control-sm">
                <option value="">Default</option>
                <option value="price_low">Price: Low to High</option>
                <option value="price_high">Price: High to Low</option>
                <option value="name_asc">Name: A to Z</option>
                <option value="latest">Latest Released</option>
            </select>
            
            <input type="submit" value="Filter" class="btn btn-sm btn-secondary"/>
        </form>
    </div>
</div>

<div id="all-products" class="row all-products">
    <?php require('resources/products.php'); ?>

第二步:修改product.php文件

在产品过滤逻辑完成后、分页处理之前,新增排序逻辑:
找到product.php中这段代码的位置:

$products = $filtered_products;
}

// 这里插入新增的排序逻辑

$paged_products = array_slice($products, $offset, $limit);

插入的排序逻辑代码如下:

// 排序逻辑
$sort = isset($_GET['sort']) ? $_GET['sort'] : '';
if (!empty($sort)) {
    usort($products, function($a, $b) use ($sort) {
        switch ($sort) {
            case 'price_low':
                return $a['price'] - $b['price'];
            case 'price_high':
                return $b['price'] - $a['price'];
            case 'name_asc':
                return strcmp($a['title'], $b['title']);
            case 'latest':
                // 假设用自增id判断最新,id越大发布越晚,如果表中有create_time字段可以换成对应的字段
                return $b['id'] - $a['id'];
            default:
                return 0;
        }
    });
}

内容的提问来源于stack exchange,提问作者school stuff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:15:03