问一个搜索的问题?

xiaoao 2004-12-08 02:52:10
有一个表。现在要求可以搜索出相关数据。表单提交里有几个条件,时间(近3天,或者当天),关键字(按照表的题目),积分(看积分多少,比如小于10,小于20)。
问题是,现在要求可以组合查询,就是上面的3个条件可以全部出现,也可以只出现一个。PHP里的SELECT语句应该如何写?
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zc1966 2004-12-09
  • 打赏
  • 举报
回复
我同意jxflll的方法
Einar 2004-12-09
  • 打赏
  • 举报
回复
刚有点错误把这里改一下
if($search_time<>"")
{
switch ($search_time)
{
case 1:
$search1="and 时间字段 BETWEEN CURDATE() and DATE_ADD(CURDATE(),INTERVAL 1 DAY)";
$search1_value = "&search_time=$search_time";
break;
case 2:
$search1="and 时间字段 BETWEEN CURDATE() and DATE_ADD(CURDATE(),INTERVAL 3 DAY)";
$search1_value = "&search_time=$search_time";
break;
default:
$search1="";
$search1_value = "";
break;
}
}
else
{
$search1 = "";
$search1_value = "";
}
Einar 2004-12-09
  • 打赏
  • 举报
回复
if($search_time<>"")
{
switch ($search_time)
{
case 1:
$search2="and 时间字段 BETWEEN CURDATE() and DATE_ADD(CURDATE(),INTERVAL 1 DAY)";
$search2_value = "&search_time=$search_time";
break;
case 2:
$search2="and 时间字段 BETWEEN CURDATE() and DATE_ADD(CURDATE(),INTERVAL 3 DAY)";
$search2_value = "&search_time=$search_time";
break;
default:
$search2="";
$search2_value = "";
break;
}
}
else
{
$search2 = "";
$search2_value = "";
}

if($search_key<>"")
{
$search2 = "and (字段名称)like '%$search_key%'";
$search2_value = "";
}
else
{
$search2 = "";
$search2_value = "";
}
if($search_number<>"")
{
$search3 = "and (积分字段)<$search_number";
$search3_value = "&search_number=$search_number";
}
else
{
$search3 = "";
$search3_value = "";
}
$sql = "select * from table where id<>'' $search1 $search2 $search3 ";
$search1_value等类似命名的则放在分页里面"search_more.php?page=$page$search1_value$search2_value$search3_value";
写得这么详细你不清楚的话,那真的是没有办法了
skystar008 2004-12-09
  • 打赏
  • 举报
回复
与与或的组合吧.
uGain 2004-12-08
  • 打赏
  • 举报
回复
要注意,sql语句不是php的
jxflll 2004-12-08
  • 打赏
  • 举报
回复
$sql="select * from tablename where 1=1";
if(时间条件不为空){
$sql.=" and 时间=你输入的时间条件";
}
if(关键字条件不为空){
$sql.=" and 关键字=你输入的关键字";
}
if(积分条件不为空){
$sql.=" and 积分=你输入的积分";
}
这样这个sql语句就构建成了。
magicsnake 2004-12-08
  • 打赏
  • 举报
回复
在表单中可以用一些checkbox跟这些条件元素做成一一对应的关系,当提交表单的时候,在PHP中根据checkbox的提交情况判断用户选中的是那些条件,然后构造sql语句,比如用户钩中第一(时间)和第三(积分)个条件,那么可以就可以构造:
select * from tablename where 时间 = 当天 and 积分 = 数值;的语句.

要想更灵活些,可以在表单中把逻辑运算符也做成select选择框让用户选择就可以构造出各种sql语句
ygjwjj 2004-12-08
  • 打赏
  • 举报
回复
select * from tablename where datediff(d,now,时间)<=3 or keyword='关键字' or score<20...
erldy 2004-12-08
  • 打赏
  • 举报
回复
select * from tablename where ... or ... or ...

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧