Как получить «липкие» значения формы при печати элементов формы из массива -PHP - PullRequest
0 голосов
/ 27 апреля 2011

Итак, мне нужно создать новые огромные формы опросов, и я получаю вопросы от БД и добавляю их в массив перед печатью. Тип ввода также исходит из массива. Например, чтобы сделать ввод текста следующим образом:

if ($type == 'text'){//text input
$Line[] .= "<tr><td><input type='text' name='question_$q_id' $attributes   class='$classes' value=\"";
$Line[] .= '<?php if (isset($_POST[\"question_$q_id\"])){echo $_POST[\"question_$q_id\"];}?>';
$Line[] .= "\"></td></tr>\n";

Так что проблема, конечно, в том, если isset php part. Когда все сделано так, он просто создает строковое значение с php-кодом.

Каким образом мне нужно добавить php-код в качестве php-кода?

Я получаю значения в форму просто так:

foreach ( $Line as $q_id => $line ) {
echo "$line";

Я попробовал функцию eval, но она выдает ошибку - я не уверен, как правильно ее использовать.

В любой форме, которую я использовал до того, как все элементы были добавлены, просто используя «echo» в цикле, но кажется, что создание и заполнение массива вопросами, а затем его извлечение имеет больше смысла, однако делает значения полей липкими это проблема для меня. Есть ли простой способ исправить это, или я должен просто вернуться к отображению элементов в цикле выборки?

1 Ответ

0 голосов
/ 27 апреля 2011
if ($type == 'text'){//text input

  $Line[] .= "<tr><td><input type='text' name='question_{$q_id}' {$attributes}   class='{$classes}' value=\"";

  if (isset($_POST["question_{$q_id}"]))
    $Line[] .= $_POST["question_{$q_id}"];

  $Line[] .= "\"></td></tr>\n";

}

На самом деле, лучшим способом было бы:

if ($type == 'text'){//text input

  $Line[] .= "<tr><td><input type='text' name='question_{$q_id}' {$attributes}   class='{$classes}' value=\"".isset($_POST["question_{$q_id}"])?$_POST["question_{$q_id}"]:null."\"></td></tr>\n";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...