根据用户选择排序

时间:2016-06-16 10:37:18

标签: php mysqli

我有一个搜索框,用户可以搜索他们喜欢的案例。我按日期订购了搜索结果,但我想让用户选择它,他们可以自己选择:

$orders  = array("date","price"); //field names
$key     = array_search($_GET['sort'],$orders)); // see if we have such a name
$orderby = $orders[$key]; //if not, first one will be set automatically. smart enuf :)
    $quer = "SELECT*FROM ".$db_table." WHERE  
     `case`=
    'apartment'
    AND `field`=
    'sell'
     ORDER BY 
     $orderby";
    $query=mysqli_query($connect,$quer)
    or die(mysqli_error());
    ?>

    <?php while($row = mysqli_fetch_array($query)):
    echo "price ";
    echo "address ";
    //to simplify the code I do not write the rest
    ?>
    <?php endwhile;?>

例如,按日期或价格或其他方式订购。我该怎么办?

用户可以从下拉列表中获取值:

<select>
    <option value="date">order by date</option>
    <option value="price">order by price</option>
</select> 

1 个答案:

答案 0 :(得分:2)

这里有一个例子,你可以通过允许用户按什么来选择顺序,甚至是ASC / DESC(由于设置代码值也不受MySQL注入)。如果不需要,您可以删除复选框,但不要忘记在查询中删除该部分:

if (!empty($_POST['dropdownOption']))
{
    $orderBy = ($_POST['orderValue'] == "date") ? "date" : "price";
    $orderType = (!empty($_POST['orderType'])) ? "DESC" : "ASC";
    $quer = "SELECT * FROM TABLE WHERE `case` = 'apartment' AND `field` = 'sell' ORDER BY ".$orderBy." ".$orderType."";
    $query = mysqli_query($connect, $quer) or die(mysqli_error());
}

?>

<form method="post" action="">
    <select name="orderValue">
        <option value="date">order by date</option>
        <option value="price">order by price</option>
    </select><br>
    <input type="checkbox" name="orderType" value="1">In descending order?</input><br>
    <input type="submit" name="dropdownOption" value="Apply">
</form>

请注意,我将此作为表单提供(因为我不知道您的网站是什么样的,我不知道您是否是Ajax或其他。如果您是Ajax,然后你需要进行小的改动,实际上)。在CSS的帮助下,您可以实现这一点,就好像它只是一个选择菜单。