我是PHP的新手,到目前为止一直在关注教程和笔记,并遇到了一个问题。目标是创建一个电子商务网站。一个功能必须是搜索数据库并显示我可以做的产品。然后必须能够对这些结果进行排序(按价格/名称等)。我可以对产品进行排序,但是我无法对搜索结果进行排序,因为我在重新加载时丢失了搜索的术语。任何帮助解决这个问题或改进工作都会很棒。 这是我到目前为止所拥有的......
<div id = "form">
<form action="search3.php" method="get" enctype="multipart/form-data">
Search: <input type="text" name="term" /><br />
<input type="submit" name = "search" value="Submit" />
</form>
</div>
上面的表单存储了搜索词的“术语”。
<?php
$term = pg_escape_string($_REQUEST['term']);?>
<p>You Searched for:</p><?php Print $term; ?>
<br><br>
Sort by
<form method=get style="display: inline;" name='orderby_form'>
<input type=hidden name='param1' value="<?php print $param1; ?>">
<input type=hidden name='param2' value="<?php print $param2; ?>">
<select name=orderby onChange="orderby_form.submit();">
<option value='none'>v-v-v</option>
<option value='title'>Title</option>
<option value='price_asc'>Price (Low - High)</option>
<option value='price_desc'>Price (High - Low)</option>
</select>
</form>
这提供了有关用户如何对数据进行排序的选项
<?php
$selected = array();
$orderby = $_GET['orderby'];
if(!$orderby)
{ $orderby = ''; }
if($orderby == 'price_asc')
{
$orderby_query = "order by price asc";
}
else if($orderby == 'price_desc')
{
$orderby_query = "order by price desc";
}
else if($orderby == 'title')
{
$orderby_query = "order by title";
}
else { unset($orderby); }
// If $orderby was valid set the selected sort option for the form.
if($orderby)
{
$selected[$orderby] = 'selected';
}
// Now run your SQL query with the $orderby_query variable. Ex:
$query = "SELECT * FROM products WHERE (title LIKE '%$term%' OR description LIKE '%$term%') $orderby_query";
// SQL code goes here..
$result = pg_query($query);
if(pg_num_rows($result) == 0) {
echo "No records found";
}
else{
while ($row = pg_fetch_assoc($result)) {
?>
在最后一位之后我只是将结果打印到表格
中这两张图片显示了搜索结果。 第一个打印标题/描述中所有带“低音”的产品,并且未分类。 http://oi61.tinypic.com/28clzqs.jpg
第二种是我对数据进行排序。搜索“术语”丢失,所有产品都被排序。 http://oi59.tinypic.com/34g39tu.jpg
答案 0 :(得分:0)
简单易用。感谢肖恩向我展示。 &#34;将您的$ term添加到第二个表单&#34;
哪个是
<input type=hidden name='param2' value="<?php print $param2; ?>">
//Added -VV-
<input type=hidden name='term' value="<?php print $term; ?>">
现在工作得很好。