HTML-теги ввода текста, созданные с помощью JavaScript, не POST при отправке формы - PullRequest
0 голосов
/ 12 июня 2018

У меня есть форма, которая запрашивает историю трудоустройства, где вы подали заявление в колледж и т. Д. Так, например, для колледжей, в которые они обратились, у меня сначала есть одно текстовое поле, а внизу есть кнопка, которая вызывает функцию javascript для добавления другоговвод текста прямо под ним.Когда я впервые создавал эту форму, я делал это с несколькими различными частями данных, а затем, когда они были отправлены, я получал их из $_POST и помещал их в массивы, а затем добавлял каждый элемент массива в соответствующую таблицу в моей базе данных.Однако внезапно я больше не могу отправить свою форму и получаю сообщение о том, что я пытался получить неопределенный индекс.Однако, когда я проверяю ввод текста в моем браузере, они правильно названы.Я прочитал, что я должен назвать их college[], чтобы они все вошли в массив, но это также не сработало .... что теперь?

js:

var numcol = 1;
function addnewschool(){
 numcol++;
 var container = document.getElementById("collegecontainer");
 container.appendChild(document.createTextNode(numcol));
 var input = document.createElement("input");
 input.type = "text";
 input.name = 'applied'+numcol;
 container.appendChild(input);
 container.appendChild(document.createElement("br"));}

html:

<p class="text-dark mb-4">List the Colleges you have applied to:<br>
<div id="collegecontainer" name="collegecontainer">
<input type="text" name='applied1'><br>
</div>
<input type="button" id="addcollege" name="addcollege" value="Add College" 
onClick="addnewschool()"><br>
</p>

php:

$applied = array();
foreach($_POST['applied'] as $value){
  array_push($applied, $value);
}

Обновление: ОК, поэтому я изменил его на другой, и это не сработало, поэтому я решил просто скопировать более раннюю версию, которая былаработая и вставьте его в правильное расположение.И это сработало ... Так что теперь, когда это было исправлено, я продолжил добавлять к нему.Я добавил «required» к нескольким тегам, немного изменил стиль и немного изменил свой файл javascript.Но сейчас у меня те же проблемы, что и раньше.Все мои POST-массивы имеют только первое значение.Что я мог добавить, что это изменило?У кого-нибудь когда-нибудь были такие проблемы?

Ответы [ 3 ]

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

Назовите свои поля ввода текста applied[], и при обработке формы значение записи $_POST['applied'] будет уже заполненным массивом, однако было заполнено много записей.

Чтобы получитьданные в вашу таблицу:

foreach ($_POST['applied'] as $id => $applied) { 

    $sql = "INSERT INTO Colleges(id, college) VALUES('$id','$applied')"; 

    if($conn2->query($sql) === TRUE){ 
        echo "New Record created successfully"; 
    } else { 
        echo "Error: " . $sql . "<br>" . $conn2->error; 
    } 
}  // end of foreach
0 голосов
/ 12 июня 2018

Вам не нужно добавлять разные имена для каждого входа.Просто используйте applied[] во всех входных именах.

Чтобы получить массив в PHP, просто используйте $_POST['applied'].

. Если вы хотите использовать каждое из них позже, вы можете использовать foreach, например

foreach ($_POST['applied'] as $value) {
    // Do what you want. Retrieve the value using $value
}

или любой другой метод, который вы предпочитаете.

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

Ваш первый дополнительный ввод должен иметь индекс «apply1», а не «apply2»

, посмотрите на:

var numcol = 1; // put this to 0
function addnewschool(){
numcol++; // or move this to the end of the function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...