Отправка нескольких форм с помощью одной кнопки в PHP

#php

#php

Вопрос:

Я работаю над своим школьным проектом, веб-сайтом, где администратор (учитель) может создавать тесты и предоставлять их учащимся. Прошло всего 4 месяца с тех пор, как я начал работать с PHP, и я внезапно застрял с формами.

Когда администратор нажимает кнопку для создания теста, открывается страница questionsCount.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 скрипт открывается с количеством форм, таким же, как количество вопросов.

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> 
    ?>