PHP + mySQL: три таблицы, редактируйте запись с несколькими флажками - PullRequest
0 голосов
/ 20 июля 2011

У меня есть три таблицы

- 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 Ответ

1 голос
/ 20 июля 2011

Выберите из таблицы questions, LEFT OUTER JOIN до таблицы event_questions. Это даст вам все вопросы и значения NULL из таблицы event_questions, где этот вопрос не связан с событием. Это непроверенные.

...