当单击按钮时,POST不传递所选数据

时间:2018-11-20 12:45:08

标签: php forms variables post

我简化了代码以尝试解决这一问题。香港专业教育学院有一个表格/表格,显示添加到用户购物车中的项目列表,带有按钮以删除每个相应的项目,但是,当单击任何按钮时,列表中的最后一个项目将传递给$ 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];

0 个答案:

没有答案