Mysql Dates / PHP


Mysql Dates / PHP

我正在用PHP制作日历。使用日历,我可以查询mysql数据库,它将显示每天的事件数量。我遇到的问题是它显示开始和结束日期,但我还需要它来显示两者之间的所有日期。因此,表明中间的日子也被占用了。 我当前的表有 DepDate(出发(和 RetDate(返回日期(。我认为这必须通过 mysql 查询来完成。任何帮助都会很棒!谢谢芽

  <script>
function goLastMonth(month, year, keyname){
if(month == 1) {
--year;
month = 13;
}
--month
var monthstring= ""+month+"";
var monthlength = monthstring.length;
var keyname = "<?php echo $searchTerm; ?>";
if(monthlength <=1){
monthstring = "0" + monthstring;
}
document.location.href ="<?php $_SERVER['PHP_SELF'];?>?month="+monthstring+"&year="+year+"&keyname="+keyname;
}

function goNextMonth(month, year, keyname){
if(month == 12) {
++year;
month = 0;
}
++month
var monthstring= ""+month+"";
var monthlength = monthstring.length;
var keyname = "<?php echo $searchTerm; ?>";
if(monthlength <=1){
monthstring = "0" + monthstring;
}
document.location.href ="<?php $_SERVER['PHP_SELF'];?>?month="+monthstring+"&year="+year+"&keyname="+keyname;
}

</script>
</head>
<?php
if (isset($_GET['day'])){
$day = $_GET['day'];
} else {
$day = date("j");
}
if(isset($_GET['month'])){
$month = $_GET['month'];
} else {
$month = date("n");
}
if(isset($_GET['year'])){
$year = $_GET['year'];
}else{
$year = date("Y");
}
$currentTimeStamp = strtotime( "$year-$month-01");
$monthName = date("F", $currentTimeStamp);
$numDays = date("t", $currentTimeStamp);
$currentTimeStamp = strtotime( "$day-$month-$year"); // added this to reset this value for prev* and next* code
$counter = 0;
?>
<?php
include ('plane.css');
/* ------------------------------------------------------------Calendar Creation---------------------------------------------------------------------- */
include ('planeh.html');
?>

<?php
    //get previous month
     $prevMonth = $month - 1;
     $prevYear = $year;
     if($prevMonth <= 0){
       $prevMonth = 12;
       $prevYear--;
     }
     $pMonthStr = "" + $prevMonth;
     if(strlen($pMonthStr) <= 1)
       $pMonthStr = "0" + $pMonthStr;
     //get num of day for previous month
     $previousTimeStamp = strtotime( "01-$pMonthStr-$prevYear");
     $prevNumDays = date("t", $previousTimeStamp);
     $numDays = date("t", $currentTimeStamp);
     $counter = 0;

for($i = 1; $i < $numDays+1; $i++, $counter++){
$timeStamp = strtotime("$year-$month-$i");

if($i == 1) {
$firstDay = date("w", $timeStamp);
for($j = 0; $j < $firstDay; $j++, $counter++) {
$prevDay = $prevNumDays-$firstDay+$j+1;
        echo "<td class = td3><div id = prev>$prevDay</div></td>";
}
}

if($counter % 7 == 0) {
 echo"</tr><big></big><tr>";
}
/* Up to this point, everything is the development of the calendar */

$monthstring = $month;
$monthlength = strlen($monthstring);
$daystring = $i;
$daylength = strlen($i);
if($daylength <=0){
$daystring = "0".$daystring;
}
// links and date located on calendar
$todaysDate = date("m/d/y");
/* Indicates date located on calendar */
echo "<td align = center class = td3><div class = button>".$i."</a></div>";

$sqlEvent2 = mysql_query("select * FROM trips where DepDate  = '".$year."-".$month."-".$i."'"); 
$num_rows = mysql_num_rows($sqlEvent2);
if(mysql_errno()){
    echo "MySQL error ".mysql_errno().": "
         .mysql_error()."'n<br>When executing <br>'n$query'n<br>";
}
echo '<div id="button">';
echo "<a  href='".$_SERVER['PHP_SELF']."?month=".$monthstring."&day=".$i."&year=".$year."&v=true' >".$num_rows."</a></td>"; 
echo '</div>';


}








echo "<tr>";
echo"</table>";
?>
<div id ="menu">
<?php include ('menu2.php');?>


</ul>
</div>
</div>


</tr>
</body>
</html> 

这里你需要的只是引用MySQL日期和时间函数,特别是datediff:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

一个例子是:

SELECT start_dt, end_dt, datediff(end_dt, start_dt) as days_elapsed
FROM my_table

其中start_dt和end_dt都是日期值。