динамические опции переключателей для нескольких вопросов, отправка неверных данных массива - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть форма для опросов.Вопросы находятся в одной таблице, а возможные ответы (pr) - в другой.Когда ответ дается, поле pr, pr_count, будет увеличено на единицу.

Проблема в том, что в строке ввода формы я пробовал разные методы для получения массива.
В настоящее время массив, который я получаю:

survey => 1
1 => 3
2 => 4
submitted => submitted
confirm => Submit Survey

Все, что мне нужно, это 1=>3 и2=>4 Это был бы вопрос 1, ответ был pr_id 3 Отлично!как мне получить это без опроса, подать и подтвердить?`

echo '<form method="post"action="/survey1">';
echo '<input type="hidden" name="survey" value="'.$survey.'">';
while ($i <= $qcount){
    //query gets questions  for a particular survey 
    $stmt = $link->prepare('SELECT question_num, survey_question.question_text as question, survey_question.question_id
    FROM survey_question
    WHERE survey_id = ?
    AND question_num = ?
    ORDER BY survey_question.question_num');
    $stmt->execute(array($survey, $i));
        while ($row = $stmt->fetch()) { 
            echo $row['question'] . "<br>";
    //query gets possible responses
                $stmt2 = $link->prepare('SELECT question_num, pr_num, survey_question.question_id, survey_pr.pr_text as possible, pr_id 
                FROM survey_question, survey_pr 
                WHERE survey_id = ?
                AND question_num = ?
                AND survey_question.question_id = survey_pr.question_id 
                ORDER BY survey_question.question_num, pr_id');
                $stmt2->execute(array($survey, $i));
                    while ($row2 = $stmt2->fetch()) {   
                    $qid = $row2['question_id'];
                    $prid= $row2['pr_id'];

                        echo  '<input type="radio" name="'.$qid.'" value="'. $prid .'">'.$row2['possible'].'<br> ';

            }
            }
        $i++;   
            }

    echo '<input type="hidden" name="submitted" value="submitted"/>';
    echo '<input name="confirm" type="submit" class="button" value="Submit Survey"/>';  

1 Ответ

0 голосов
/ 05 декабря 2018

Полученный массив результатов представляет собой всю отправленную вами форму (все поля ввода).

Итак, чтобы удалить survey => 1 из полученного массива, вам нужно удалить строку # 2 из вашего примера:

echo '<input type="hidden" name="survey" value="'.$survey.'">';

Значения submitted => submitted и confirm => Submit Survey взяты из двух последних строк вашего примера:

echo '<input type="hidden" name="submitted" value="submitted"/>';
echo '<input name="confirm" type="submit" class="button" value="Submit Survey"/>';

Чтобы сохранить все данные опроса без каких-либо дополнительных полейВы можете удалить неиспользуемые скрытые входы и использовать кнопку отправки без свойства name, например:

echo '<form method="post" action="/survey1">';
while ($i <= $qcount) {
    // your loop as is
}
echo '<input type="submit" class="button" value="Submit Survey" />';
echo '</form>';
...