我的搜索目标4个字段:
id(ID)   
title(标题)   
writer(作者)
senddate(发表时间)我想实现作者和时间是下拉框选择的可是我下面的代码按作者进行搜索时是准确的
可是我想按时间搜索却不行了
那位高手帮忙看看我下面那段搜索(关于时间)的JS代码和字段有什么关系。
我就是弄不明白。我就一个(senddate时间字段)怎么分出YYYY  MM  DD  3个这样的东西出来了啊再说下去我要糊涂了
总之高手看看我的代码就明白是怎么回事了
感谢指教  谢谢<? 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="小王">小王</option>
<option value="小明">小明</option>
<option value="admin">admin</option>
</select>
选择时间:
<select name=YYYY 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>

解决方案 »

  1.   

    不太明白你的意思
    页面上的YYYY MM DD不过就是年月日啊 你查询的时候取出这三个年月日的值,不就组成一个日期了啊。你db里日期字段存的是什么?时间戳?
      

  2.   


    我的时间字段是:senddate
    不知道数据库senddate字段为什么显示的是:1275272026  这样子的
    uidian都不懂 
    晕  帮忙改改吧  谢谢了呀
      

  3.   

    显示1275272026就对了
    那就是时间戳
    你可以用mktime把你的年月日转化成1275272026类似的整数,放到sql里查询
    不过注意应该要用 between and 噢,指定日期的0点的时间戳~指定日期的24点的时间戳.不知道你能不能明白
      

  4.   

    在你的后台代码里,可以用mktime(小时,分,秒,月,日,年)把一个传入的时间值转换成和你数据库里一样的格式,你要从数据库里取出今天的,就是select.....from table where senddate between mktime(0,0,0,6,3,2010) and mktime(23,59,59,6,3,2010);
      

  5.   

    具体怎么传的啊?????????
    不懂啊
    能加我QQ么?86861014
    因为我把下面的这个代码放进去也不行啊<?php 
    $timestamp   =   "1275272026";   
    $timestamp   =   preg_replace( "/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ ", "\\1-\\2-\\3   \\4:\\5:\\6 ",$timestamp);   //格式化成标准日期格式 
    $timestamp   =   strtotime($timestamp);   //转化成unix时间戳 
    ?>
      

  6.   

    "我的时间字段是:senddate
    不知道数据库senddate字段为什么显示的是:1275272026 这样子的"unix时间是从1970年1月1日开始算的,看距今过了多少秒,所以是1275272026,不能用正则parse