html-форма с не отправленной внутренней таблицей

#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>