Home >Backend Development >PHP Tutorial >PHP搜索页面如何实现分类检索?

PHP搜索页面如何实现分类检索?

WBOY
WBOYOriginal
2016-06-23 14:13:441766browse

本帖最后由 u010572351 于 2013-06-22 10:09:22 编辑

是这样的,一个商城或者电影站,我现在需要进行各项检索,如下图

单独的,按类型检索,会
单独的,按年代检索,会
单独的,按产地检索,会

但是,如果我选了类型,然后我再选产地,再选年代,或者这三者的各种组合操作,相当复杂,不知道怎么处理了,

请高人指点,主要是怎么保留前面用户点击筛选的参数?

然后是产地,年代,类型的链接还真不好写,因为不能写死成单独的,
我现在就是年代就带年代的参数,类型就只有自己类型的参数,产地就是产地的参数,如:
<a href="/search.php?area="内地">内地</a><a href="/search.php?type="动作">动作</a><a href="/search.php?year="2011">2011</a>

一点就只有一个条件,不能并存,也不能实现多条件筛选。
这个应该怎么弄啊?

回复讨论(解决方案)

$area=$_GET['area'];//get值需要自己处理一下
$type=$_GET['type'];
$year=$_GET['year'];
$sql="select * from shop where 1";
$sql.=isset($area)?" and area='$area'":'';
$sql.=isset($type)?" and type='$type'":'';
$sql.=isset($year)?" and area='$year'":'';
$result=mysql_query($sql);
while......
希望我的回答对你有帮助。

条件要用js加载,不能直接写链接呀。

条件要用js加载,不能直接写链接呀。

上面的懂了,谢谢,但是下面说的条件写成js怎么理的啊,还不能写死我知道,但是怎么写哦。。。。。。和js有关?
能写出来看看吗

你这样做做看

echo join(' - ', $_GET), '<br>';$dict = array(  'area' => array('内地', '港台'),  'type' => array('动作', '爱情'),  'year' => array('2001', '2013'),);foreach($dict as $key=>$item) {  $param = $_GET;  foreach($item as $v) {    $param[$key] = $v;    $t = http_build_query($param);    echo "<a href='/search.php?$t'>$v</a> ";  }  echo '<br>';}

你这样做做看

echo join(' - ', $_GET), '<br>';$dict = array(  'area' => array('内地', '港台'),  'type' => array('动作', '爱情'),  'year' => array('2001', '2013'),);foreach($dict as $key=>$item) {  $param = $_GET;  foreach($item as $v) {    $param[$key] = $v;    $t = http_build_query($param);    echo "<a href='/search.php?$t'>$v</a> ";  }  echo '<br>';}


我现在不明白的地方是如何写链接呢?因为老师说的这些分类词比较固定,所以就定死在模板文件中了,现在问题是针对这些分类如何写出合理的链接。

你首先运行一下我给的代码,体验一下动态生成url的做法

你首先运行一下我给的代码,体验一下动态生成url的做法
运行了,,然后怎么做链接啊,上面的哥们说js,如何做呢

你首先运行一下我给的代码,体验一下动态生成url的做法

echo join(' - ', $_GET), '
'; 这句什么意思啊,没见过,好像也没什么用处啊,去了一样可以用

你也可以利用 session 处理

<?phpsession_start();if(! isset($_SESSION['search']))   $_SESSION['search'] = array();$_SESSION['search'] = array_merge($_SESSION['search'], $_GET);echo join(' - ', $_SESSION['search']), '<br>';?><a href="/search1.php?area=内地">内地</a><a href="/search1.php?type=动作">动作</a><a href="/search1.php?year=2011">2011</a>

你用的是 啊标记跳转,无需 js

echo join(' - ', $_GET), '
';
是让你直观地观察到点选的变化

你也可以利用 session 处理

<?phpsession_start();if(! isset($_SESSION['search']))   $_SESSION['search'] = array();$_SESSION['search'] = array_merge($_SESSION['search'], $_GET);echo join(' - ', $_SESSION['search']), '<br>';?><a href="/search1.php?area=内地">内地</a><a href="/search1.php?type=动作">动作</a><a href="/search1.php?year=2011">2011</a>


这个是能实现 多筛选条件并存的效果吗?

如内地的电影,时间是2011年,动作片

你用的是 啊标记跳转,无需 js

echo join(' - ', $_GET), '
';
是让你直观地观察到点选的变化

恕我愚昧,你用SESSION实现了多条件筛选了吗? 我没看到啊,我只看到产生了几个链接,还没看出来有没有实现多次点击不同的条件,实现多条件筛选。。。。。

你的程序文件保存为 search1.php 了吗?

你的程序文件保存为 search1.php 了吗?

版主大人,我一边在做项目,一边在学习哈,呵呵,

我现在就是在迷茫上面的SESSION有没有实现,如何实现 多条件筛选的。。。现在一头雾水

你的程序文件保存为 search1.php 了吗?
懂了,谢谢哥。。。。。我研究下。。感谢!!!!!!!!!!!

再给个条件宽松点的(随便保存成什么文件名,当然后缀要是php)

session_start();if(! isset($_SESSION['search']) || ! $_GET)   $_SESSION['search'] = array();$_SESSION['search'] = array_merge($_SESSION['search'], $_GET);echo join(' - ', $_SESSION['search']), '<br>';?><a href="?area=内地">内地</a><a href="?area=港台">港台</a><br><a href="?type=动作">动作</a><a href="?type=爱情">爱情</a><br><a href="?year=2011">2011</a><a href="?year=2013">2013</a>

你点击链接就能看到效果

再给个条件宽松点的(随便保存成什么文件名,当然后缀要是php)

session_start();if(! isset($_SESSION['search']) || ! $_GET)   $_SESSION['search'] = array();$_SESSION['search'] = array_merge($_SESSION['search'], $_GET);echo join(' - ', $_SESSION['search']), '<br>';?><a href="?area=内地">内地</a><a href="?area=港台">港台</a><br><a href="?type=动作">动作</a><a href="?type=爱情">爱情</a><br><a href="?year=2011">2011</a><a href="?year=2013">2013</a>

你点击链接就能看到效果

感谢!解决了我所有的困惑!
感谢,结贴。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn