Maison >développement back-end >tutoriel php >PHP搜索页面如何实现分类检索?

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

WBOY
WBOYoriginal
2016-06-23 14:13:441760parcourir

本帖最后由 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>

你点击链接就能看到效果

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn