在页面创建一个动态日历,并把MySQL数据库event表中所有的日程按日期显示到当天日期的单元格中。请说明实现思路,并生成完整代码,包括从MySQL数据库获取日程数据的示例代码。
时间: 2024-02-11 18:06:49 浏览: 187
在mysql数据库中,建日历表
实现思路:
1. 创建一个日历表格,包括表头和日期单元格,使用HTML和CSS实现。
2. 通过JavaScript获取当前日期,根据当前日期生成日历,并在对应日期单元格中显示日程数据。
3. 使用AJAX从MySQL数据库中获取日程数据,并将其存储在数组中。
4. 遍历日期单元格,在数组中查找对应日期的日程数据,并将其显示在单元格中。
以下是一个示例代码:
HTML代码:
```
<!DOCTYPE html>
<html>
<head>
<title>动态日历</title>
<style>
table {
border-collapse: collapse;
width: 70%;
margin: 0 auto;
}
th, td {
border: 1px solid #ddd;
text-align: center;
padding: 10px;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>星期日</th>
<th>星期一</th>
<th>星期二</th>
<th>星期三</th>
<th>星期四</th>
<th>星期五</th>
<th>星期六</th>
</tr>
</thead>
<tbody id="calendar">
</tbody>
</table>
</body>
</html>
```
JavaScript代码:
```
<script>
// 获取当前日期
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth();
var day = today.getDate();
// 生成日历
var calendar = document.getElementById("calendar");
var date = new Date(year, month, 1);
var row = calendar.insertRow();
var cellCount = 0;
while (date.getMonth() === month) {
var cell = row.insertCell();
cell.innerHTML = date.getDate();
// 查询当天的日程数据
var events = getEvents(year, month+1, date.getDate());
for (var i = 0; i < events.length; i++) {
cell.innerHTML += "<br>" + events[i].title;
}
date.setDate(date.getDate() + 1);
cellCount++;
if (cellCount % 7 === 0) {
row = calendar.insertRow();
}
}
// 从MySQL数据库中获取日程数据
function getEvents(year, month, day) {
var events = [];
// 使用AJAX从服务器获取数据
var xmlhttp = new XMLHttpRequest();
var url = "getEvents.php?year="+year+"&month="+month+"&day="+day;
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
events = JSON.parse(this.responseText);
}
};
xmlhttp.open("GET", url, false);
xmlhttp.send();
return events;
}
</script>
```
PHP代码(getEvents.php):
```
<?php
// 连接MySQL数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取查询参数
$year = $_GET["year"];
$month = $_GET["month"];
$day = $_GET["day"];
// 查询event表中的日程
$sql = "SELECT title FROM event WHERE year=$year AND month=$month AND day=$day";
$result = $conn->query($sql);
// 将查询结果存储在数组中
$events = [];
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
array_push($events, $row);
}
}
// 输出为JSON格式
echo json_encode($events);
$conn->close();
?>
阅读全文