[英]How to iterate through an SQL table and assign values to another SQL table from a predefined table?
我正在創建一個程序,該程序從一個表中獲取當前的輪班制,並根據其userIDaff表中的staffID為用戶提供另一個名為schedule的表中的輪班制。
我只是想讓它在每個日期循環遍歷每個工作人員,並從表中的預設班次中隨機分配一個班次。
我的第一個理論是遍歷userStaff表,在該表中從可用於班次位置的班次數量中隨機抽取一個整數,然后選擇一個,並將其分配到計划表中。 但是,它一直沒有提供任何值,而只是通過一個staffID查找。
我找不到任何如此具體的內容。 我遇到的錯誤是:沒有分配值,並且僅迭代一個用戶ID?
UserStaff表示例:
ID-1,2,3
用戶名-jenk3194,jake1233,rodger1293
位置-BM,CT,CM
班次表示例:
ID-1,2,3
shiftstart-09:00:00、12:00:00、16:00:00
shiftend-17:00:00、21:00:00、00:00:00
移位人員-BM,CT,CM
進度表示例:
ID-1,2,3
staffID-1,2,3
日期-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>";
}
此處的代碼是包含全年數據的工作代碼。 因此,我數據庫中的所有6位用戶得到2190條結果。 我的預設移位表中的每個位置都有17個結果,因此它遍歷所有這些結果。
#echo "User Schedule Populated";
$sql="SELECT id FROM userStaff";
$result = mysqli_query($conn, $sql);
$allID = Array();
while ($row=mysqli_fetch_array($result,MYSQLI_ASSOC))
{
$allID[] = $row['id'];
}
foreach($allID as $idR)
{
$date = "2017-01-01";
$rowID = $idR;
echo "RowID: " . $rowID . "<br>";
echo "Count 1: " . $counter;
$begin = new DateTime($date);
$end = new DateTime(date('Y-m-d', strtotime($date . '+ 1 year')));
$interval = new DateInterval('P1D'); // one day
$daterange = new DatePeriod($begin, $interval, $end);
foreach ($daterange as $date)
{
$fDate = $date->format("Y-m-d");
$counter ++;
echo "<br> Count 1: " . $counter . "<br>";
echo "<br>";
$sql = "SELECT position FROM userStaff WHERE id ='$rowID'";
echo $sql;
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$int = mt_rand(1,17);
echo "<br>";
$sql = "SELECT * FROM shifts WHERE shiftnum = '$int' AND shiftperson = '" . $row['position'] . "'";
$result = mysqli_query($conn, $sql);
echo $sql;
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$shiftSt = $row['shiftstart'];
echo "<br> Shift St: " . $shiftSt;
$shiftEn = $row['shiftend'];
echo "<br> Shift En: " . $shiftEn;
$sql = "INSERT INTO schedule (staffID, cdate, starttime, endtime) VALUES ('$rowID','$fDate','$shiftSt','$shiftEn')";
echo "<br> Insert: " . $sql;
mysqli_query($conn, $sql);
}
}
die();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.