php 多条件搜索的连接怎么写

时间:2022-10-24 18:24:38
我现在在开发一个商城
导航的条件是
价格:全部价格  10~20  30~40  40~50 
类型:全部类型  NOKIA IPHONE 摩托罗拉 三星
现在复合搜索的sql语句我是会写的
但是在选择条件的时候,我的超连接是这样写的:

价格:
全部价格  
<A href="list.php?jiage=1">10~20</a>  
<A href="list.php?jiage=2">30~40 </a>  
<A href="list.php?jiage=3">40~50 </a>  
类型:
全部类型   
<A href="list.php?leixing=1">NOKIA </a>
<A href="list.php?leixing=2">IPHONE </a>
<A href="list.php?leixing=3">摩托罗拉 </a>
<A href="list.php?leixing=4">三星</a>
现在我想要的结果是 在list.php的页面
如果选择了价格 URL应该是 list.php?jiage=1  
如果同时选中价格和类型 URL应该是 list.php?jiage=1&leixing=2
但是如果在list.php?jiage=1&leixing=2这个页面,重新选择类型而价格不改变选择,应该如何完成?也就是说要记录住jiage=1  改变的只是leixing这个里面的参数
请高手解答

17 个解决方案

#1


1、可以用js动态生成
如果<A href="list.php?jiage=1">10~20</a>
这后面的
<A href="list.php?jiage=1&leixing=1">NOKIA </a>.....

如果是<A href="list.php?jiage=2">30~40 </a>
后面的就可以  <A href="list.php?jiage=2&leixing=1">NOKIA </a>

2、你去看看迅雷,选择上面后价格后类型的链接都不同的

#2


也就是说你可以把 类型 动态生成链接(因为这个页面一般为php页面,所以很好动态生成链接地址的)

#3


引用 1 楼 yunprince 的回复:
1、可以用js动态生成
如果<A href="list.php?jiage=1">10~20</a>
这后面的
<A href="list.php?jiage=1&amp;leixing=1">NOKIA </a>.....

如果是<A href="list.php?jiage=2">30~40 </a>
后面的就可以 <A href="list.php?jiage=2&amp;le……

js如何动态生成,能详细点吗?我是新手 呵呵

#4


url不能固定。要取当前$_GET判断生成。
比如点了<A href="list.php?jiage=1">10~20</a> 
那所有的相关类型的url请求一个函数判断加上$_GET['jiage']参数。
无就补上。有就替换。

#5


引用 4 楼 ci1699 的回复:
url不能固定。要取当前$_GET判断生成。
比如点了<A href="list.php?jiage=1">10~20</a> 
那所有的相关类型的url请求一个函数判断加上$_GET['jiage']参数。
无就补上。有就替换。

能简单写个代码演示下吗

#6


我也有这个需求

你可以看看这两个连接

http://topic.csdn.net/u/20111116/14/87a50602-4393-4b89-80a6-22cff5c6c4d8.html
http://topic.csdn.net/u/20111109/21/5fa4161d-bbbf-482f-bf1e-34c362fc79d7.html

只可惜,我的问题还是没有解决,

我是这样做的




$lx=array(
"经典"=>"plot=23",
"爱情"=>"plot=24",
"科幻"=>"plot=25",
"恐怖"=>"plot=26",
"喜剧"=>"plot=27",
"动作"=>"plot=28",
"剧情"=>"plot=29",
"惊悚"=>"plot=30",
"战争"=>"plot=31",
"武侠"=>"plot=32",
"伦理"=>"plot=33",
"预告片"=>"plot=34"
);

$dq=array(
"大陆"=>"distric=大陆",
"*"=>"distric=*",
"香港"=>"distric=香港",
"日本"=>"distric=日本",
"美国"=>"distric=美国",
"韩国"=>"distric=韩国",
"欧洲"=>"distric=欧洲",
"印度"=>"distric=印度"
);

$yy=array(
"成龙"=>"actor=成龙",
"汤唯葛"=>"actor=汤唯葛",
"葛优"=>"actor=葛优",
"优舒淇"=>"actor=优舒淇",
"范冰冰"=>"actor=范冰冰",
"周润发"=>"actor=周润发",
"周星驰"=>"actor=周星驰",
"甄子丹"=>"actor=甄子丹",
"范冰冰"=>"actor=范冰冰",
"周润发"=>"actor=周润发",
"甄子丹"=>"actor=甄子丹",
"古天乐"=>"actor=古天乐",
"李连杰"=>"actor=李连杰",
"刘德华"=>"actor=刘德华",
"吴彦祖"=>"actor=吴彦祖",
"梁朝伟"=>"actor=梁朝伟"
);

$dy=array(
"姜文"=>"director=姜文",
"张艺谋"=>"director=张艺谋",
"冯小刚"=>"director=冯小刚",
"陈凯歌"=>"director=陈凯歌",
"王家卫"=>"director=王家卫",
"陈可辛"=>"director=陈可辛",
"刘伟强"=>"director=刘伟强"
);

$date=array(
"2011"=>"screentime=2011",
"2010"=>"screentime=2010",
"2009"=>"screentime=2009",
"2008"=>"screentime=2008",
"2007"=>"screentime=2007"
);


if(!empty($_GET))
{
    foreach ($_GET as $key => $value) 
    {
        if(is_array(explode('&',$url)))
        {
            
         $url .= "$key=$value&";            
        }else
        {
            $url .= "&$key=$value";   
        }

    }
}


<div class="types first" id="movieType">
<h4>类型</h4>
<ul class="clearfix">
            <li class=""><a href="#" id="plot_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($lx as  $keys=>$values)
                            {
                                
                               echo "<li><a id=plot_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                           ?>

</ul>
</div>

                    <div class="region" id="movieRegion">
<h4>国家/地区</h4>
<ul class="clearfix">
<li class=""><a href="#" id="district_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($dq as  $keys=>$values)
                            {
                                
                               echo "<li><a id=district_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>
<div class="players" id="moviePlayers">
<h4>演员</h4>
<ul class="clearfix">
<li class=""><a href="#" id="actor_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($yy as  $keys=>$values)
                            {
                                
                               echo "<li><a id=actor_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>
<div class="directors" id="movieDirectors">
<h4>导演</h4>
<ul class="clearfix">
<li class=""><a href="#" id="director_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($dy as  $keys=>$values)
                            {
                                
                               echo "<li><a id=director_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>
<div class="years" id="movieYears">
<h4>年代</h4>
<ul class="clearfix">
                         <li class=""><a href="#" id="screentime_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($date as  $keys=>$values)
                            {
                                
                               echo "<li><a id=screentime_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>

#7


有没有高手可以出来帮助下啊

#8



<?php
$prefix = $_GET['jiage'] ? $_GET['jiage'] : 0 ;
$prefixStr = 'demo.php?jiage='.$prefix.'&';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<p>
  价格:<a href="?jiage=0">全部价格</a> <a href="?jiage=1">10~20</a> <a href="?jiage=2">30~40</a> <a href="?jiage=3">40~50</a>
</p>
  类型:<a href="<?=$prefixStr?>leixing=0">全部类型</a> <a href="<?=$prefixStr?>leixing=1">NOKIA</a> <a href="<?=$prefixStr?>leixing=2">IPHONE</a> <a href="<?=$prefixStr?>leixing=3">摩托罗拉</a> <a href="<?=$prefixStr?>leixing=4">三星</a>
<body>
</body>
</html>

就是拼出来而已......

#9


当用户选择了某个类型, 那么这些设置类型的链接也就不应该再存在了,该出现一个舍弃操作 <a href="list.php?jiage=1">放弃所选择的 类型 </a> 。 像淘宝京东都是类似这么干的

function getSELECT( $arr) // 遍历数组并拼成字符串。
{
     $selectStr = '';
    foreach( $arr as $key=>$value )
    {
        $selectStr .= ( $key .'='. $value .'&' );
    }
     return $selectStr ;
}
function delect( $key ) // 剔除某个选择
{
    return array_diff_key( $_GET, $_GET[$key]);
}

// 如果 leixing 已经被用户选择,那么开放 剔除所选择的类型 操作 。
if( isset( $_GET['leixing'])){
    $delectStr = getSELECT( delect('leixing'));
    echo "<a href=\"list.php?".  ."\">";
    }
else{
// 如果没有,原样输出
    $select = getSELECT( $_GET );
    echo <<<leixing
   <A href="list.php?{$select}&leixing=4">NOKIA </a>
   <A href="list.php?{$select}&leixing=4">IPHONE </a>
   <A href="list.php?{$select}&leixing=4">摩托罗拉 </a>
   <A href="list.php?{$select}&leixing=4">三星</a>
    }

我的算法太挫,大概这样吧

#10


js 控制.这种后期的页面修改都应该用js修改控制

#11


引用 8 楼 yunprince 的回复:
PHP code

<?php
$prefix = $_GET['jiage'] ? $_GET['jiage'] : 0 ;
$prefixStr = 'demo.php?jiage='.$prefix.'&amp;';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o……

点了类型 url为什么是%3C?=$prefixStr?>leixing=3

#12



<?php
 
function url($type, $_val)

$old = $_GET[$type];
$_GET[$type] = $_val;
foreach ($_GET as $key=>$val)
{
$arr[] = $key . '=' . $val;
$_GET[$type] = $old;
}
Return '?' . implode('&', $arr);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<p>
  价格:<a href="<?php echo url('jiage', 0);?>">全部价格</a> <a href="<?php echo url('jiage', 1);?>">10~20</a> <a href="<?php echo url('jiage', 2);?>">30~40</a> <a href="<?php echo url('jiage', 3);?>">40~50</a>
</p>
  类型:<a href="<?php echo url('leixing', 0);?>">全部类型</a> <a href="<?php echo url('leixing', 1);?>">NOKIA</a> <a href="<?php echo url('leixing', 2);?>">IPHONE</a>
<p>
  类型2:<a href="<?php echo url('leixing2', 0);?>">全部类型</a> <a href="<?php echo url('leixing2', 1);?>">NOKIA</a> <a href="<?php echo url('leixing2', 2);?>">IPHONE</a>
</p>
<body>
</body>
</html>




试试吧。有问题再说 = =

#13


引用 12 楼 ci1699 的回复:
PHP code

<?php
 
function url($type, $_val)

    $old = $_GET[$type];
    $_GET[$type] = $_val;
    foreach ($_GET as $key=>$val)
    {
        $arr[] = $key . '=' . $val;
        $_GET[……

问题已解决 万分感谢

#14


我试了,可以满足要求,我还想多问一下。
为什么要这样一下呢   $_GET[$type] = $old;

#15


我有一个问题,我的<a>标签里还有一个id参数
我像这样写可以吗
价格:<a href="id={list_id}<?php echo url('jiage', 0);?>">全部价格</a>

#16


引用 14 楼 xiachao2008 的回复:
我试了,可以满足要求,我还想多问一下。
为什么要这样一下呢   $_GET[$type] = $old;


要用回原先的值。经过上一轮已改变了$_GET了。要换回来。



加在后面吧。前面有?输出了
价格:<a href="<?php echo url('jiage', 0);?>&id={list_id}">全部价格</a>

#17


好东西,收藏了

#1


1、可以用js动态生成
如果<A href="list.php?jiage=1">10~20</a>
这后面的
<A href="list.php?jiage=1&leixing=1">NOKIA </a>.....

如果是<A href="list.php?jiage=2">30~40 </a>
后面的就可以  <A href="list.php?jiage=2&leixing=1">NOKIA </a>

2、你去看看迅雷,选择上面后价格后类型的链接都不同的

#2


也就是说你可以把 类型 动态生成链接(因为这个页面一般为php页面,所以很好动态生成链接地址的)

#3


引用 1 楼 yunprince 的回复:
1、可以用js动态生成
如果<A href="list.php?jiage=1">10~20</a>
这后面的
<A href="list.php?jiage=1&amp;leixing=1">NOKIA </a>.....

如果是<A href="list.php?jiage=2">30~40 </a>
后面的就可以 <A href="list.php?jiage=2&amp;le……

js如何动态生成,能详细点吗?我是新手 呵呵

#4


url不能固定。要取当前$_GET判断生成。
比如点了<A href="list.php?jiage=1">10~20</a> 
那所有的相关类型的url请求一个函数判断加上$_GET['jiage']参数。
无就补上。有就替换。

#5


引用 4 楼 ci1699 的回复:
url不能固定。要取当前$_GET判断生成。
比如点了<A href="list.php?jiage=1">10~20</a> 
那所有的相关类型的url请求一个函数判断加上$_GET['jiage']参数。
无就补上。有就替换。

能简单写个代码演示下吗

#6


我也有这个需求

你可以看看这两个连接

http://topic.csdn.net/u/20111116/14/87a50602-4393-4b89-80a6-22cff5c6c4d8.html
http://topic.csdn.net/u/20111109/21/5fa4161d-bbbf-482f-bf1e-34c362fc79d7.html

只可惜,我的问题还是没有解决,

我是这样做的




$lx=array(
"经典"=>"plot=23",
"爱情"=>"plot=24",
"科幻"=>"plot=25",
"恐怖"=>"plot=26",
"喜剧"=>"plot=27",
"动作"=>"plot=28",
"剧情"=>"plot=29",
"惊悚"=>"plot=30",
"战争"=>"plot=31",
"武侠"=>"plot=32",
"伦理"=>"plot=33",
"预告片"=>"plot=34"
);

$dq=array(
"大陆"=>"distric=大陆",
"*"=>"distric=*",
"香港"=>"distric=香港",
"日本"=>"distric=日本",
"美国"=>"distric=美国",
"韩国"=>"distric=韩国",
"欧洲"=>"distric=欧洲",
"印度"=>"distric=印度"
);

$yy=array(
"成龙"=>"actor=成龙",
"汤唯葛"=>"actor=汤唯葛",
"葛优"=>"actor=葛优",
"优舒淇"=>"actor=优舒淇",
"范冰冰"=>"actor=范冰冰",
"周润发"=>"actor=周润发",
"周星驰"=>"actor=周星驰",
"甄子丹"=>"actor=甄子丹",
"范冰冰"=>"actor=范冰冰",
"周润发"=>"actor=周润发",
"甄子丹"=>"actor=甄子丹",
"古天乐"=>"actor=古天乐",
"李连杰"=>"actor=李连杰",
"刘德华"=>"actor=刘德华",
"吴彦祖"=>"actor=吴彦祖",
"梁朝伟"=>"actor=梁朝伟"
);

$dy=array(
"姜文"=>"director=姜文",
"张艺谋"=>"director=张艺谋",
"冯小刚"=>"director=冯小刚",
"陈凯歌"=>"director=陈凯歌",
"王家卫"=>"director=王家卫",
"陈可辛"=>"director=陈可辛",
"刘伟强"=>"director=刘伟强"
);

$date=array(
"2011"=>"screentime=2011",
"2010"=>"screentime=2010",
"2009"=>"screentime=2009",
"2008"=>"screentime=2008",
"2007"=>"screentime=2007"
);


if(!empty($_GET))
{
    foreach ($_GET as $key => $value) 
    {
        if(is_array(explode('&',$url)))
        {
            
         $url .= "$key=$value&";            
        }else
        {
            $url .= "&$key=$value";   
        }

    }
}


<div class="types first" id="movieType">
<h4>类型</h4>
<ul class="clearfix">
            <li class=""><a href="#" id="plot_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($lx as  $keys=>$values)
                            {
                                
                               echo "<li><a id=plot_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                           ?>

</ul>
</div>

                    <div class="region" id="movieRegion">
<h4>国家/地区</h4>
<ul class="clearfix">
<li class=""><a href="#" id="district_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($dq as  $keys=>$values)
                            {
                                
                               echo "<li><a id=district_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>
<div class="players" id="moviePlayers">
<h4>演员</h4>
<ul class="clearfix">
<li class=""><a href="#" id="actor_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($yy as  $keys=>$values)
                            {
                                
                               echo "<li><a id=actor_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>
<div class="directors" id="movieDirectors">
<h4>导演</h4>
<ul class="clearfix">
<li class=""><a href="#" id="director_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($dy as  $keys=>$values)
                            {
                                
                               echo "<li><a id=director_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>
<div class="years" id="movieYears">
<h4>年代</h4>
<ul class="clearfix">
                         <li class=""><a href="#" id="screentime_all_all" class="cur_tag">全部</a></li>
                            <?php foreach($date as  $keys=>$values)
                            {
                                
                               echo "<li><a id=screentime_".$keys." href=?".$url.$values.">".$keys."</a></li>"; 
                            }
                            ?>
</ul>
</div>

#7


有没有高手可以出来帮助下啊

#8



<?php
$prefix = $_GET['jiage'] ? $_GET['jiage'] : 0 ;
$prefixStr = 'demo.php?jiage='.$prefix.'&';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<p>
  价格:<a href="?jiage=0">全部价格</a> <a href="?jiage=1">10~20</a> <a href="?jiage=2">30~40</a> <a href="?jiage=3">40~50</a>
</p>
  类型:<a href="<?=$prefixStr?>leixing=0">全部类型</a> <a href="<?=$prefixStr?>leixing=1">NOKIA</a> <a href="<?=$prefixStr?>leixing=2">IPHONE</a> <a href="<?=$prefixStr?>leixing=3">摩托罗拉</a> <a href="<?=$prefixStr?>leixing=4">三星</a>
<body>
</body>
</html>

就是拼出来而已......

#9


当用户选择了某个类型, 那么这些设置类型的链接也就不应该再存在了,该出现一个舍弃操作 <a href="list.php?jiage=1">放弃所选择的 类型 </a> 。 像淘宝京东都是类似这么干的

function getSELECT( $arr) // 遍历数组并拼成字符串。
{
     $selectStr = '';
    foreach( $arr as $key=>$value )
    {
        $selectStr .= ( $key .'='. $value .'&' );
    }
     return $selectStr ;
}
function delect( $key ) // 剔除某个选择
{
    return array_diff_key( $_GET, $_GET[$key]);
}

// 如果 leixing 已经被用户选择,那么开放 剔除所选择的类型 操作 。
if( isset( $_GET['leixing'])){
    $delectStr = getSELECT( delect('leixing'));
    echo "<a href=\"list.php?".  ."\">";
    }
else{
// 如果没有,原样输出
    $select = getSELECT( $_GET );
    echo <<<leixing
   <A href="list.php?{$select}&leixing=4">NOKIA </a>
   <A href="list.php?{$select}&leixing=4">IPHONE </a>
   <A href="list.php?{$select}&leixing=4">摩托罗拉 </a>
   <A href="list.php?{$select}&leixing=4">三星</a>
    }

我的算法太挫,大概这样吧

#10


js 控制.这种后期的页面修改都应该用js修改控制

#11


引用 8 楼 yunprince 的回复:
PHP code

<?php
$prefix = $_GET['jiage'] ? $_GET['jiage'] : 0 ;
$prefixStr = 'demo.php?jiage='.$prefix.'&amp;';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o……

点了类型 url为什么是%3C?=$prefixStr?>leixing=3

#12



<?php
 
function url($type, $_val)

$old = $_GET[$type];
$_GET[$type] = $_val;
foreach ($_GET as $key=>$val)
{
$arr[] = $key . '=' . $val;
$_GET[$type] = $old;
}
Return '?' . implode('&', $arr);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<p>
  价格:<a href="<?php echo url('jiage', 0);?>">全部价格</a> <a href="<?php echo url('jiage', 1);?>">10~20</a> <a href="<?php echo url('jiage', 2);?>">30~40</a> <a href="<?php echo url('jiage', 3);?>">40~50</a>
</p>
  类型:<a href="<?php echo url('leixing', 0);?>">全部类型</a> <a href="<?php echo url('leixing', 1);?>">NOKIA</a> <a href="<?php echo url('leixing', 2);?>">IPHONE</a>
<p>
  类型2:<a href="<?php echo url('leixing2', 0);?>">全部类型</a> <a href="<?php echo url('leixing2', 1);?>">NOKIA</a> <a href="<?php echo url('leixing2', 2);?>">IPHONE</a>
</p>
<body>
</body>
</html>




试试吧。有问题再说 = =

#13


引用 12 楼 ci1699 的回复:
PHP code

<?php
 
function url($type, $_val)

    $old = $_GET[$type];
    $_GET[$type] = $_val;
    foreach ($_GET as $key=>$val)
    {
        $arr[] = $key . '=' . $val;
        $_GET[……

问题已解决 万分感谢

#14


我试了,可以满足要求,我还想多问一下。
为什么要这样一下呢   $_GET[$type] = $old;

#15


我有一个问题,我的<a>标签里还有一个id参数
我像这样写可以吗
价格:<a href="id={list_id}<?php echo url('jiage', 0);?>">全部价格</a>

#16


引用 14 楼 xiachao2008 的回复:
我试了,可以满足要求,我还想多问一下。
为什么要这样一下呢   $_GET[$type] = $old;


要用回原先的值。经过上一轮已改变了$_GET了。要换回来。



加在后面吧。前面有?输出了
价格:<a href="<?php echo url('jiage', 0);?>&id={list_id}">全部价格</a>

#17


好东西,收藏了