关于搜索的问题

ice_berg16 2003-12-22 12:21:18
1 怎样将用户提交的搜索条件用SQL语句表示?
比如现在有三个条件 标题,作者,发布时间
用户必须选择一个搜索条件,这样的搜索如何写

2 搜索语句用LIMIT $start,$rows来分页。可是问题又来了
只能搜索一页,当搜索第二页时搜索条件的变量就不存在了。怎么解决?
例如
1.php 里有一搜索表单 变量为title,author,postime,
2.php
// 接收从1.php传来的变量
$title = $_POST['title];
.............
$sql = "SELECT * FORM table WHERE.........LIMIT $start,$rows";
//////////////////上面的SQL语句怎么写?////////////////////////////
$mysql_query($sql);
//显示结果
......
上一页 下一页
点下一页时由于_POST变量消失了,不能传递变量,也就不能继续查询,
这个问题怎么解决?

...全文
39 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_berg16 2003-12-24
  • 打赏
  • 举报
回复
谢谢
!
xuzuning 2003-12-24
  • 打赏
  • 举报
回复
//构造查询条件
$expr = "";
if ($title)
$expr .= "title LIKE '%$title%'";
if ($author)
$expr .= (empty($exrp)?"":" AND "). author = '$author'";
if ($potime)
$expr .= (empty($exrp)?"":" AND ")."postime = '$postime'";
$sql = $sql = "SELECT * FROM table WHERE $exrp LIMIT $start, $rows DESC";
ice_berg16 2003-12-24
  • 打赏
  • 举报
回复
唠叨兄给个例子代码也行啊
ice_berg16 2003-12-23
  • 打赏
  • 举报
回复
我是这样写的
$sql = "SELECT * FROM table WHERE ":
if ($title)
$sql .= "title LIKE '%$title%' ";
if ($author)
$sql .= "AND author = '$author' ";
if ($potime)
$sql .= "AND postime = '$postime' ";
$sql .= "LIMIT $start, $rows DESC ";

如果$title为空的话
$sql = "SELECT * FROM table WHERE AND author = '$author' AND postime = '$postime' ";
这样不就错了吗,怎么解决呢?
lsxaa 2003-12-23
  • 打赏
  • 举报
回复
作一个隐含变量放在表单里一同提交
xuzuning 2003-12-22
  • 打赏
  • 举报
回复
1、
$title = $POST['title'];
$author = $_POST['author'];
$postime = $_POST['postime'];
if(empty($title.$author.$postime))
die("必须选择一个搜索条件"); //当然这件事应在浏览器用js完成

2、
session_start();
if(提交) {
$expr = ...//构造查询条件
$_SESSION['expr'] = $expr;
}else
$expr = $_SESSION['expr'];

$sql = "SELECT * FORM table WHERE $expr LIMIT $start,$rows";
多菜鸟 2003-12-22
  • 打赏
  • 举报
回复
在第2部中你直接用URL来传递啊,只要传递你的条件变量和开始的记录变量,这样子就可以显示下一页了。

21,891

社区成员

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

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