php - 我如何在选定的php中排序
问题描述
我尝试在 dropdwon 菜单中按价格按字母顺序对产品进行排序,就像在这个问题解决方案中一样:
我有一个带有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");
谢谢您的帮助!
解决方案
您无需在 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>
推荐阅读
- angular - "ng build --prod --base-href=/App_name/ --env=prod" 抛出错误
- php - 如何从 get_page_link() 获取 HTTPS URL?
- node.js - 这个方法在 DominoAdapter 中没有实现:getCookie
- markdown - Pandoc Markdown 到 Docx,封面和目录在分开的页面中
- web-scraping - 带有 dd 和 dt 条件的 web scraper chrome 扩展
- react-native - Drawer Navigator 事件(打开、关闭)为菜单设置动画
- batch-file - 使用cmd将多个文件连接成一个文件
- c# - 进程无法访问文件,因为它被 mscorlib.dll 使用
- stata - 如何运行多元foreach循环
- php - 在 PHP 的 RootElement 中使用命名空间解析 XML