编辑:在预览中,表格显示正确。一个mod能帮我纠正一下吗?我不知道我做错了什么。
我有三张桌子。
表1:tbl_用户
表2:tbl_位置
身份证件
|
地方
|
1.
|
城市1
|
2.
|
城市2
|
3.
|
城市3
|
表3:tbl_用户位置
fk_用户
|
fl_位置
|
1.
|
1.
|
2.
|
1.
|
2.
|
2.
|
现在我有了一个HTML页面来编辑用户数据
我有两个问题。一个用于读取用户数据,另一个用于位置。
public function readOneUser($id)
{
$stmt = $this->pdo->prepare("SELECT * FROM tbl_user WHERE id = :id");
$stmt->execute([
'id' => $id
]);
$stmt->setFetchMode(PDO::FETCH_CLASS, "administration\\CMR\\UserModel");
$res = $stmt->fetch(PDO::FETCH_CLASS);
return $res;
}
没关系。一切都很好。我有普通的用户数据,比如用户名,邮件,电话。。。
现在我想要一个所有位置的完整列表,但是(这就是问题所在)应该检查分配给用户的所有位置。不应选中未分配用户的位置,而应列出这些位置。
<?php
foreach ($readLocations AS $location):
?>
<input type="checkbox" name="location" <?= htmlspecialchars($location->id == $location->fk_location) ? "checked" : "" ?> value="<?= $location->id; ?>"><span><?= $location->location; ?></span><br>
<?php
endforeach;
?>
我有这个疑问。我知道这是错误的,但这是我所拥有的最好的。希望你能帮我改正。
public function readAllLocationsForEdit($id)
{
$stmt = $this->pdo->prepare("
SELECT tbl_location.*, tbl_userlocation.*
FROM tbl_location
LEFT JOIN tbl_userlocation ON tbl_userlocation.fk_location = tbl_location.id
WHERE fk_user = :id
GROUP BY location");
$stmt->execute([
'id' => $id
]);
$res = $stmt->fetchAll(PDO::FETCH_CLASS, "administration\\CMR\\LocationModel");
return $res;
}
通过这个,我得到了所有分配用户的位置,但没有分配用户的位置。我知道WHERE子句是不正确的,但我测试的所有其他语句都没有给出我想要的结果。