数据库中只有数年的薪资发放记录。在PHP页面点击选择年份的下拉菜单框时,自动查询数据库并且子菜单显示记录中所有的年份;点击选择月份的下拉菜单时,自动查询数据库并且子菜单显示该年份所有有记录的月份;点击选择月份后自动进行相应查询。
时间: 2023-12-14 22:37:07 浏览: 69
实现这个功能,你需要以下几个步骤:
1. 编写 PHP 代码来连接数据库,查询所有的年份和月份记录,并将它们存储到数组中。
2. 在 HTML 页面上添加两个下拉菜单,一个用于选择年份,一个用于选择月份。
3. 使用 JavaScript 监听年份下拉菜单的选择事件。当用户选择一个年份时,JavaScript 将发送 AJAX 请求到 PHP 后端,后端将返回该年份所有的月份记录。
4. 将 PHP 返回的月份数据更新到月份下拉菜单中。
5. 当用户选择月份后,使用 JavaScript 发送另一个 AJAX 请求到后端,后端将返回该年份该月份的薪资记录。
6. 将 PHP 返回的薪资记录显示在页面上。
下面是一个简单的示例代码,用于演示如何实现这个功能:
```php
// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database");
// 查询所有的年份记录
$result = mysqli_query($conn, "SELECT DISTINCT YEAR(date) FROM salary_records ORDER BY YEAR(date) DESC");
$years = array();
while ($row = mysqli_fetch_assoc($result)) {
$years[] = $row['YEAR(date)'];
}
// 查询指定年份的所有月份记录
function get_months($year) {
global $conn;
$result = mysqli_query($conn, "SELECT DISTINCT MONTH(date) FROM salary_records WHERE YEAR(date)=$year ORDER BY MONTH(date) ASC");
$months = array();
while ($row = mysqli_fetch_assoc($result)) {
$months[] = $row['MONTH(date)'];
}
return $months;
}
// 查询指定年份和月份的所有薪资记录
function get_salary_records($year, $month) {
global $conn;
$result = mysqli_query($conn, "SELECT * FROM salary_records WHERE YEAR(date)=$year AND MONTH(date)=$month");
$records = array();
while ($row = mysqli_fetch_assoc($result)) {
$records[] = $row;
}
return $records;
}
```
下面是一个 HTML 页面的示例代码,用于显示年份和月份的下拉菜单:
```html
<select id="year_select">
<?php foreach ($years as $year) { ?>
<option value="<?php echo $year; ?>"><?php echo $year; ?></option>
<?php } ?>
</select>
<select id="month_select">
<!-- 动态添加月份选项 -->
</select>
```
下面是一个 JavaScript 的示例代码,用于监听年份选择事件、发送 AJAX 请求、更新月份下拉菜单:
```javascript
// 监听年份选择事件
document.getElementById("year_select").addEventListener("change", function() {
var year = this.value;
// 发送 AJAX 请求
var xhr = new XMLHttpRequest();
xhr.open("GET", "get_months.php?year=" + year);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 更新月份下拉菜单
var months = JSON.parse(xhr.responseText);
var html = "";
for (var i = 0; i < months.length; i++) {
html += "<option value='" + months[i] + "'>" + months[i] + "</option>";
}
document.getElementById("month_select").innerHTML = html;
}
};
xhr.send();
});
```
下面是一个 PHP 后端的示例代码,用于处理 AJAX 请求、查询数据库、返回数据:
```php
// 获取请求参数
$year = $_GET['year'];
// 查询指定年份的所有月份记录
$months = get_months($year);
// 返回 JSON 格式的月份数据
echo json_encode($months);
```
最后,你需要使用类似的方式处理月份选择事件,并将薪资记录显示在页面上。
阅读全文