我有三张桌子
- questions (question_id, name_of_question)
- events (event_id, name_of_event, etc)
- event_questions (question_to_event_id, question_id, event_id)
当用户编辑事件(即事件表中的一行)时,他们会出现一系列问题
- Sample Question 1
- Sample Question 2
- Sample Question 3...and so on
我想要的方式是检查一些复选框(从上次创建条目或编辑条目),但其他复选框将保持未选中状态。无论哪种方式,所有可能的问题都应列为选项。
现在我只是(错误地)
$query = 'SELECT id, name
FROM questions
INNER JOIN event_questions
ON event_questions.question_id = questions.id
WHERE event_questions.event_id LIKE ' . $event_id;
$rows = $wpdb -> get_results($query);
foreach ($rows as $key=>$value) {
$question_id = $value->id;
$question_str = $value->name;?>
<input type='checkbox' checked='yes' value='<?php echo $question_id; ?>'
name='question_ids[]' /> <?php echo $question_str; ?><br /><?php
}
然而,这样做只是显示已选中的复选框(而不是所有可能的复选框)并且我将值多次传递到表中(因此带有问题#1和#2的事件成为问题#1,#2和#2)这根本不是我想要的。
有没有办法显示所有复选框,选中正确的复选框(将事件与正确选择的问题相匹配)并正确更新?
答案 0 :(得分:1)
从questions
表,LEFT OUTER JOIN
到event_questions
表格中进行选择。这将为您提供所有问题,以及来自NULL
表的event_questions
值,其中该问题与事件无关。那些是未经检查的。