2010-11-22 121 views
0

我有一个关于属性搜索的搜索表单,它有一些搜索会给出结果的元素。如地区,地点,城市,没有卧室等。 一旦表单被提交,我可以通过$ _post获取所有表单元素的值。问题是,当我实现分页时,如何获取下一页上的元素值?我应该使用某种全局变量/数组或会话吗? 你有什么建议?php mysql搜索查询

+0

完全取决于您如何存储数据。它是否塞入一个数组?在数据库中? – cdhowie 2010-11-22 08:04:43

回答

1

为了让你的下一个页面上$ _ POST值来传递$ _ POST在分页链接值。

举例来说,您有一个名为搜索的输入字段,您正在执行搜索。 所以你必须在每个分页链接上传递$ _POST ['search']。

<a href='search.php?page=2&search="'. $_POST['search'].'"'>Page 2</a> 

现在在第2页,你可以得到$ _GET [ '搜索']和您的查询

使用它================== ============================================

您可以使用会话也

当您提交后,您的$ _Post值启动会话并将其保存在会话变量中。在这种情况下,你没有传递价值分页链接

session_start(); 
$_SESSION['search'] = $_POST['search']; 

现在你可以直接使用$ _SESSION在查询[“搜索”]值。

但是对于每次新的搜索,这个会话变量都是空的,所以如果搜索字段没有任何搜索值,那么它不会在数据库中搜索其旧值。

+0

我该怎么做才能显示最后一页。我的意思是,如果我的搜索结果在7页中,我将如何显示page1 page2 .... page7 – booota 2010-11-22 09:21:29

+0

首先用它的搜索条件计算记录总数。然后用每页记录数除。所以你会看到总页数。比如记录总数= 30;每页记录= 10;因此,页面将为3.现在使用for循环显示链接(i = 1; i <= 3; i ++){Page $i } – 2010-11-22 09:30:15

0

我建议你在你的mysql-query中使用LIMIT。如第一页,如果你想10分的结果:

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 0,10 

这将限制结果,以10 对于2页你贤者:

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 11,20 

当然你要干什么将限制设置为来自PHP的变量。 希望这有助于!

0

使用2搜索查询,第一次为
select count(1) from _table_ WHERE _where_
和第二个为
select _fields_ from table where _where_ LIMIT _limit_
其中_limit_$pagenum*$itemsPerPage, ($pagenum+1)*$itemsPerPage