我简化了代码以尝试解决这一问题。香港专业教育学院有一个表格/表格,显示添加到用户购物车中的项目列表,带有按钮以删除每个相应的项目,但是,当单击任何按钮时,列表中的最后一个项目将传递给$ itemid变量而不是所选项目。
$ itemid在表中的每个按钮上正确显示了一个不同的itemid,并且香港专业教育学院也让它在按钮上方回显,但是单击按钮时,它不会将选定的itemid传递给POST函数,我无法我的生活找出原因。
表单代码。
<form method="post" action="remove.php">
<table border="0" width="100%" class="main" cellpadding="4" cellspacing="0" align="center">
<tr> <td class="colhead" width="1%" align="left">Item</td> <td class="colhead" width="1%"> <center>Delete</center></td> </tr>
<?php while ($row = mysql_fetch_row($res)):
$itemid = $row[0];
$dispname = $row[1]; ?>
<tr align="center">
<?php print("<td align='left' class='table_col1'>$dispname</td>"); ?>
<td class="table_col2" align="center">
<?php echo $itemid; ?>
<input type="submit" class="button" name="remove" value="Delete
(<?php echo $itemid;?>)"
</td></tr>
<?php endwhile; ?>
</table></form>
POST表单代码。
if (isset($_POST["remove"])) {
while ($row = mysql_fetch_row($res)) {
$itemid = $row[0];
}
begin_frame();
echo $itemid;
end_frame();
}
如果我将$ itemid = $ row [0]之后的大括号移动到代码上面部分中的最后一个大括号以下,则它将传递表中第一个列出的项目的itemid。
if (isset($_POST["remove"])) {
while ($row = mysql_fetch_row($res)) {
$itemid = $row[0];
begin_frame();
echo $itemid;
end_frame();
}
}
remove.php页面代码。
<?php
require_once("include/functions.php");
dbconn();
loggedinorreturn();
stdhead();
begin_frame();
$userid = ( int ) $USER['id'];
$qry = ("SELECT
carts.itemid,
items.name
FROM carts
INNER JOIN users ON carts.userid = users.id
INNER JOIN items ON carts.itemid = items.id
WHERE users.status = 'yes'
AND carts.userid = '$userid'
ORDER BY name DESC") or sqlerr(__FILE__, __LINE__);
$res = mysql_query($qry);
if (isset($_POST["remove"])) {
while ($row = mysql_fetch_row($res)) {
$itemid = $row[0];
}
begin_frame();
echo $itemid;
end_frame();
}
if (mysql_num_rows($res) > 0):
?>
<style type="text/css">
<!--
.button {
width: 220px;
height: 20px;
text-align: center;
background-image: url(images/btn.jpg);
background-color: #000000;
border-color: 3E3C32;
border-width: 1;
color: FFFFFF;
font-size: 8pt;
cursor: pointer;
}
-->
</style>
<form method="post" action="remove.php">
<table border="0" width="100%" class="main" cellpadding="4" cellspacing="0" align="center">
<tr>
<td class="colhead" width="1%" align="left">Item</td>
<td class="colhead" width="1%">
<center>Delete</center></td>
</tr>
<?php
while ($row = mysql_fetch_row($res)):
$itemid = $row[0];
$dispname = $row[1];
?>
<tr align="center">
<?php
print("<td align='left' class='table_col1'>$dispname</td>"); ?>
<td class="table_col2" align="center">
<?php echo $itemid; ?>
<input type="submit" class="button" name="remove" value="Delete
(<?php echo $itemid;?>)"
</td>
</tr>
<?php endwhile; ?>
</table>
</form>
<?php
echo "<br />";
endif;
end_frame();
stdfoot();
die;
{
stdhead("Nothing Found");
begin_frame("Nothing Found");
echo '<div style="margin-top:10px; margin-bottom:10px" align="center"><font size="2">Sorry, nothing found!</font></div>';
end_frame();
stdfoot();
}
?>
建议将按钮正确传递到POST中的每一行的相应$ itemid,我不认为POST正在获取$ itemid,而是通过代码的while部分使用表中的最后$ itemid,很奇怪,因为它可以显示表格中的每个项目。
if (isset($_POST["remove"])) {
while ($row = mysql_fetch_row($res)) {
$itemid = $row[0];