PHP post始终忽略最后一个表值

PHP post始终忽略最后一个表值,php,html,sql,html-table,Php,Html,Sql,Html Table,我有一个delete按钮name=“action”,它可以正确地转到value=“delete”的一个开关/案例,它可以为最上面的表value[record#1]检索正确的表值$\u POST['fundid'],但对最后一个表value[record#2]忽略它。表代码: while ($row = mssql_fetch_array($fund_info_result)) { echo "<tr>"; echo "<form action='' method

我有一个delete按钮name=“action”,它可以正确地转到
value=“delete”
的一个开关/案例,它可以为最上面的表
value[record#1]
检索正确的表值
$\u POST['fundid']
,但对最后一个表
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>";
}
while($row=mssql\u fetch\u数组($fund\u info\u result)){
回声“;
回声“;
回显“$row['coafund']”;
回显“$row['fundid']”;
回声“;
回显“$row['shortdesc']”;
回显“$row['longdesc']”;
回声“;
回声“;
回声“;
}
PHP代码获取第一条记录的值,但忽略第二条[最后一条]记录:

if (isset($_POST)) {
case 'Delete':
    $fundid_record = $_POST['fundid'];
    ?>
        <script type="text/javascript">
            window.alert("<?php echo $fundid_record;?>");
        </script>
    <?php
break;
}
if(isset($\u POST)){
案例“删除”:

$fundid_record=$_POST['fundid']; ?> 窗口提示(“”); 您的
$\u帖子的
var\u dump()
可以提供有用的信息

据我所见,您在
id
属性中为循环中插入的元素使用静态值。无论接下来发生什么,这都是一个坏主意,因为一个id应该在一个页面中存在一次且仅存在一次。您至少应该在循环每次迭代时增加一个值,并将该值附加到您的id中,以便它是unic,或者不是我们我根本没有身份证

我没有足够的信息来确定这一点,但事实上我不久前遇到了你的问题,原因恰恰是一个
id
在不同的
表单中被多次使用

希望它有帮助,如果没有,可以随意添加一些日志。

您的
$\u帖子的
var\u dump()
可以提供有用的信息

据我所见,您在
id
属性中为循环中插入的元素使用静态值。无论接下来发生什么,这都是一个坏主意,因为一个id应该在一个页面中存在一次且仅存在一次。您至少应该在循环每次迭代时增加一个值,并将该值附加到您的id中,以便它是unic,或者不是我们我根本没有身份证

我没有足够的信息来确定这一点,但事实上我不久前遇到了你的问题,原因恰恰是一个
id
在不同的
表单中被多次使用


希望它有帮助,如果没有,可以随意添加一些日志。

您正在创建无效的HTML标记。
的子对象只能是
,而
的子对象只能是
。将表单和输入代码放在表内,但放在表外ll无效。许多浏览器会将这样的标记移到您的表之外,这将导致表单创建错误,几乎可以肯定这是您看到的奇怪行为的原因

此外,您还可以关闭其中一个
两次(
),这也没有帮助

这应该可以解决这个问题:

echo "<tr>";
echo "<td>" . $row['coafund'] . "</td>";
echo "<td>" . $row['fundid'] . "</td>";
echo "<td>" . $row['shortdesc'] . "</td>";
echo "<td>" . $row['longdesc'] . "</td>";
echo "<td><form action='' method='post'><input type='hidden' name='fundid' value=" . $row['fundid'] . " /><input type='submit' id='delete' name='action' value='Delete' /></form></td>";
echo "</tr>";
echo”“;
回显“$row['coafund']”;
回显“$row['fundid']”;
回显“$row['shortdesc']”;
回显“$row['longdesc']”;
回声“;
回声“;

您正在创建无效的HTML标记。唯一可以成为
的子对象的是
,唯一可以成为
的子对象的是
。将表单和输入代码放在表中但放在表单元格外是无效的。许多浏览器会像这样移动标记t隐藏您的表,这将导致表单创建错误,几乎可以肯定是您看到的奇怪行为的原因

此外,您还可以关闭其中一个
两次(
),这也没有帮助

这应该可以解决这个问题:

echo "<tr>";
echo "<td>" . $row['coafund'] . "</td>";
echo "<td>" . $row['fundid'] . "</td>";
echo "<td>" . $row['shortdesc'] . "</td>";
echo "<td>" . $row['longdesc'] . "</td>";
echo "<td><form action='' method='post'><input type='hidden' name='fundid' value=" . $row['fundid'] . " /><input type='submit' id='delete' name='action' value='Delete' /></form></td>";
echo "</tr>";
echo”“;
回显“$row['coafund']”;
回显“$row['fundid']”;
回显“$row['shortdesc']”;
回显“$row['longdesc']”;
回声“;
回声“;

id='fundid'
不是一个好主意。每个HTML元素的id必须是唯一的。因为您是通过循环创建的,如果循环两次或两次以上,则id将在最后一页上使用两次或两次以上,根据HTML规范,使第二个和后续元素无效。无论如何,不确定“忽略最后一条记录”是什么意思?您的意思是,当您在最后一行单击“删除”时,它没有提交正确的值?您是否检查了浏览器的“网络”选项卡以查看回发请求中实际提交的内容?它是否将预期值发送到服务器?将其更改为:id=“$row['fundid']”’;还是一样:按第二行的Delete键,而不是window。警报(值)submit isset只需重新加载页面。Chrome浏览器网络选项卡显示我无法识别的var名称。浏览器日志[via]chrome://net-export/]5867行,没有提到“fundid”。在第一行,每次它通过ISSET代码时,都会发现“case:'Delete':”,弹出值,然后重新加载页面,记住前面的select值。但是在第二个值中删除,页面从头开始重新加载-因此它会忽略该元素的提交。#scratchinghead能否显示页面输出的实际HTML(与创建它的PHP相反)?在浏览器中查看源代码以查看它。我正在查看代码…因此,我将表单标记放在了内部,但在这里可以看到表单标记是如何嵌套的[?]:13914970AdminAdministration14015056Services
id='fundid'
不是一个好主意。每个HTML元素的id必须是唯一的。因为您是通过循环创建此元素的,如果它循环两次或两次以上,则该id将在最后一页上使用两次或两次以上,根据HTML规范,第二个和后续元素将无效。无论如何,不确定您所说的“忽略最后一条记录”是什么意思?您的意思是,当您单击最后一个表行上的“删除”时,它没有提交正确的值?您是否检查了浏览器的“网络”选项卡以查看回发请求中实际提交的内容