刷新后保留搜索值,以对结果进行排序。 (PHP)

时间:2015-04-22 22:43:03

标签: php sorting

我是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

1 个答案:

答案 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; ?>">

现在工作得很好。