我正在创建一个日历,用于显示存储在数据库中的日期事件。日历显示YEAR的当前月份。我正在尝试查询数据库中的事件,但问题是,最后一个值是唯一显示的值。此外,我不知道如何查询具有相同日期的事件。这是我的语法。有什么想法吗?
$query = "SELECT cal_event, cal_date FROM calendar WHERE YEAR(cal_date) = $cYear AND MONTH(cal_date) = $cMonth";
$q = mysql_query($query);
while($rs = mysql_fetch_array($q))
{
$events = $rs['cal_event'];
$event_day = date("j", strtotime($rs['cal_date']));
}
for ($i=0; $i<($maxday+$startday); $i++)
{
if(($i % 7) == 0 ) echo "<tr >";
if($i < $startday) echo "<td style='border:3px solid #fff;background-color:#fff'></td>";
else
if($i <= $maxday+$startday)
{
echo "<td align='center' valign='middle' height='83px' style='border:3px solid #fff;background-color:#d9d9d9' ><span style='float:right;font-weight:bold'>" .($i - $startday + 1) ."</span><br><textarea name='' maxlength='50' style='width:108px; height:50px; resize:none;'>";
if($event_day == $i - $startday + 1) echo $events;
echo "</textarea></td>";
}
if(($i % 7) == 6 ) echo "</tr>";
}
更新解决方案。
这是我的问题的解决方案
for ($i=0; $i<($maxday+$startday); $i++)
{
$query = "SELECT * from calendar where cal_date = '".$cYear."-".$cMonth."-".($i - $startday + 1)."' ";
$q = mysql_query($query);
$rs=mysql_fetch_array($q);
if(($i % 7) == 0 ) echo "<tr >";
if($i < $startday) echo "<td style='border:3px solid #fff;background-color:#fff'></td>";
else
if($i <= $maxday+$startday)
{
echo "<td align='center' valign='middle' height='83px' style='border:3px solid #fff;background-color:#d9d9d9' ><span style='float:right;font-weight:bold'>" .($i - $startday + 1) ."</span><br><textarea name='' maxlength='50' style='width:108px; height:50px; resize:none;'>";
echo $rs['cal_event'];
echo "</textarea></td>";
}
if(($i % 7) == 6 ) echo "</tr>";
}
答案 0 :(得分:0)
除了必须提到你不应该使用“mysql_”函数之外,你的代码中至少有一个逻辑错误。
while
循环:
while($rs = mysql_fetch_array($q))
{
$events = $rs['cal_event'];
$event_day = date("j", strtotime($rs['cal_date']));
}
循环遍历所有结果,但没有对它们做任何事情。因此,变量$events
和$event_day
将设置为遇到的最后一个值。你可能应该在这个循环中做点什么。