Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单元素关闭过快_Php_Html - Fatal编程技术网

Php 表单元素关闭过快

Php 表单元素关闭过快,php,html,Php,Html,我有一个PHP脚本,它生成一个表,每一行(假定)都是一个表单。该表生成得非常好,但出于某种原因,表单标记会立即关闭。我不知道为什么,这让我暴躁。有什么想法吗 echo ' <form method="post" action="#" id="status_row_'.$row["name"].'"> <tr class="even"> <input type="hidden" name="category" id="category" value="

我有一个PHP脚本,它生成一个表,每一行(假定)都是一个表单。该表生成得非常好,但出于某种原因,表单标记会立即关闭。我不知道为什么,这让我暴躁。有什么想法吗

echo '
 <form method="post" action="#" id="status_row_'.$row["name"].'">
 <tr class="even">
      <input type="hidden" name="category" id="category" value="'.$category[0]['category'].'">
      <input type="hidden" name="error_level" id="error_level" value="'.$row['level'].'">
      <input type="hidden" name="service_name" id="service_name" value="'.$row['name'].'">
      <td class="status-icons" name="error_circle"><div class="'.$error_circle.'"></div></td>
          //rows deleted here for clarity's sake
                                    </tr></form>'
echo'
//为清晰起见,此处删除了行
'

因此,生成表单上的Inspect元素显示:
,后面是所有行。

您的html被破坏。您试图在打开
后立即打开表单,然后在关闭
后将其关闭。这是非法的html<代码>结构不能像那样构建。它应该更像

<form>
<table>
<tr>
   <td>...</td>
</tr>
</table>
</form>

...
实际上,您正试图将表单填充到
标记之间的空白中。除表结构外,不应存在任何内容:

<tr><p>hi there</p><td>go away</td></tr>
你好

走开

如果是非法的,大多数浏览器将在表外呈现
,通常在打开
标记之前。这就是为什么您的表单会显示在它所在的位置-浏览器正试图尽最大努力处理损坏的html。

看起来您在关闭
标记之前关闭了
标记。

表单是否有所不同?或者以某种方式链接在一起(例如,是每一个表行都有自己独特的表单,还是一个巨大的表单,每一行都有不同的字段

如果是前者,则在每个行元素内创建一个表单,如下所示:

<table>
    <tr>
       <td><form>FORM STUFF GOES HERE</FORM></td>
    </tr>
    <tr>
       <td><form>FORM STUFF GOES HERE</FORM></td>
    </tr>
    <tr>
       <td><form>FORM STUFF GOES HERE</FORM></td>
    </tr>
</table>

这里有表格
这里有表格
这里有表格
如果是后者,或者如果您只希望整体提交一个表单,则在表外创建表单标记,并在数据单元格内创建表单字段:

<form>
<table>
    <tr>
        <td>FORM FIELD E.G. TEXT FIELD</td>
    </tr>
    <tr>
        <td>FORM FIELD E.G. TEXT FIELD</td>
    </tr>
    <tr>
        <td>FORM FIELD E.G. TEXT FIELD</td>
    </tr>
</table>
</form>

表单字段,例如文本字段
表单字段,例如文本字段
表单字段,例如文本字段

表单元素关闭不正确,因为正如一些人指出的那样,在
标记之间显然不能有
标记(我不明白为什么,但它就是这样)

我发现这个解决方案是一个解决方案:


您不允许在尝试的地方放置表单标记。在开始tr之后,唯一允许的标记是th或td。@Drew,您还需要在后面添加一个
,最好是一个
标记。@SableFoste确定,清除了该标记,并明确说明开始tr标记更新了代码,以将整个文档放在th中我需要生成多个表单,表的每一行一个。@Prix什么例子?我没有看到一个——我缺少它吗?每个表单都有一堆元素。我需要表的每一行都有一个表单。我移动了标记——这肯定是错的——但我需要表单位于表中。我这是不可能的?您可以在任何元素中放置表单。然后转到
。每行都应该有自己的表单,字段由列定义。当用户更改一行(该行中的任何字段)中的数据时该行将仅更新该记录的数据库。好的,请尝试我发布的第一个代码示例,因为它可以满足您的需要。另一点是,您仍然可以对整个表使用单个表单来完成所需的操作,并且在“数据库/更新”部分,您可以进行一些事例/检查,以查看哪个表单被编辑。我看到了此解决方法。但是我无法让它工作。你到底做了什么?请你解释一下好吗?恐怕我不记得了,我也不再有访问该代码库的权限。你有没有可能只使用带有
display:table
样式的div?很抱歉,我帮不了你什么忙。谢谢你的回复,我找到了方法。再次感谢:)