根据用户选择排序我的查询

时间:2016-03-18 04:28:31

标签: php mysql

我试图根据用户选择的价格(最低价格)和(最高价格)对产品的价格进行分类

这是我的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&amp;pd=2&amp;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

2 个答案:

答案 0 :(得分:0)

我会非常高兴地告诉你如何做到这一点。

你有一个下拉列表。您可以举办onchange活动。当用户更改值时,将触发该值。获取价值并使用ajaxdireclty 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 ?, ?';