php - 在日历上显示数据库中的事件

标签 php mysql calendar

我正在创建一个日历,显示事件以及存储在数据库中的日期。日历显示当年的当前月份。我正在尝试查询数据库中的事件,但问题是,最后一个值是唯一显示的值。另外我不知道如何查询具有相同日期的事件。这是我制定的语法。有什么想法吗?

$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>";
                        }

最佳答案

除了必须提到您不应该使用“mysql_”函数之外,您的代码中(至少)有一个逻辑错误。

while 循环:

                    while($rs = mysql_fetch_array($q))
                    {

                        $events = $rs['cal_event'];
                        $event_day = date("j", strtotime($rs['cal_date']));
                    }

循环遍历所有结果,但不对它们执行任何操作。因此,变量 $events$event_day 将设置为最后遇到的值。您可能应该在这个循环中做一些事情。

关于php - 在日历上显示数据库中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160646/

相关文章:

php - codeigniter 加载 View 特定的 javascript

php - 如何使用 propel 查询多个数据库连接

mysql 选择 a 和 b 之间的时间戳返回全部或 0 个时间戳

java - 创建日历事件时如何创建警报?

java - 如何在 Java 中计算某人的年龄?

PHP json_encode() 使数据为空

php - 返回为 dompdf 分页分组的每个 "user"的结果

mysql - 如何监控apache/mysql网络服务器

java - 为什么Java中的Date类显示的年份是减去1900后的?

php - 如何解决 Notice : Undefined index: id in Undefined index: id in detailsmodal. php on line 3