我正在尝试将数据从 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/