根据所选排序动态更改结果

Dynamically change results based on sort selected

本文关键字:结果 动态 排序      更新时间:2023-09-26

我一直在尝试对我的 php 结果进行动态排序,但由于某种原因,它什么也没做,如果我尝试更改下拉列表中的排序字段,什么也没发生,我无法弄清楚。

这是 php 代码

        $sortorder = "ASC";
$sortfield = "addon_name";
if(isset($_GET["sortorder"])) {
$sortorder = $_GET["sortorder"];
}
if(isset($_GET["sortfield"])) {
$sortfield= $_GET["sortfield"];
}
        $small_statement = "`addons` WHERE addon_size='small' ORDER BY $sortfield $sortorder";

这是 html 代码

   <select name="sortorder" onChange="MM_jumpMenu('parent',this,0)">
<option value="?sortorder=ASC">Ascending</option>
<option value="?sortorder=DSC">Descending</option>
</select>
<select name="sortfield" onChange="MM_jumpMenu('parent',this,0)">
<option value="?sortfield=addon_name">Name</option>
<option value="?sortfield=addon_rank">Rank</option>
</select></div><!---end browse_header--->
    <div id="small" class="tab_content">
    <?php 
          $browse_small_query = mysql_query("SELECT * FROM {$small_statement} LIMIT {$startpoint_small} , {$limit}");
          while($row_small = mysql_fetch_assoc($browse_small_query)) : ?>
            <?php extract($row_small);?>
                <div class="addon_wrapper" onclick="location.href='addon_detail.php?eid=<?php print "$estate_id";?> &aid=<?php print "$addon_id";?>';"><div class="addon_header"><?php print "$addon_name";?><?php print "$addon_id";?></div><!---end addon_wrapper---><div class="addon_browse_image"></div><!---end addon_browse_image---></div><!---end addon_wrapper--->
        <?php endwhile ?>

感谢任何和所有的帮助

您的<option>具有错误的值。您不需要变量的名称,因为这由 <select name="XXX" 暗示。值应为

<option value="ASC">Ascending</option>
<option value="DESC">Descending</option>

其他两个类似。

您也可以通过检查使其位于 $_GET 中的值来自己调试它。

最后,此代码容易受到 SQL 注入的影响,因为任何人都可以提交具有他们想要的两个参数值的请求。您应该使用白名单或使用标准防御方法之一来保护自己。