我的搜索条件只有2个,先选择作者,再选择时间,搜出指定数据可是我的代码现在只能按时间搜索了比如我选择作者为: admin ,   选择时间为: 2010年6月份数据
搜出来的信息确实全部是6月份的数据
但是 显示的不是admin一个人发布的,显示出来的是只要在6月份有发布信息的作者都显示出来了哪位大侠来帮忙呀  谢谢呀
搜索页 代码如下:<form method=POST action=renaiask_list1.php onSubmit="return add_onsubmit(this)">
<div align=center>
<table width=562 border=0 align="center" cellpadding=0 cellspacing=1>
<tr><td>发布人:
<select name="writer">
<option value="">请选择</option>
<option value="111">111</option>
<option value="222">3333</option>
<option value="admin">admin</option>
</select>
<select name="senddate">
<option value="">请选择</option>
<?php
$today = date("Y-m-d",time()); 
$bt = strtotime($today." 00:00:00"); 
$et = strtotime($today." 23:59:59"); 
echo '<option value="'.$bt.'-'.$et.'">今天数据</option>';
echo "\r\n";
$yesterday = date("Y-m-d",strtotime("-1Day")); 
$bt = strtotime($yesterday." 00:00:00"); 
$et = strtotime($yesterday." 23:59:59"); 
echo '<option value="'.$bt.'-'.$et.'">昨天数据</option>';
echo "\r\n";
for($i = 0; $i < 7; $i ++){
$datebt = date("Y-m",strtotime("-".$i."Month"))."-1"; 
$dateet = date("Y-m",strtotime("-".$i."Month"))."-".date('t', $datebt); 
$bt = strtotime($datebt." 00:00:00"); 
$et = strtotime($dateet." 23:59:59"); 
echo '<option value="'.$bt.'-'.$et.'">'.date('Y年m月', $bt).'的数据</option>';
echo "\r\n";
}
?>
</select>
<input type=submit value="提交" name=B1 class=fstyle>
</td></tr></table>
</div>
</form>
搜索结果页 代码如下:<? require("connection.php"); ?>
<? require("tools.php"); ?>
<?
$bet = explode('-', $_POST['senddate']);
$sql = "select * from dede_archives where senddate between ".intval($bet[0])." and ".intval($bet[1]);
$result=mysql_query($sql);
$pagesize=20;  //每页记录条数
$result_num=mysql_num_rows($result);
if($result_num<=0){
if($search==""){
$word="目前还没有记录!";
}else{
$word="没有查到符合条件的记录!";
}
}else{
$maxpage=ceil($result_num/$pagesize); if(is_long($page) or $page==""){
$page=1;
}else{
$page=(int)($page);
}

if($page<1){
$page=1;
}else if( $page>$maxpage){
$page=$maxpage;
}
mysql_data_seek($result,($page-1)*$pagesize);
$n=1;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="style.css">
<title></title>
</head>
<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0">
<? require("top.inc"); ?>
<? if($result_num<=0){ ?>
<center><BR><BR><? print($word); ?></center>
<? }else{ ?>
<table width="598" border="0" cellspacing="2" cellpadding="0" align="center">
  <tr>
  <td>共搜索到<font style="font-size:14px;font-weight:bold; color:#FF0000;"><? print($result_num); ?></font>条符合条件的信息</td>
  <td align="right"><div style="font-size:14px;font-weight:bold;">>>> <a href="renaiask_search7.php"><font color="#FF0000">返回搜索</font></a></div></td>
  </tr>
</table>
<table width="600" border="0" cellspacing="1" cellpadding="0" align="center">
  <tr align=center bgcolor=#97D0FB>
    <td><b>ID</b></td>
    <td><b>标题</b></td>
    <td><b>作者</b></td>
    <td><b>时间</b></td>
  </tr>
<? while($row = mysql_fetch_array($result)){ ?>   
  <tr bgcolor=#EEF8FD>
    <td  align=center><? print(HtmlOut($row["id"])); ?></td>
    <td  align=center><? print(HtmlOut($row["title"])); ?></td>
    <td  align=center><? print(HtmlOut($row["writer"])); ?></td>
<td  align=center><? echo $senddate=date('Y-m-d',(HtmlOut($row["senddate"]))); ?></td>
  </tr>
<? $n++;if(!($row = mysql_fetch_array($result)) || $n > $pagesize) break; ?>
  <tr bgcolor=#D7EFFB>
    <td  align=center><? print(HtmlOut($row["id"])); ?></td>
    <td  align=center><? print(HtmlOut($row["title"])); ?></td>
    <td  align=center><? print(HtmlOut($row["writer"])); ?></td>
    <td  align=center><? echo $senddate=date('Y-m-d',(HtmlOut($row["senddate"]))); ?></td>
  </tr>
<? $n++;if($n > $pagesize) break;}  ?> 
</table>
<? LastNextPage($maxpage,$page,"width=100% ","<p  align=center class=font2>"); ?>
<? } ?>
<? require("bottom.inc"); ?>
</body>
</html>

解决方案 »

  1.   

    英雄!$sql = "select * from dede_archives where senddate between ".intval($bet[0])." and ".intval($bet[1]);
    你至少得写成这样吧:$writer = $_POST['writer'];$sql = "select * from dede_archives where writer = '{$writer}' and senddate between ".intval($bet[0])." and ".intval($bet[1]);
      

  2.   

    你沒有將發佈人的信息放到sql語句中去查詢...所以就查出來的就是全部人的了.
      

  3.   

    建议遇到这样的问题先打印sql观察一下,这种错都看不出来实在不应该
      

  4.   

    $sql = "select * from dede_archives where senddate between ".intval($bet[0])." and ".intval($bet[1]);$sql = "select * from dede_archives where writer='{$writer}' senddate between ".intval($bet[0])." and ".intval($bet[1]);
    最起码要把条件给加上吧!
      

  5.   

    英雄,你还是饶了我吧!分页要用到limit的如:
    $pageSize = 20;
    $currentlyPage = 3;limit $pageSize * $currentlyPage , $pageSize这个你应该是知道的呗(还要考虑第一页的特殊问题)!