【发布时间】:2017-03-15 17:51:33
【问题描述】:
我正在创建一个程序,该程序从一个表中获取当前所做的班次,并根据来自 userStaff 表的员工 ID 在另一个名为 schedule 的表中为用户提供班次。
我只是在寻找它在每个日期循环遍历每个工作人员,并从表中的预设班次中给他们一个随机班次。
我的第一个理论是,遍历 userStaff 表,其中一个随机整数来自可用于轮班位置的轮班数量,然后选择一个并将其分配到日程表上。但是,它一直没有任何值,并且只查看一个员工 ID。
我找不到任何与此一样具体的内容。我遇到的错误是:没有分配任何值,并且只迭代了一个用户 ID?
UserStaff 表示例:
ID - 1、2、3
用户名 - jenk3194、jake1233、rodger1293
位置 - BM、CT、CM
班次表示例:
ID - 1、2、3
班次开始 - 09:00:00、12:00:00、16:00:00
shiftend - 17:00:00, 21:00:00, 00:00:00
shiftperson - BM、CT、CM
时间表示例:
ID - 1、2、3
员工 ID - 1、2、3
cdate - 2017-01-01、2017-01-01、2017-01-01
开始时间 - 12:00:00、16:00:00、09:00:00
结束时间 - 21:00:00、00:00:00、17:00:00
这是我当前的完整代码:
$sql = "SELECT * FROM userStaff";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0)
{
// output data of each row
while($row = mysqli_fetch_assoc($result))
{
$date = "2017-03-13";
#$date = date("Y-m-d");
$begin = new DateTime($date);
$end = new DateTime(date('Y-m-d', strtotime($date . '+ 7 day'))); // you can change + 1 year to what you need
$interval = new DateInterval('P1D'); // one day
//$interval = new DateInterval('P1W'); // one week
$daterange = new DatePeriod($begin, $interval, $end);
foreach ($daterange as $date) { // loop through dates
$fDate = $date->format("Y-m-d");
$rowID = $row['id'];
$sql = "SELECT position FROM userStaff WHERE id = '$rowID'";
echo $sql;
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0 )
{
$int = mt_rand(1, 3);
$sql = "SELECT * FROM shifts WHERE id = $int AND shiftperson = '". $row['position'] . "'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0)
{
while ($row = mysqli_fetch_array($result)) {
$shiftSt = $row['shiftstart'];
$shiftEn = $row['shiftend'];
$sql = "INSERT INTO schedule (staffID, cdate, starttime, endtime) VALUES ('$rowID','$fDate','$shiftSt','$shiftEn')";
echo $sql . "<br>";
if (mysqli_query($conn, $sql))
{
echo "<br>Success<br>";
}
else
{
echo "<br>Failure<br>";
}
}
}
}
else
{
echo "Failed";
}
}
}
}
else
{
echo "<p>No Results</p>";
}
【问题讨论】: