php - 如何将数据从 mysql 检索到我的事件日历中?

标签 php mysql

我正在尝试将数据从 mysql 数据库检索到我从网上下载的 php 日历中。此代码的结果是页面不会停止加载。我知道它与循环有某种关系。如果存在使用相同日期保存的事件,我想突出显示该日期。

db connection//

类(class)日历{

public function __construct($year = '', $month = '') {

    $date = time();

    if (empty($year) OR empty($month)) {
        $year = date('Y', $date);
        $month = date('m', $date);
        $day = date('d', $date);
    }

    $first_day = mktime(0, 0, 0, $month, 1, $year);
    $title = date('F', $first_day);
    $day_of_week = date('D', $first_day);

     switch ($day_of_week) {
        case "Mon": $blank = 0;
            break;
        case "Tue": $blank = 1;
            break;
        case "Wed": $blank = 2;
            break;
        case "Thu": $blank = 3;
            break;
        case "Fri": $blank = 4;
            break;
        case "Sat": $blank = 5;
            break;
        case "Sun": $blank = 6;
            break;
    }

    $days_in_month = cal_days_in_month(0, $month, $year);

    echo '<table width="100%" class="table table-striped">';

    echo '<tr>';
    echo '<th colspan=60>' . $title . ' ' . $year . '</th>';
    echo '</tr>';

    echo '<tr>';
    echo '<td width=62>Mån</td>';
    echo '<td width=62>Tis</td>';
    echo '<td width=62>Ons</td>';
    echo '<td width=62>Tors</td>';
    echo '<td width=62>Fre</td>';
    echo '<td width=62>Lör</td>';
    echo '<td width=62>Sön</td>';
    echo '</tr>';

    $day_count = 1;

    while ($blank > 0) {

     echo '<td></td>';
        $blank = $blank - 1;
        $day_count++;
   }

    $day_num = 1;
    $day_today = date('Y-m-d');
     while ($day_num <= $days_in_month) {

                    $sql = "SELECT id, event_name, event_date FROM events WHERE event_date = '".$day_today."'";
                    $result = $conn->query($sql);

                    if ($result->num_rows > 0) {
                        while($row = $result->fetch_assoc()) {
                                       if(date('d') == $event_date) {
                                           echo "<td> <u>$day_num</u> </td>";
                                           $day_num++;
                                           $day_count++;
                                        }

                        }
                    } else {

                           if(date('d') != $day_num) {
           echo "<td> $day_num </td>";
           $day_num++;
           $day_count++;
       } 
       if(date('d') == $day_num) {
           echo "<td> <strong>$day_num</strong> </td>";
           $day_num++;
           $day_count++;
       }            
        if ($day_count > 7) {
            echo '</tr><tr>';
            $day_count = 1;
        }

    }

                    }

    while ($day_count > 1 && $day_count <= 7) {
        echo '<td> </td>';
        $day_count++;
    }

    echo '</tr>';

    echo '</table>';
}

}

$c = 新日历($年, $月);

最佳答案

如果循环中的条件不适用(这种情况是因为 $event_date 不存在),则 $day_num 不会增加,并且脚本将运行无限。

if (date('d') == $row["event_date"]) // instead of $event_date 

另一方面,这个循环和这个条件对我来说似乎没有必要。如果您只想标记这一天,检查 $result->num_rows 就足够了。

if ($result->num_rows > 0)
{
    echo "<td> <u>$day_num</u> </td>";
    $day_num ++;
    $day_count ++;
}

关于您的数据库查询,您当前请求的始终是同一天的数据,因为 $day_today 始终是当天。你可以尝试这样的事情:

    $check_date = $year ."-". $month ."-". $day_num;

    $sql = "SELECT id, event_name, event_date FROM events 
    WHERE event_date = '" .$check_date . "'";

希望这对您有进一步帮助。

关于php - 如何将数据从 mysql 检索到我的事件日历中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50079496/

相关文章:

php - 获取创建日期早于 14 天的行

php - Float :left - Float:right Issue when div is too high. (有解决方法,但不知道如何实现到MYSQL中)

mysql - VB.Net)在连接表上使用条件数据读取器

php - 在具有空格的PHP中通过URL从数据库传递值

mysql - 解析 CSV 并导出到 Grails 中的 Mysql 数据库

PHP邮件发送MYSQL查询

javascript - 在 javascript 中访问响应 Json 数据

php - 如何用纯文本替换多个 img 元素?

php - 将 mysql_field_flags 转换为 mysqli

mysql - 改用MyISAM引擎是否有助于提高读取操作的速度?