我要做的是一个统计页面 查询条件是根据输入(js点击选择时间)开始时间 结束时间 点确定按钮查询这时间段记录
数据库字段:
id int(10)
ip varchar(50)
time varchar(50)
type varchar(50)
开始日期:<input type="text" name="time" onfocus="c.showMoreDay = false;c.show(this);" /> 结束日期:<input type="text" name="time" onfocus="c.showMoreDay = false;c.show(this);" /> <input type="submit" value="确定" />
下面是一个表格:
内容是类型和对应数量
请各位帮下忙,刚接触统计
------解决方案--------------------
开始日期:<input type="text" name="timeStart" onfocus="c.showMoreDay = false;c.show(this);" /> 结束日期:<input type="text" name="timeEnd" onfocus="c.showMoreDay = false;c.show(this);" /> <input type="submit" value="确定" />
$t1=$_POST['timeStart'];
$t2=$_POST['timeEnd'];
$sql="select type,count(*) from tt where time BETWEEN '$t1' AND '$t2' group by type";
$result=mysql_query($sql);
while($row=mysql_fetch_row($result)){
echo $row[0].' '.$row[1].'<br>';
}
------解决方案--------------------
time varchar(50)
至少应该校正传入数据符合 time 字段的格式才能比较
他没说,我不知道
------解决方案--------------------
关键就是数据库语句,原理和做法就和你按ID查询一样的。SQL语句二楼已经给出来了。
另外一点的话,楼主可以去下载个时间选择插件,毕竟让用户手动输入时间是很不理想的。介绍一个jq的 jquery-calendar 网上有很多种样式表,可以自己选样式。
------解决方案--------------------
time varchar(50)
你保存的时间是字符串,那么
2012.12.14 10:43
2012/12/14 10:43:20
2012-12-14 10:43:31p
都是合法的日期
如果表单传入的是 2012/12/14 10:43:22
那么至少有两个是比配不到的
------解决方案--------------------
那你传入的日期格式是怎样的。
------解决方案--------------------
即便只是年月日
'2012/12/14' 与 '2012-12-14' 也是不相等的
------解决方案--------------------
只要格式能够统一,#1的代码就可以用了
------解决方案--------------------
判断一下就可以了
if(!empty($t1) && !empty($t2)){
$sql="select type,count(*) from tt where time BETWEEN '$t1' AND '$t2' group by type";
}else{
$sql="select type,count(*) from total_counter group by type";
}
$result=mysql_query($sql);
------解决方案--------------------
这样写好些,能适应各种情况
$t1 = $_POST['timeStart'];
$t2 = $_POST['timeEnd'];
$t = array(1);
if($t1) $r[] = "time>='$t1'";
if($t2) $r[] = "time<='$t2'";
$t = join(' and ', $t);
$sql = "select type,count(*) from total_counter where $t group by type";