PHP + mySQL:三个表,编辑一个带有多个复选框的条目

时间:2011-07-19 22:14:08

标签: php mysql join checkbox

我有三张桌子

- 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[]' />&nbsp;&nbsp;<?php echo $question_str; ?><br /><?php
}

然而,这样做只是显示已选中的复选框(而不是所有可能的复选框)并且我将值多次传递到表中(因此带有问题#1和#2的事件成为问题#1,#2和#2)这根本不是我想要的。

有没有办法显示所有复选框,选中正确的复选框(将事件与正确选择的问题相匹配)并正确更新?

1 个答案:

答案 0 :(得分:1)

questions表,LEFT OUTER JOINevent_questions表格中进行选择。这将为您提供所有问题,以及来自NULL表的event_questions值,其中该问题与事件无关。那些是未经检查的。