我有一个网站,显示来自MySQL数据库的旅游产品数据。上面有单选按钮供用户选择是否要按升序价格或降序价格显示结果。
这很好用,直到我试着通过把它放在一张桌子上使它看起来更整洁。我还必须更改'name'标签,以便它们都是相同的,这样用户就无法选择升序和降序选项并弄乱查询。我认为其中一个有助于弄乱它。
当用户点击相应的单选按钮,然后单击旁边的搜索按钮时,它用于按价格对项目进行排序。但现在它什么也没做。非常感谢有人可以提供帮助。可能是一个简单的错误。
HTML:
<form action="ayia-napa-holidays.php" method="get">
<table width="280" height="25" >
<tr><td width="61"><p>Sort by:</p></td>
<td width="72" height="24"><p>Lowest price</p></td>
<td width="28"><input name="priceorder" type="radio" value="priceorderasc" /></td>
<td width="75" height="24"><p>Highest price</p></td>
<td width="20"><input name="priceorder" type="radio" value="priceorderdesc" /></td>
</tr></table>
<input name="searchform1" type="submit" value="Search" class="moreinfobutton" />
</form>
PHP:
<?php
//connect
include ("db.connect.php");
$pages_query = mysql_query("SELECT COUNT('id') FROM `holidaytable` WHERE brandname = 'Cyprus'");
$count = mysql_result($pages_query, 0);
echo '<p>There are '.$count.' holidays<hr></p>';
//construct query and insert values
$sql = "SELECT * FROM holidaytable WHERE brandname = 'Cyprus'";
if (isset($_GET['priceorderasc'])) $sql .= " ORDER BY buynow ASC";
if (isset($_GET['priceorderdesc'])) $sql .= " ORDER BY buynow DESC";
$query = mysql_query($sql) or die(mysql_error());
include("dbresults.php");
?>
答案 0 :(得分:2)
这确实是一个简单的错误。
显然,在更改元素名称之前,它们的名称为priceorderasc
和priceorderdesc
。现在您将该名称更改为priceorder
,但不是PHP在构建查询时检查的变量。你需要改变的是:
if ($_GET['priceorder'] == 'priceorderasc') $sql .= " ORDER BY buynow ASC";
if ($_GET['priceorder'] == 'priceorderdesc') $sql .= " ORDER BY buynow DESC";
这样PHP就会检查新元素名称的值。
答案 1 :(得分:1)
获取名称为$_GET['priceorder']
(在GET
上使用<from>
方法表示您使用无线电。所以,您需要使用当前代码:
if(isset($_GET['priceorder']) && !empty($_GET['priceorder']))
{
if ($_GET['priceorder'] == 'priceorderasc') $sql .= " ORDER BY buynow ASC";
if ($_GET['priceorder'] == 'priceorderdesc') $sql .= " ORDER BY buynow DESC";
}
无需检查是否设置了两次,空检查只是备份和可选。