0

我一直在尝试对我的 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 ?>

感谢您的任何帮助

4

1 回答 1

0

<option>的 s 有错误的价值观。您不需要变量的名称,因为<select name="XXX". 值应该是

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

其他两个类似。

您也可以通过检查内部的值来自己调试它$_GET

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

于 2012-06-27T22:15:00.930 回答