#php
#php
Вопрос:
Я работаю над своим школьным проектом, веб-сайтом, где администратор (учитель) может создавать тесты и предоставлять их учащимся. Прошло всего 4 месяца с тех пор, как я начал работать с PHP, и я внезапно застрял с формами.
Когда администратор нажимает кнопку для создания теста, открывается страница questionsCount.php , это содержит простую форму, где администратор дает название тесту и указывает, сколько вопросов будет в тесте.
скрипт отправляет данные в newTest.php
<?php
$nazovTestu = $_POST['nazovTestu'];
$pocetOtazok = $_POST['pocetOtazok'];
for($i = 1; $i <= $pocetOtazok; $i ){
echo "<p class='pCenter'> Otazka: $i";
stav();
}
?>
Как вы можете видеть, в нем есть цикл, который вызывает функцию stav() из скрипта под названиемnewQuestion.php
<?php
function stav(){
echo " <br><br><br>
<form>
<table>
<tr>
<td> <textarea class='otazkaField' name='otazkaName' id='' cols='30'
rows='5'></textarea> </td>
</tr>
<tr class='trBreak'>
</tr>
<tr>
<td>Spravna odpoved: </td>
</tr>
<tr>
<td>A<input type='radio' name='moznostA'> <input type='text'> </td>
</tr>
<tr>
<td>B<input type='radio' name='moznostA'> <input type='text'> </td>
</tr>
<tr>
<td>C<input type='radio' name='moznostA'> <input type='text'> </td>
</tr>
<tr>
<td>D<input type='radio' name='moznostA'> <input type='text'> </td>
</tr>
</table>
</form> <br><br><br><hr>";}
?>
Таким образом, в основном, когда администратор вводит название теста и количество вопросов и нажимает кнопку отправки, newtest.php скрипт открывается с количеством форм, таким же, как количество вопросов.
Теперь я должен реализовать кнопку, которая просто сохраняет все вопросы и ответы в базу данных. Но я не уверен, как я могу сделать это с помощью одной кнопки. Я не думал о другом решении, таком как использование JavaScript, потому что мои навыки JS довольно бедны, и я действительно начинающий PHP.
Комментарии:
1. Переместите
<form>
теги изstav()
функции в HTML. Перед закрытием<form>
добавьте submit<button>
. Затем вы получите все свои ответы в$_POST
переменной. Не забудьте оaction
иmethod
атрибутах вашей<form>
группы, и не забудьте иметь разныеname
атрибуты для каждой вашей радиогруппы<input>
.
Ответ №1:
поместите все в ту же форму, из которой вы удалили тег form newTest.php
и для newQuestion.php измените свой код следующим образом :
echo '<form>';
for($i = 1; $i <= $pocetOtazok; $i ){
echo "<p class='pCenter'> Otazka: $i";
stav();
}
echo '</form>';
Комментарии:
1. Это само по себе не поможет, все переключатели будут считаться принадлежащими к одной группе, тогда …
name
атрибут должен быть соответствующим образом изменен, чтобы сохранить ту же функциональность, что и раньше.2. измените название переключателей, вы можете сделать это с помощью счетчика вашего цикла ‘for’, например, name=’moznostA’ станет name=’moznostA_$ i’. вы можете проанализировать это после
3. Я сделал это, так что прямо сейчас это выглядит как эта ссылка , но когда я пытаюсь отобразить ссылку для ввода, даже если я задаю только 1 вопрос внутри теста, это выдает мне следующее: Обратите внимание: Неопределенный индекс: otazkaName_ $ i в C:xampphtdocstiu_projekt_3_19_19phptestovaniesaveTest.php в строке 11 обратите внимание: неопределенный индекс: moznostA_$ i в C:xampphtdocstiu_projekt_3_19_19phptestovaniesaveTest.php в строке 12 ………………
4. Проблема решена. Я использовал массивы, и они в настоящее время работают.
Ответ №2:
Лучшим подходом для этого было бы фактическое отображение начала формы перед рассмотрением любых вопросов
echo " <br><br><br>
<form>
<table>";
for($i = 1; $i <= $pocetOtazok; $i ){
echo "<p class='pCenter'> Otazka: $i";
stav();
}
echo
" <input type='submit' value='save'>
</table>
</form> <br><br><br><hr>";
Не забудьте указать действие формы и т.д.
Ответ №3:
Вам нужно определить действие формы, метод и кнопку отправки вне вашей функции.
<?php
echo " <br><br><br>
<form action="answer.php" method="post" >
function stav(){
$z =
<table>
<tr>
<td> <textarea class='questionField' name="questionName".$z id='' cols='30'
rows='5'></textarea> </td>
</tr>
<tr class='trBreak'>
</tr>
<tr>
<td>Select the answer: </td>
</tr>
<tr>
<td>A<input type='radio' name='possibilityA' value ='1'> Vaša možnosť1 </td>
</tr>
<tr>
<td>B<input type='radio' name='possibilityA' value ='2'> Vaša možnosť2 </td>
</tr>
<tr>
<td>C<input type='radio' name='possibilityA' value ='3'> Vaša možnosť3 </td>
</tr>
<tr>
<td>D<input type='radio' name='possibilityA' value ='4'> Vaša možnosť4 </td>
</tr>
</table>
<br><br><br><hr>";
$z ;
}
<input type="submit">
</form>
?>