Получить данные из таблицы HTML в PHP
У меня есть динамическая HTML-таблица, и я хочу получить данные из этой таблицы, используя метод POST. Можно ли сделать это? Какие еще способы вы бы порекомендовали для достижения этой цели. Вот простой пример из того, что я получил:
<html>
<form id="form1" method="post" action="process.php">
<table id="tblSample" name="tblSample">
<tbody>
<tr>
<td>
John Appleseed
</td>
<td>
Australia
</td>
</tr>
<tr>
<td>
Mary Poppins
</td>
<td>
USA
</td>
<tr>
</tbody>
</table>
</form>
</html>
Может быть, возможно сохранить информацию в массиве или переменной javascript, чтобы опубликовать ее в файле действий, я не уверен.
Я не знаю, имеет ли это какое-либо отношение, но таблица генерируется динамически. Строки и ячейки добавляются пользователем с использованием JavaScript.
Я очень ценю ваши ответы.
5 ответов
Доступ к таблице как таковой невозможен, если вы не используете элементы формы (input
, textarea
и т. д.) и добавить name
приписывать им; Затем вы можете получить доступ к своим элементам с $_POST
,
Если у вас есть ваши данные в таблице, лучший способ получить наши данные с помощью JavaScript, используя innerHTML
,
Вы можете попробовать использовать:
HTML:
<form id="form1" method="post" action="process.php" onSubmit="submitAction();">
<input type="hidden" name="table_content" id="table_content"/>
<input type="submit" name="submit" value="Send"/>
JavaScript:
function submitAction()
{
var form = document.getElementById("form1");
form.table_content.value = document.getElementById("tblSample").innerHTML;
return form.submit();
}
Вы можете назначить innerHTML
формы в переменную и использовать AJAX, чтобы отправить его обратно на сервер в виде строки, или сохранить его в textarea
и сделай то же самое. В любом случае, вам нужно разобрать строку, чтобы извлечь данные.
Таблица не является элементом управления формой и не будет передаваться как данные формы, даже если она включена в тег формы (как в вашем примере).
Если вы хотите отправить табличные данные, вам нужно будет использовать Javascript для их извлечения. Затем вы можете вставить данные в скрытый элемент формы или отправить данные с помощью вызова AJAX.
Это много способов для решения этой проблемы. Например: 1) Используйте ajax: поместите ваши данные в некоторый HTML-контейнер - например, span с именем класса 'formData_name', например, или с id = 'formData _' + name =, где name - это имя этих данных. Тогда вы в JS ищите весь этот промежуток и отправляете по ajax. Это очень просто, если вы используете jquery. В чистом js это тоже не сложно, но код будет больше.
2) Поместите ваши данные в некоторый html-контейнер, например, в span с именем класса 'formData_name' или с id = 'formData _' + name =, где name является именем этих данных. Кнопка "Bind submit", когда пользователь нажимает на кнопку "submit", вы создаете дополнительные скрытые поля ввода с именем adn и возвращаете true. 3) Вы можете отправить innerHTML по почте через связывающее событие submit и добавить скрытое поле для хранения innerHTML и проанализировать его на сервере. 4) Вы можете заменить все td для ввода при действии submit.
Но все эти решения не очень хороши, и если вы должны сделать что-то из этого, ваш архитектурный проект плох