gpt4 book ai didi

PHP数组循环+MySQL数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:22 25 4
gpt4 key购买 nike

我正在构建一个 rota/calendar 系统,由于缺乏 PHP 数组知识,我在某个时候遇到了困难。

对于这个特定问题,我有两个日期单元格,17/08/2017 和 18/08/2017,在那些日子里,有 2 名员工轮值,我希望能够回应这两个日期这些人的姓名首字母并将值转移到相关单元格中。

下面是查询,以及我目前正在做什么

$query_show_rota='SELECT * FROM `rota` INNER JOIN users ON users.uid=rota.staffmember WHERE "'.$this->currentDate.'" >= `rotastart` AND "'.$this->currentDate.'" <= `rotaend`';
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
$result=mysqli_query($db,$query_show_rota);
if (!$result) {
printf("Error: %s\n", mysqli_error($db));
exit();
}

while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
$rota_initials_loop_array = array();
array_push($rota_initials_loop_array, $row['initials']);
print_r($rota_initials_loop_array);
echo $this->currentDate . " - ";
echo $row['initials'] . " ";
echo $row['shift'] . "<br />";
}

(上面的一些,比如while循环中的echo,是为了测试)

这导致了从 MySQL 返回的以下数据(为了便于查看,删除了一些字段):

|  rid  |  staffmember  |  initials  |  rotastart  |  rotaend  |  shift  |
| 6 | 1 | DB | 2017-08-17 | 2017-08-18| 1430 |
| 7 | 6 | LG | 2017-08-17 | 2017-08-18| 0800 |

(每位员工 2 天,两位员工都轮类)

在浏览器中,在日历日单元格之外,我可以看到:

Array ( [0] => DB ) 2017-08-17 - DB 1430
Array ( [0] => LG ) 2017-08-17 - LG 0800
Array ( [0] => DB ) 2017-08-18 - DB 1430
Array ( [0] => LG ) 2017-08-18 - LG 0800

(在我上面的代码中测试 print_r 和 echo 的结果)

我不会用每个日历日的循环和单元格生成代码来打扰您,但在其中,我有以下内容:

<?php 
foreach($rota_initials_loop_array as $initials_value):
echo $initials_value
endforeach;
}
?>

但我绝对没有在每一天的单元格中打印任何数据。我不太清楚为什么。主要是因为这是我第一次接触 PHP 中的数组。我什至不知道我是否应该为此使用数组?我让它完美地工作,只返回 1 行,那是在我将 $row 变成 while 循环等之前。

我愿意听取其他方面的建议吗?本质上,我想在每一天的单元格中得到 2x div,其中包含每个工作人员的首字母和轮类,所以 “DB - 1430” 在第 X 天的一个 div 和 “LG - 0800" 在同一天 X 的下面的另一个 div 中。然后 Y 天也一样。

最佳答案

Essentially I want to end up with 2x div's in each day cell, that contain intials and shift of each staff member, so "DB - 1430" in one div in day X and "LG - 0800" in another div below it in the same day X. Then the same for day Y.

因此,您需要生成以日期为键的数组。类似这样的东西:

$data = [
'day-x' => [
['DB', '1430'],
['LG', '0800'],
],
'day-y' => [
...
]
];

即使您已尝试彻底解释现有代码,但我不能说我可以将数据结构可视化,因此必须调整下面的 while 循环以适应您的数据。

假设您以某种方式获取每一行中数据的所有树组件(日期、初始值、类次),您可以获得的数组形状与我在上面给出的类似:

$data = [];
while($row=mysqli_fetch_assoc($result)) {
if(!array_key_exists($row['date'], $data)) {
$data[$row['date']] = [];
}
$data[$row['date']][] = [$row['initials'], $row['shift']];
}

在这一点上,如果您进行 json_encode 并将数据发送到浏览器,您会过得更好。这虽然需要进行重大更改(使用 ajax 获取日历数据并使用 javascript 呈现)。如果你想继续在 PHP 中生成 html,下面是你如何使用 $data 数组:

$html = '';
foreach($data as $date => $events) {
$html .= '<div class="day">
<span class="day-number">' . $date . '</span>';
foreach($events as $event) {
$html .= '<span class="event">' . $event[0] . ' - ' . $event[1] . '</span>';
}
$html .= '</div>';
}

关于PHP数组循环+MySQL数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45654201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com