【发布时间】:2011-08-08 11:30:36
【问题描述】:
构建包含事件的日历。我已经建立了日历,现在尝试将事件添加到相应的日期。
$dayName = "Monday";
$mo = date($m);
for($day = 1; $day <=7; $day++)
{
$timestamp = mktime(1,1,1,$mo,$day,$yr);
if(date('l', $timestamp) == $dayName)
{
if(date('d', $timestamp) == 1){
$num = cal_days_in_month(CAL_GREGORIAN, $m, $yr);
for($date = 1; $date <=$num; $date++){
if ($date == 1){
print "<tr>";
}
print "<td";if($mo == date("m")){ if($date == date("d")){ if($yr == date("y")){ print " style=\"background:#97d2fd;\"";}}}print " onClick=\"location.href = '?v=dd&id=$m&y=$yr&mid=$mm&my=$myr&d=$date';\" height=\"80\">". $date."<br/>";
$wqry = mysql_query("SELECT * FROM events")or die(mysql_error());
if (mysql_num_rows($wqry) > 0){
//need to be a while loop
$wrow = mysql_fetch_array($wqry, MYSQL_ASSOC) or die(mysql_error());
$alldate = $date."/".$mo."/".$yr;
if($alldate == $wrow['sdate']){
if($wrow['type'] == "1"){
print"<div id=\"hight\">";
}print $wrow['title']."</div><br/>";
}
}
print"</td> ";
if ($date == 7){
print "</tr><tr>";
}
if ($date == 14){
print "</tr><tr>";
}
if ($date == 21){
print "</tr><tr>";
}
if ($date == 28){
print "</tr>";
}
}
}
break;
print"
</tbody>
</table>
</div>
</div>
</div>
";
}
}
试图使事件显示在右表中。到目前为止,此代码仅显示一个事件。我猜问题是在for中放置了一个while循环。就像我做的那样:
如果 (mysql_num_rows($wqry) > 0){
while($wrow = mysql_fetch_array($wqry, MYSQL_ASSOC) or死(mysql_error())){ $alldate = $date."/".$mo."/".$yr;
if($alldate == $wrow['sdate']){ if($wrow['type'] == "1"){ print"<div id=\"hight\">"; }print $wrow['title']."</div><br/>"; } } }
它只显示当月的第一个日期。这意味着它必须停止 for 循环。
【问题讨论】:
标签: php loops calendar for-loop while-loop