我的 问题 就是在 进行搜索 的时候,是 按指定时间 进行搜索的,但是会 搜出所有时间的 数据。就是这个问题
麻烦大侠大哥大姐帮帮忙。本人感激不尽~~~~
谢谢了啊~~~下面我把 搜索页 和 搜索结果页 的代码 都贴出来代码不是很多,也不是很复杂,但就是找不到问题。
或许是我太菜了。
再次感谢您的帮助,问题解决,立即结贴。谢谢!搜索页 代码如下:<? require("connection.php"); ?>
<? require("tools.php"); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>按发布人+时间搜索全站文章</title>
<? if($addedit_subed!="true"){ //********************** ?>
<script language="JavaScript" src="check.js"></script>
<script LANGUAGE="javascript">
<!--
function add_onsubmit(add) {
//if (!checkvalue(add.title,0,0,1,"标题")) return false;
//if (!checkvalue(add.writer,0,0,1,"发布人")) return false;
}
//-->
</SCRIPT>
<? } //*************************************************?>
<style type="text/css">
<!--
body,td,th {font-size: 12px;}
-->
</style></head>
<body bgcolor="#FFFFFF">
<? require("top.inc"); ?>
<form method=GET action=renaiask_list.php name=add LANGUAGE=javascript onSubmit="return add_onsubmit(this)">
<div align=center>
<table width=562 border=0 align="center" cellpadding=0 cellspacing=1>
<tr><td>
发布人:
<select name="writer" size=1  class=fstyle>
<option value="">请选择</option>
<option value="123">123</option>
<option value="456">456</option>
<option value="admin">admin</option>
</select>
选择时间:
<select name=YYYY id=senddate onChange="YYYYDD(this.value)">
<option value="">请选择 年</option>
</select>
<select name=MM onChange="MMDD(this.value)">
<option value="">选择 月</option>
</select>
<select name=DD>
<option value="">选择 日</option>
</select>
<script language="JavaScript">
<!--
function YYYYMMDDstart()
{
MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
//先给年下拉框赋内容
var y = new Date().getFullYear();
for (var i = (y-30); i < (y+30); i++) //以今年为准,前30年,后30年
document.add.YYYY.options.add(new Option(" "+ i +" 年", i));
//赋月份的下拉框
for (var i = 1; i < 13; i++)
document.add.MM.options.add(new Option(" " + i + " 月", i));
document.add.YYYY.value = y;
document.add.MM.value = new Date().getMonth() + 1;
var n = MonHead[new Date().getMonth()];
if (new Date().getMonth() ==1 && IsPinYear(YYYYvalue)) n++;
writeDay(n); //赋日期下拉框Author:meizz
document.add.DD.value = new Date().getDate();
}
if(document.attachEvent)
window.attachEvent("onload", YYYYMMDDstart);
else
window.addEventListener('load', YYYYMMDDstart, false);
function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年)
{
var MMvalue = document.add.MM.options[document.add.MM.selectedIndex].value;
if (MMvalue == ""){ var e = document.add.DD; optionsClear(e); return;}
var n = MonHead[MMvalue - 1];
if (MMvalue ==2 && IsPinYear(str)) n++;
writeDay(n)
}
function MMDD(str) //月发生变化时日期联动
{
var YYYYvalue = document.add.YYYY.options[document.add.YYYY.selectedIndex].value;
if (YYYYvalue == ""){ var e = document.add.DD; optionsClear(e); return;}
var n = MonHead[str - 1];
if (str ==2 && IsPinYear(YYYYvalue)) n++;
writeDay(n)
}
function writeDay(n) //据条件写日期的下拉框
{
var e = document.add.DD; optionsClear(e);
for (var i=1; i<(n+1); i++)
e.options.add(new Option(" "+ i + " 日", i));
}
function IsPinYear(year)//判断是否闰平年
{ return(0 == year%4 && (year%100 !=0 || year%400 == 0));}
function optionsClear(e)
{
e.options.length = 1;
}
//-->
</script> 
<input type=submit value="提交"  name=B1 class=fstyle>
</td>
</tr>
</table>
</div>
</form>
<? require("bottom.inc"); ?>
</body>
</html>搜索结果页 代码如下:<? require("connection.php"); ?>
<? require("tools.php"); ?>
<?
$search = "";
if($writer<>""){
if($search==""){
$search .= " WHERE ";
}else{
$search .= " AND ";
}
$search .= " writer = '" . $writer . "' ";
}
if($senddate<>""){
if($search==""){
$search .= " WHERE ";
}else{
$search .= " AND ";
}
$str = $_GET['DD'] . '-' . $_GET['MM'] . '-' . $_GET['YYYY'];
$time = strtotime($str);
$search .= " senddate >" . $time;   
//$senddate=$_GET["senddate"];
}
$table="dede_archives";
$sql="select * from " . $table . $search." order by id DESC";
$result=mysql_query($sql);
$pagesize=30; 
$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 color="#FF0000"><? print($result_num); ?></font>条符合条件的信息</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><a href="renaiask_show.php?id=<? print($row["id"]); ?>"><? print(HtmlOut($row["id"])); ?></a></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><a href="renaiask_show.php?id=<? print($row["id"]); ?>"><? print(HtmlOut($row["id"])); ?></a></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语句输出下看看,要不太多了
      

  2.   

    select哪句sql语句啊?
    select * from  dede_archives order by id DESC
    这个么?
    我估计你说的不是这句吧,你告诉我select哪句  好么?谢谢!
      

  3.   

    建议lz先看看你得到的时间是否正确在来看看你的sql语句是否正确
      

  4.   

    怎样才能看到  得到的时间是否正确呢?有个事情我提示一下:
    我在数据库中把某篇文章的时间(如:1250903047)改成123456了
    再用<option value="123456">123456</option>来进行搜索,也是一样搜不出想要的数据
    很不解,望高手赐教,不胜感激啊!!!
      

  5.   

    我将
    $table="dede_archives";
    $sql="select * from " . $table . $search." order by id DESC";
    换成
    $sql="select * from dede_archives where senddate>$time"; 
    来进行了一次搜索;发现了一点问题因为今天还没有发布文章嘛
    我选择今天的时间进行搜 提示:目前还没有记录!昨天我们有发布文章
    我选择昨天的时间进行搜 提示:没有查到符合条件的记录!说明已经有区分了
    那么我这句语句$sql="select * from dede_archives where senddate>$time"; 
    要怎么写才能搜索到准确的数据呢?请指教  谢谢!!!
      

  6.   

    终于找到问题真正的根源了
    我将
    $str = $_GET['DD'] . '-' . $_GET['MM'] . '-' . $_GET['YYYY'];
    $time = strtotime($str);//时间戳
    $search .= " senddate >" . $time;
    $senddate=$_GET["senddate"];
    换成
    $search .= " senddate = '" . $senddate . "' ";再到数据库中把其中的一篇文章的时间(如:1250903047)改成123456了
    再用<option value="123456">123456</option>来进行搜索
    居然搜到了这条数据了那是因为我时间戳的语句有问题了
    哪位高手在来指教下吧  感激啊  来呀  急死我咯呀
      

  7.   

    $str = $_GET['YYYY'] . '-' . $_GET['MM'] . '-' . $_GET['DD'] ." 00:00:00";
    $time = strtotime($str);//时间戳