Добавить в базу данных массив полей ввода, созданных с помощью JavaScript - PullRequest
0 голосов
/ 30 июня 2018

Я пытался найти решение повсюду для своего вопроса, и я не могу найти его, поэтому я решил задать его сам. Ну, я работаю над проектом, где я создаю несколько полей ввода с помощью JavaScript, вот код:

HTML:

<form id="buildyourform">
<legend>Registration Page</legend>
    <hr>
<input type="button" value="New Registry" class="add" id="add" />
<input type="submit" value="Save" id="submitForms" />
    <hr>

    <script>myscript</script>

</form>

Код JavaScript внутри тегов <script> выше:

<script>
        $(document).ready(function() {
            $("#add").click(function() {
                var lastField = $("#buildyourform div:last");
                var intId = (lastField && lastField.length && lastField.data("idx") + 1) || 1;
                var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/>");
                fieldWrapper.data("idx", intId);
                var fName = $("<input type=\"text\" class=\"fieldname\" placeholder=\"Name of New Registry\" name=\"field\" />");
                var removeButton = $("<input type=\"button\" class=\"remove\" value=\"x\" />");

                removeButton.click(function() {
                    $(this).parent().remove();
                });

                fieldWrapper.append(fName);
                fieldWrapper.append(removeButton);
                $("#buildyourform").append(fieldWrapper);
            });
        });
</script>

Дело в том, что это работает, это позволяет мне динамически создавать и удалять поля ввода, проблема в том, что все они генерируются с одним и тем же именем, поэтому мой вопрос: как мне добавить каждое из них и их значение в моей базе данных? Это мой текущий php код:

<?php
    require_once 'conector_superadmin.php';
    $link = connect($conn);

    $NameRegistryInput = $_POST['field'];

    $sql = "INSERT INTO `database` (`idRegistryName`, `Name`) VALUES (NULL, '$NameRegistryInput');";

    mysqli_query($link, $sql);
?>

Если бы это были статические поля, у меня не было бы проблемы, но тот факт, что они динамические, застрял, поэтому любая помощь будет принята с благодарностью.

EDIT

Мой новый PHP-код теперь выглядит следующим образом (я также добавил «[]» к имени в поле ввода, теперь он выглядит как «field []»):

require_once 'conector_superadmin.php';
    $link = connect($conn);


        foreach ($_POST['field'] as $NameRegistryInput) {
            $sql = "INSERT INTO `database` (`idRegistryName`, `Name`) VALUES (NULL, '$NameRegistryInput');";
            mysqli_query($link, $sql);
        }

Это все еще не работает.

1 Ответ

0 голосов
/ 30 июня 2018

PHP обрабатывает сообщение формы, содержащее несколько элементов с тем же именем, что и массив - , пока вы добавляете [] к атрибуту имени

Итак,

var fName = $("<input type=\"text\" class=\"fieldname\" placeholder=\"Name of New Registry\" name=\"field[]\" />");

тогда

foreach ($_POST['field'] as $NameRegistryInput) {
  $sql = "INSERT INTO `database` (`idRegistryName`, `Name`) VALUES (NULL, '$NameRegistryInput');";
  mysqli_query($link, $sql);
}

Теперь я вижу, как вы изобретаете идентификаторы в javascript для каждого элемента, который вы добавляете на страницу. Я думаю, вы обнаружите, что вам это вообще не нужно.

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