首页 > 解决方案 > 我如何在选定的php中排序

问题描述

我尝试在 dropdwon 菜单中按价格按字母顺序对产品进行排序,就像在这个问题解决方案中一样:

PHP 排序方式下拉

我有一个带有product_id、product_price 的数据库表产品。

我在 url 中得到了 id,但没有显示任何产品。

        <select name="order_by" onchange="if(this.value != '') document.location ='sort_by.php?product_id=<?php echo $product_id; ?>&order_by=' + this.value">
           <option value="">Choose</option>
           <option value="asc" <?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'asc') echo ' selected="selected"'; ?>>Ascendent</option>
           <option value="desc" <?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'desc') echo ' selected="selected"'; ?>>Descendent</option>
        </select>

功能:

switch($_GET['order_by']) {
    case 'asc':
      $order_by = " ORDER BY product_price ASC";
      break;
    case 'desc':
      $order_by = " ORDER BY product_price DESC";
      break;
    default:
      $order_by = " ORDER BY product_price";
  }
  

   $query = query("SELECT * FROM products WHERE product_id =" . escape_string($_GET['product_id']) . ". $order_by");

谢谢您的帮助!

标签: phplistsortingselect

解决方案


您无需在 order by 中添加额外的报价。

$query = query("SELECT * FROM products WHERE product_id =" . escape_string($_GET['product_id']) . $order_by);

您也可以在选项中使用 if else 简写。

<select name="order_by" onchange="if(this.value != '') document.location ='sort_by.php?product_id=<?php echo $product_id; ?>&order_by=' + this.value">
  <option value="">Choose</option>
  <option value="asc" <?=(isset($_GET['order_by']) && $_GET['order_by'] == 'asc') : 'selected' ? ''; ?>>Ascendent</option>
  <option value="desc" <?=(isset($_GET['order_by']) && $_GET['order_by'] == 'desc') : 'selected' ? ''; ?>>Descendent</option>
</select>

推荐阅读