我有一个删除按钮name =“action”正确转到value="Delete"
的开关/案例,它为顶级表$_POST['fundid']
检索正确的表值value[record #1]
但忽略它对于最后一个表value[record #2]
。表格代码:
while ($row = mssql_fetch_array($fund_info_result)) {
echo "<tr>";
echo "<form action='' method='post'>";
echo "<td>" . $row['coafund'] . "</td>";
echo "<td>" . $row['fundid'] . "</td>";
echo "<input type='hidden' id='fundid' name='fundid' value=" . $row['fundid'] . " />";
echo "<td>" . $row['shortdesc'] . "</td>";
echo "<td>" . $row['longdesc'] . "</td>";
echo "<td><input type='submit' id='delete' name='action' value='Delete' /></td></td>";
echo "</form>";
echo "</tr>";
}
PHP代码获取第一条记录的值,但忽略第二条[最后]记录:
if (isset($_POST)) {
case 'Delete':
$fundid_record = $_POST['fundid'];
?>
<script type="text/javascript">
window.alert("<?php echo $fundid_record;?>");
</script>
<?php
break;
}
生成的HTML示例如下所示:
<tbody>
<form id='table_data1' action='' method='post'>
<tr>
<td>139</td>
<td>14966</td>
<input type='hidden' id='14966' name='fundid' value=14966 />
<td>Admin</td>
<td>Administration</td>
<td><input type='submit' id='delete' name='action' value='Delete' /></td>
</td>
</tr>
</form>
<form id='table_data1' action='' method='post'>
<tr>
<td>140</td>
<td>14967</td>
<input type='hidden' id='14967' name='fundid' value=14967 />
<td>Services</td>
<td>Services</td>
<td><input type='submit' id='delete' name='action' value='Delete' /></td>
</td>
</tr>
</form>
</tbody>
这里的另一张用户票帮助我至少正确地获取了值,使用每个记录的表单标记和隐藏值,但非常混淆为什么它忽略了表的最后一条记录。请帮忙。
答案 0 :(得分:2)
您正在创建无效的HTML标记。唯一可以是<tbody>
的孩子的是<tr>
,<tr>
的孩子唯一可以是<th>
或{{1} }}。将表单和输入代码放在表格中但在表格单元格之外是无效的。许多浏览器会在表外移动这样的标记,这会导致表单被错误地创建,并且几乎可以肯定是您所看到的奇怪行为的原因。
此外,您关闭其中一个<td>
两次(<td>
),但这两者都没有帮助。
这应该解决它:
</td></td>
答案 1 :(得分:1)
var_dump()
的{{1}}可以提供有用的信息。
从我看到的,您在$_POST
属性中使用静态值来插入循环中的元素。无论接下来发生什么都是一个坏主意,因为id应该在一个页面中存在一次而且只存在一次。每次循环迭代时,您至少应该增加一个值,并将该值附加到您的id,以便它是unic,或者根本不使用id。
我没有足够的信息来确定它,但实际上我不久前遇到了同样的问题,原因恰恰是id
在不同的id
被多次使用{ {1}}元素。
希望它有所帮助,如果没有,可以随意添加一些日志。