チューターIDがセッションチューターIDと一致する場合にコードを変更できるように、このテーブルを結合しようとしています。ただし、生成するカレンダーには複数の結果が表示されます。
以下は現在のPHPコードですが、テーブル内に複数のチューターIDがあるため、エントリが複製されています。これを変更する方法がわかりません。
<?php
$sqlAssignments = "SELECT * FROM tbl_assignments LEFT JOIN tbl_tutorModules ON tbl_assignments.module_code = tbl_tutorModules.module_code"; //
$qryAssignments = mysqli_query($con, $sqlAssignments); // running the query
while($rowAssignment = mysqli_fetch_assoc($qryAssignments)){
if ($_SESSION["ID"] == $rowAssignment['tutor_id']) {
echo "{ title: '" . $rowAssignment['assignment_name'] . "', start: '" . $rowAssignment['hand_in_date'] . "', end: '" . $rowAssignment['hand_in_date'] . "', url: 'view/assignments.php?id=" . $rowAssignment['assignment_id'] . "', color: '#f1f1f1'},";
} else {
echo "{ title: '" . $rowAssignment['assignment_name'] . "', start: '" . $rowAssignment['hand_in_date'] . "', end: '" . $rowAssignment['hand_in_date'] . "', url: 'view/assignments.php?id=" . $rowAssignment['assignment_id'] . "'},";
}
}
?>
現時点での実際の結果は、tutorModulesに複数のチューターがある場合、出力はカレンダーの結果と重複することです。
ありがとう
編集:いくつかのサンプルデータを含むテーブルは次のようになります
tbl_tutorModules
con_id module_code tutor_id
2 ISYS30025 1
3 ISYS30025 2
tbl_assignments
assignment_id
module_code
assignment_name
assignment_weight
set_date
hand_in_date
hand_in_method
assignment_type
期待される出力は、これらが複製されないことです。
特定の家庭教師が課題に関与しているかどうかを知りたい。したがって、クエリで検出できるように、チューターIDをDBMSに渡します。
SELECT
assignment_id, assignment_name, hand_in_date,
case when module_code in (SELECT module_code FROM tbl_tutorModules WHERE tutor_id = ?)
then 'yes' else 'no'
end as tutor_involved
FROM tbl_assignments
ORDER BY assignment_id;
ご覧のとおり、結合された結果には関心がないため、テーブルを結合しません。でレコードを検索したいだけですtbl_tutorModules
。IN
またはEXISTS
SQLを使用して、別のテーブルのレコードを検索します。
mysqliでDBMSにパラメータを渡す方法はこちらをご覧ください:http://php.net/manual/en/mysqli.prepare.php
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加