#php #html #forms #html-table
#php #HTML #формы #html-таблица
Вопрос:
Мне нужно отредактировать веб-приложение, написанное на PHP и HTML. Есть открывающий <form>
и закрывающий </form>
тег. Между ними находится HTML-таблица для размещения полей формы. Внутри этой таблицы есть таблица, а поля формы также внутри этой внутренней таблицы, но они не отображаются в PHP при отправке страницы. Поля (и их значения) во внешней таблице являются. Как я могу начать с этим бороться?
<form>
<table>
<tr>rows of fields</tr>
<tr>
<table>
<tr>an inner table of stuff</tr>
</table>
</tr>
</table>
</form>
PS Я знаю, таблицы вместо CSS, это история для другого дня!
Комментарии:
1. Я не думаю, что это проблема PHP, я думаю, что проблема в «таблице внутри таблицы». Попробуйте удалить все форматирование (оставив только элементы формы) и посмотреть, сработает ли это тогда. Вот как вы могли бы начать устранять неполадки.
2. Убедитесь, что все элементы формы имеют допустимые атрибуты name . Лучше всего, если вы можете опубликовать HTML полностью, чтобы мы могли видеть. Попытайтесь
var_dump($_POST)
увидеть, что происходит.3. Внутренняя таблица будет размещена после внешней таблицы, так что это действительно должно сработать. Но лучше вместо этого проверьте свой HTML. Поможет вам быстрее получить лучшие результаты. И КСТАТИ: использование таблиц для форматирования форм может быть в порядке, это не идеально, но на самом деле есть причины для этого, особенно если вы не придирчивы к конкретным версиям браузера.
4. @PeeHaa я бы опубликовал HTML, но его массивный, но приведенный выше точный вырез
Ответ №1:
таблица внутри таблицы недопустима. Вместо этого сделайте это так
<form>
<table>
<tr>
<td>rows of fields</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>an inner table of stuff</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
Комментарии:
1. <td> (столбец) был отсутствующим ключом 🙂
Ответ №2:
Ответ заключается в том, чтобы убедиться, что HTML-код действителен: http://validator.w3.org /
Как только он подтвердится, он просто заработает.
Комментарии:
1. Это не общедоступный сайт, поэтому я не могу его использовать … Хотя это дало мне идею скопировать HTML, сгенерированный страницей PHP, куда-нибудь, где он общедоступен, чтобы я мог использовать валидатор, спасибо!
Ответ №3:
Это недопустимый HTML. <table>
теги и <tr>
теги не могут содержать другие <table>
теги, вам нужно, по крайней мере, использовать <td>
.
Комментарии:
1. Извините, я не понял, я обновлю свой исходный пост, внутренняя таблица находится внутри пары <tr>. Делает ли это ее действительной?
2. @javano, нет, это должно быть внутри
<td>
, а не<tr>
. Взгляните на документацию<table>
, особенно наTBODY
раздел .<tr>
Тег может содержать только<th>
<td>
теги or .3. @javano Нет, это не делает его действительным; второй
<table>
должен быть внутри a<td>
. Проблемы с формой, вероятно, связаны с тем, что браузер пытается исправить ваш HTML, что приводит к преждевременному закрытию формы. Такой инструмент, как Firebug или Web Inspector, должен показать это. Вероятно, это будет выглядеть примерно так:<form></form> <table></table>
вместо<form> <table></table> </form>
. Когда вы сталкиваетесь с недопустимым HTML (особенно при работе с таблицами), браузер может изменять порядок и закрывать вещи, пока это не будет иметь смысла.4. Удивительно, что с помощью Chrome я мог видеть, что это не так, и все отображалось правильно, как вы упомянули, <td> были недостающей частью 🙂
5. @javano, конечно, даже если HTML неверен, браузеры все равно будут отображать его, каждый по-своему. Это называется режимом причуд , и вам определенно не следует полагаться на него. Гораздо проще и надежнее написать правильный HTML.
Ответ №4:
попробуйте это:
<form>
<table>
<tr><td>rows of fields</td></tr>
<tr><td>
<table>
<tr><td>an inner table of stuff</td></tr>
</table>
</td></tr>
</table>
</form>