我试图根据用户选择的价格(最低价格)和(最高价格)对产品的价格进行分类
这是我的HTML代码
<li class="item2"><a href="#">Price <i></i></a>
<ul style="display: none;">
<li>
<a href="#"><label for="lowest">
<input type="checkbox" name="lowest" id="lowest" value="lowest">
Lowest</label>
</a>
</li>
<li>
<a href="#"><label for="new">
<input type="checkbox" name="new" id="new" value="new"> Highest</label>
</a>
</li>
</ul>
</li>
这是我的PHP代码
//filtration conditions
if (isset($_GET['fp'])) {
$fp = $_GET['fp'];
if ($fp == "l") {
$fpw = 'ORDER BY pPrice DESC';
} elseif ($fp == "h") {
$fpw = 'ORDER BY pPrice ASC';
}
} else {
$fp = '';
}
$getData = $db->prepare('SELECT id, pName, pImage, pPrice, alt FROM products
WHERE cat=? AND subCat=? ORDER BY id DESC LIMIT ?,?');
$getData->bind_param('iiss', $cat, $subCat, $startFrom, $perPage);
$getData->execute();
$getData->store_result();
$getData->bind_result($id, $pName, $pImage, $pPrice, $alt);
while ($getData->fetch()) {
?>
<div class="grid_1_of_4 images_1_of_4">
<div class="quickViewContainer">
<img src="../images/productsMainImages/<?php print $pImage ?>" alt="<?php print $alt ?>">
<span><a href="?p=3&pd=2&proId=<?php print $id ?>"><i class="fa fa-eye"></i> Quick View</a></span>
</div>
<h2><?php print $pName ?> </h2>
<p><span class="price"><?php print $pPrice ?> LE.</span></p>
<div class="button">
<span class="pull-right wishlist2"><a href="#" title="Add to Wishlist"><i
class="fa fa-heart hvr-pulse"></i></a></span>
</div>
</div>
<?php
}
?>
如何动态更改ORDER BY
答案 0 :(得分:0)
我会非常高兴地告诉你如何做到这一点。
你有一个下拉列表。您可以举办onchange
活动。当用户更改值时,将触发该值。获取价值并使用ajax
或direclty hit the url with query strings
拨打电话。
如果您使用ajax
,请参阅ajax。您可以通过ajax POST
传递所选值。获取php端的值并将其连接到查询。
如果您使用query string way
,请按以下步骤添加。
window.location.href=`process.php?val=userSelectedValue`
在proces.php
页面中,获取值并将其与查询连接。
连接只需使用如下
$query='SELECT id, pName, pImage, pPrice, alt FROM products
WHERE cat=? AND subCat=? ORDER BY'. $userSelectedVal .' DESC LIMIT ?,?'
答案 1 :(得分:0)
首先将选项checkbox
更改为radio
并将列名设置为服务器上的无线电获取无线电值中的值,然后使用并传入查询以对数据进行排序。
为了防止sql注入在php中创建一个列数组并使用这样的数组验证提交的无线电值:
/* columns can be used to sort */
$columns = array('col1', 'col2');
$sortBy = $_GET['sortBy'];
if(!in_array($sortBy, $columns)){
/* invalid column name provided set to default */
$sortBy = 'defaultColumn';
}
$query = 'SELECT id, pName, pImage, pPrice, alt FROM products WHERE cat = ? AND subCat = ? ORDER BY '. $sortBy . ' DESC LIMIT ?, ?';