【问题标题】:Order by MYSQL dynamic clause. Using $_REQUEST按 MYSQL 动态子句排序。使用 $_REQUEST
【发布时间】:2010-11-03 13:48:13
【问题描述】:

我的页面上有一个 $_REQUEST 变量跳转菜单,允许人们在 post_time 之前更改 ASC 或 DESC 顺序。

问题是在不更改 URL $_REQUEST 变量的情况下将默认设置为 DESC 顺序并使其工作。

这是我所拥有的:

跳转菜单:

<form name="form" id="form">

<select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
<option value ="?post_time=DESC" 
 <?php echo ($_REQUEST['post_time']=='DESC')?"selected":"";?> >DESC</option>
<option value ="?post_time=ASC" 
<?php echo ($_REQUEST['post_time']=='ASC')?"selected":"";?> >ASC</option>  
</select>

</form>

按子句排序:

ORDER BY post_time {$_REQUEST['post_time']}

就像我说的,如果你打开页面,它会很好用,但它默认为 ASC,我尝试在顶部将变量设置为 = "DESC" 并且它可以工作,但它不会更改为 ASC。

有什么快速的想法吗?

提前致谢!!

【问题讨论】:

    标签: php mysql sql-order-by


    【解决方案1】:

    你试过了吗:

    <form name="form" id="form">
    
    <select name="post_time" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
    <option value ="DESC" 
     <?php if(($_REQUEST['post_time']=='DESC')||(!isset($_REQUEST['post_time']))){echo"'selected'";}?> >DESC</option>
    <option value ="ASC" 
    <?php if($_REQUEST['post_time']=='ASC'){echo"'selected'";}?> >ASC</option>  
    </select>
    
    </form>
    

    【讨论】:

    • 因此,如果之前选择了它,或者之前没有选择任何内容(默认),它将设置为 desc。另请注意,我已经稍微调整了表单,因此它可以正确地与 post 和 get 一起使用,以及是否应该在 select 之前/之后添加任何其他字段
    【解决方案2】:

    永远不要使用 $_REQUEST。这是一种床上练习。还有

    按 post_time 排序 {$_REQUEST['post_time']}

    也不是很好。不要忘记使用 mysql_real_escape_string 转义所有用户输入的数据。

    之前的2个建议都不错,没什么可补充的

    【讨论】:

      【解决方案3】:

      试试

      <option value ="DESC" 
       <?php if(isset($_REQUEST['post_time']) && $_REQUEST['post_time']=='DESC') { print " selected=\"selected\"";}?> >DESC</option>
      <option value ="ASC" 
       <?php if(isset($_REQUEST['post_time']) && $_REQUEST['post_time']=='ASC') { print " selected=\"selected\"";}?> >ASC</option>
      

      我也不建议你这样做:

      按 post_time 排序 {$_REQUEST['post_time']}

      试试:

      $order = 'ASC'; // Default
      
      // Check for DESC as ASC is the default
      if(isset($_REQUEST['post_time']) && $_REQUEST['post_time'] == 'DESC') {
         $order = 'DESC';
      }
      
      ORDER BY post_time {$order}
      

      我认为这个页面展示了你想要完成的一个很好的例子:

      http://www.w3schools.com/PHP/php_ajax_database.asp

      【讨论】:

      • 我使用了这个 [code] if(isset($_REQUEST['post_time']) && $_REQUEST['post_time'] == 'ASC') { $order = 'ASC'; } 其他 { $order = 'DESC'; [/code] 但是,当我将跳转菜单更改为 ASC 时,它会跳转回 DESC ???
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2011-01-12
      • 2014-11-30
      • 2015-12-25
      相关资源
      最近更新 更多