POST не передает выбранные данные при нажатии кнопки - PullRequest
0 голосов
/ 20 ноября 2018

Я упростил код, чтобы попытаться понять это.Я получил форму / таблицу, в которой отображается список элементов, добавленных в корзину пользователей, с кнопками для удаления каждого соответствующего элемента, однако при нажатии любой кнопки последний элемент в списке передается в переменную $ 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 передала в POST соответствующий $ itemid каждой строки правильно. Я не думаю, что POST получает $ itemid и instead использует последний $ itemid в таблице через часть кода while, которая является нечетной, поскольку она работает для отображения каждого элемента в таблице.

if (isset($_POST["remove"])) {                                   
while ($row = mysql_fetch_row($res)) {              
$itemid = $row[0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...