我有這兩個 while 回圈。
- 環形。左側螢屏。顯示附加到任務的用戶。
$getcurrentusers = $conn->prepare("SELECT u.userid, u.username, u.Fname, u.inactive, r.userid, r.job_id FROM users AS u INNER JOIN job_responsible AS r ON u.userid = r.userid WHERE u.inactive = 0 AND r.job_id = $getPostID ORDER BY u.Fname");
$getcurrentusers->execute();
$resultgetcurrentusers = $getcurrentusers->get_result();
$getcurrentusers->close();
if ($resultgetcurrentusers->num_rows > 0) {
while($row = $resultgetcurrentusers->fetch_assoc()) {
echo $row["username"]." (".$row["Fname"].")<br />";
}
} else {
echo "Der er ikke valgt nogle ansvarlige til denne opgave.";
}?>
- 環形。右側螢屏。列出可以添加到任務的所有可能用戶
$getdepartmentview = $SetDepartmentView;
$explodegetdepartmentview = explode(",",$getdepartmentview);
$implodegetdepartmentview = "'".implode("','",$explodegetdepartmentview)."'";
$getusers = $conn->prepare("SELECT userid, username, Fname, inactive FROM users WHERE departmentid IN ($implodegetdepartmentview) AND inactive = 0 ORDER BY Fname");
$getusers->execute();
$resultgetusers = $getusers->get_result();
$getusers->close();
if ($resultgetusers->num_rows > 0) {
while($row = $resultgetusers->fetch_assoc()) {
echo "<input type=\"checkbox\" name=\"choose_responsible[]\" value=\"".$row["userid"].",\" />".$row["Fname"]."<br />";
}
}
問題是,我真的很想,當左側有匹配項時,輸入復選框在右側被“選中” 1. 回圈。
所以..
Loop 1 | Loop 2
name3 | name1
name5 | name2
name7 | name3 - Inputbox checked
name8 | name4
| name5 - Inputbox checked
| name6
| name7 - Inputbox checked
| name8 - Inputbox checked
| name9
| name10
有人可以幫我嗎?
uj5u.com熱心網友回復:
在第一個回圈中,您可以將 user_id 存盤在陣列中
$user_ids[] = $row["userid"]
在第二個回圈中,您檢查當前用戶 id 是否存在于先前保存的 $user_ids 陣列中
$checked = false;
if (in_array($row["userid"], $user_ids)) {
$checked = true;
}
uj5u.com熱心網友回復:
此任務演示了使用最佳查詢來避免多次訪問資料庫并避免結果集上的低效 php 行程。
$sql = <<<SQL
SELECT u.userid,
u.username,
u.Fname,
u.inactive,
r.userid responsibleUserId,
r.job_id
FROM users AS u
LEFT JOIN job_responsible AS r
ON u.userid = r.userid
AND r.job = ?
WHERE u.inactive = 0
ORDER BY u.Fname
SQL;
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $getPostID);
$result = $stmt->execute();
$users = $result->fetch_all(MYSQLI_ASSOC);
現在您擁有所需的所有資料,因此沒有更多理由訪問資料庫。
要列出分配給目標作業的用戶,請迭代關聯陣列的陣列并顯示job_id不為空的用戶。
foreach ($users as $user) {
if ($user['job_id']) {
printf('%s (%s)<br />', $user['username'], $user['Fname']);
}
}
要顯示所有用戶并有條件地檢查已經“負責”的名稱旁邊的復選框,請再次迭代陣列并依靠job_id來確定復選框。
foreach ($users as $user) {
printf(
'<input type="checkbox" name="choose_responsible[]" value="%d"%s/>%s<br />',
$user['userid'],
$user['job_id'] ? ' checked' : '',
$user['Fname']
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432745.html
