Intereting Posts
Переменные сеанса PHP исчезают с перенаправлением заголовка Передавать аргументы из массива в php в конструктор Как реализовать веб-скребок в PHP? Ошибка сертификата SSL – SSL: невозможно получить сертификат локального эмитента Проверка строки для недопустимых символов с использованием регулярного выражения Объединить два массива и упорядочить этот новый массив по дате mysql_insert_id альтернатива postgresql Как определить частичную вертикальную / горизонтальную линию в изображении? Как чистить изображение с помощью PHP с моего сайта? Регулярное выражение для фильтрации параметров отслеживания URL-адресов в HTML Почему session_start необходим при использовании сеанса? PHP MySQLI Запретить SQL Injection Prestashop: переключите тему на лету и прочитайте cookie, чтобы проверить param в url ОШИБКА: не удалось найти драйвер – использование PDO с базой данных MS Access Функция PHP crypt () в JavaScript

PHP submit не публикует текст из полей ввода, генерируемых JS

У меня есть html-форма, содержащая таблицу текстовых входов, которая в конечном итоге будет использоваться для генерации запроса SQL INSERT. Проблема у меня есть моя таблица ввода вручную имеет 5 текстовых входов, то я дал пользователю возможность добавить больше. Эти дополнительные поля ввода создаются отлично, и когда я проверяю элементы на странице после их добавления, они имеют правильное имя, идентификатор, типы и т. Д. (Попытались опубликовать скриншот, чтобы дать лучшую идею, но я новый пользователь, поэтому не может – в любом случае обойти это ?!)

Проблема заключается только в том, что текст из первых 5 (те, которые я вручную ввел с помощью html-тегов) публикуется, когда я нажимаю кнопку отправки формы. Это потому, что он считывает данные до создания новых входов? Я чувствую, что это не должно быть, потому что я использую if (isset ($ _ POST ['save'])) {где 'save' – моя последняя кнопка отправки.

Таблица, которую я получил в моем html, выглядит следующим образом (извинения – это плохо выложенный / беспорядочный синтаксис, но в этом смысле он работает отлично):

edit: У меня есть две таблицы в одной форме; это не имеет значения? то есть:

<form action='createtable.php' method='post' border='0'> <table> <tr> <td><input type="button" value="Add column" onclick="addRowToTable();" /></td> <td><input class='strong' type='submit' value='Create Table' name='save' /></td> </tr> </table> <table name='columnnames' id='columnnames' border='0'> <tr> <!--start table row 1--> <td>Column 1:</td> <!--first item in row is just text--> <td><input type='text' name='col1' id='col1' /></td> <!--second item in row is input text box--> </tr> <!--end table row--> <tr> <!--start table row 2--> <td>Column 2:</td> <td><input type='text' name='col2' id='col2' /></td> </tr> <!--end table row--> <tr> <!--start table row 3--> <td>Column 3:</td> <td><input type='text' name='col3' id='col3' /></td> </tr> <!--end table row--> <tr> <!--start table row 4--> <td>Column 4:</td> <td><input type='text' name='col4' id='col4' /></td> </tr> <!--end table row--> <tr> <!--start table row 5--> <td>Column 5:</td> <td><input type='text' name='col5' id='col5' /></td> </tr> <!--end table row--> </table> </form> 

JavaScript, который я использую для добавления строк таблицы, приведен ниже:

 <script> function addRowToTable() { //get table var tbl = document.getElementById('columnnames'); //find length var numberRows = tbl.rows.length; // as there's no header row in the table, then iteration = numberRows + 1 var rowNumber = numberRows + 1; var row = tbl.insertRow(numberRows); // left cell var cellLeft = row.insertCell(0); var textBox = document.createTextNode('Column ' + rowNumber + ':'); cellLeft.appendChild(textBox); // right cell var cellRight = row.insertCell(1); var el = document.createElement('input'); el.type = 'text'; el.name = 'col' + rowNumber; el.id = 'col' + rowNumber; //el.onkeypress = keyPressTest; cellRight.appendChild(el); } </script> 

Я видел несколько вопросов, связанных с генерируемыми JS битами форм, которые не хотят правильно отправлять, используя $ _POST, но ответы на них кажутся довольно минимальными и задаются вопросом, может ли кто-нибудь помочь, поскольку я пытался считывать данные часами. Большое спасибо!

Вы проверили, что ваш тег формы написан правильно? (вы должны были включить его в свой вопрос: o))

 <form method=POST action="myURL"> [...] </form> 

Хотя это очень старый вопрос, я пишу ответ, если кто-то еще повторит его.

PHP-код не принимает значения из недавно добавленных полей ввода с помощью jquery, потому что все они имеют одинаковые атрибуты имени. Для этих типов динамически вводимых полей вам нужно установить имя в массив <input type="text" name "text[]"> . Когда вы пишете, $text= $_POST['text'] , текстовая переменная будет сохранять все значения из полей ввода с text[] имени text[] и сохранять их в виде массива.

Надеюсь, поможет. 🙂