表格问题(在表格的早期结束)

时间:2010-09-10 18:27:11

标签: php html forms

我在mysql数据库上通过php运行查询。使用我的结果集,我正在迭代下表:

        $resultString = '<table>';
        $resultString .= '<tr>';
        $resultString .= '<th>Index</th>';
        $resultString .= '<th>Title</th>';
        $resultString .= '<th>File</th>';
        $resultString .= '<th>Template File</th>';
        $resultString .= '<th>Pretty URL</th>';
        $resultString .= '<th>Parent</th>';
        $resultString .= '<th></th>';
        $resultString .= '</tr>';

        while($data = mysql_fetch_assoc($results)){
            $resultString .= '<form class="myForm">' ."\n";

            $resultString .= '<tr>' ."\n";

            $resultString .= '<input type="hidden" name="index" value="' . $data['index'] . '">' ."\n";
            $resultString .= '<input type="hidden" name="title" value="' . $data['title'] . '">' ."\n";
            $resultString .= '<input type="hidden" name="file_name" value="' . $data['file_name'] . '">' ."\n";
            $resultString .= '<input type="hidden" name="template_file" value="' . $data['template_file'] . '">' ."\n";
            $resultString .= '<input type="hidden" name="child_of" value="' . $data['child_of'] . '">' ."\n";
            $resultString .= '<input type="hidden" name="pretty_url" value="' . $data['pretty_url'] . '">' ."\n";

            $resultString .= '<td class="indexTd">' . $data['index'] . '</td>' ."\n";
            $resultString .= '<td>' . $data['title'] . '</td>' ."\n";
            $resultString .= '<td>' . $data['file_name'] . '</td>' ."\n";
            $resultString .= '<td>' . $data['template_file'] . '</td>' ."\n";
            $resultString .= '<td>' . $data['pretty_url'] . '</td>' ."\n";
            $resultString .= '<td>' . $this->get_parent_select_list($data['child_of'],$data['index']) . '</td>' ."\n";
            $resultString .= '<td class="buttonTd"><input type="button" class="deletePageButton" value="X" onclick="submit_form(this,\'deletePage\')"></td>' ."\n";

            $resultString .= '</tr>' ."\n";

            $resultString .= '</form>' ."\n";
        }

        $resultString .= '</table>';

表格很棒,唯一的问题是我的表单根本不起作用...在FireBug中查看它我看到了:

alt text

表单正在关闭,因为我的所有输入标记都可以填充它。我已经尝试将标签放在“&lt; td&gt;”中而不是“&lt; tr&gt;”无济于事....

想法?

3 个答案:

答案 0 :(得分:11)

当您在另一个标记中打开标记时,您打开的标记将在其父标记关闭时关闭。所以这个:

<p><form></p>
<p></form></p>

将(或应该)导致:

<p><form></form></p>
<p></p>

您应该在桌子上方打开表格并将其关闭在底部,从而将整个表格封闭在表格中。

在tr,td,thead,tbody,tfoot或th标签之间放置非表格标签是不好的做法,不符合w3c

答案 1 :(得分:0)

您需要将表单放在TD中。

我还建议使用模板生成HTML,但这超出了这个问题的范围。

答案 2 :(得分:-1)

egads!你永远不应该嵌套这样的html元素!表格应该放在<td>内或整个表格之外。并且你不应该将隐藏的表单元素放在<tr>中!他们应该进入<td>