За последние 24 часа нас посетили 37966 программистов и 7865 роботов. Сейчас ищут 1718 программистов ...

Клонирование HTML формы и POST всех клонов в БД

Тема в разделе "PHP для новичков", создана пользователем star112, 14 сен 2022.

  1. star112

    star112 Новичок

    С нами с:
    8 май 2021
    Сообщения:
    6
    Симпатии:
    0
    Добрый день!
    Пытаюсь решить задачу клонирования и отправки всех клонов в БД.

    Есть скрипт, который клонирует содержание div id="FormForClone" и вставляет содержимое в div id="NewForm". Ниже прикрепляю скрипт и HTML форму.

    Код (Javascript):
    1. <script>
    2. function clone()
    3. {
    4. var NewForm = document.getElementById('NewForm');
    5. var clonning = document.querySelector('#FormForClone').cloneNode(true);
    6. NewForm.appendChild(clonning);
    7. }
    8. </script>
    HTML:
    1. <div class="container">
    2.       <div id="FormForClone">
    3.         <form method = "post" action = "multi_add_onclick.php">
    4.           <div class='form-group'>
    5.            <input type="text" name = "id" >
    6.           </div>
    7.       </div>
    8.             <div id="NewForm">
    9.              
    10.             </div>
    11.              <div class='form-group'>
    12.               <button class="btn btn-info" name = "Add_id">Add permission(s)</button>
    13.              </div>
    14.         </form>
    15.          
    16.            <button onclick="clone()" class="btn btn-info" name = "new_form"  >New form</button>
    17.      </div>
    Далее вставка в PHP по name = "id". В примере стоит id 1200, которому нужно присвоить несколько разных клонированных значений.

    PHP:
    1. <?php
    2.  
    3. $insert_pala = "INSERT INTO p_ala (rentnik_id, p_ala_id) VALUES ('1200', '$_POST[id]')";
    4.                   if($_POST[id] == NULL)
    5.                       {
    6.                       }
    7.                   else
    8.                       {
    9.                   $insert_new_pala  = mysqli_query($connection, $insert_pala);
    10.                       }
    11. ?>
    Если клонировать форму, то вместе с ней клонируется и name = "id" и в БД передается только одно первое введенное значение. Пытался вместо id поставить переменную и увеличивать ее на единицу при каждом клонировании, чтобы каждый раз получать уникальное значение для POST. т.е. первое значение переменной =1 и при каждом нажатии на кнопку New form ловить isset $_POST(new_form) и увеличивать значение на 1. Но вот с button это не срабатывает, а если поменять на input type = "submit", то счетчик работает, но перестает работать клонирование.

    Буду рад любой помощи! Заранее спасибо.
    P.S. Вероятно есть и какие-то другие методы решения, но вот вчера гуглил целый день и как-то прямо ничего явного не нашел.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    ниче не понятно...
    чего клонируете, какие формы .. какой вообще смысл...
    форму в форму вставляете?

    Вангую.... что вам нужно добавлять в ОДНУ! текущую форму, ДИНАМИЧЕСКИ - "на лету" дополнительные поля... видимо это
    HTML:
    1.  <input type="text" name = "id" >
    Если так то надо делать все по другому ))) в частности хотите несколько значений передавать - это массив...
    для начала назовите тогда
    HTML:
    1. name="id[]"
    потом измените php код для добавления из массива значений
     
  3. star112

    star112 Новичок

    С нами с:
    8 май 2021
    Сообщения:
    6
    Симпатии:
    0
    Боже...Это оказалось так просто! Убил два дня и да, не обратил вдобавок внимания, что клонирую каждый раз и саму форму. Большое спасибо!