使用按钮更新表中的值

Posted

技术标签:

【中文标题】使用按钮更新表中的值【英文标题】:updating values in a table by using a button 【发布时间】:2020-12-26 09:42:31 【问题描述】:

所以我有一个项目列表,每个项目都有一个删除和更新按钮,删除将从数据库中删除该行,更新按钮将更改数量。

但问题是,我只能更新或删除列表中的最后一项。我已经尝试了很多东西,但没有解决方案。 有什么建议吗?

sql查询和表单:

$totaloftotal=0;

try   
    require('connection.php');
    $sql="select i.item_name, c.qty, i.item_price, c.iid, i.item_photo, i.item_qty, c.cart_id FROM items i, cart c WHERE i.item_id=c.iid and uid=23 ";
    $rs=$db->query($sql);
    
    if($rs->rowCount()==0)
        echo"CART EMPTY!!";
     else
    ?>
    <thead>
        <tr>
            <th>Update</th>
            <th>Remove</th>
            <th>Image</th>
            <th>Product Name</th>
            <th>Quantity</th>
            <th>Unit Price</th>
            <th>Total</th>
        </tr>
    </thead>
    <tbody>
        <tr>
        <?php
            while($row = $rs->fetch())
                $total=0;                                                               
                $total+=$row[2];
        ?>
        
            <form method="post" action="updatecart.php"> 
                <td><button class="btn" type="submit" name="update" >Update</button></td>
                <td><button class="btn" type="submit" name="remove" >Remove</button></td>
                <?php echo"$row[1]"?>
                <input type="hidden" name="itemid" value=<?php echo"$row[3]"?>>                                                             
                <input type="hidden" name="cartid" value=<?php echo"$row[6]"?>>                                                             
                <td>
                    <a href="product_detail.html">
                        <img  src="photos/<?php echo"$row[4]"?> " width= 100 height=100>
                    </a>
                </td>
                <td><?php echo"$row[0]"?></td>                                                              
                <td>
                <input type="number" id="quantity" name="quantity" min=1 max=<?php echo"$row[5]"?> value=<?php echo"$row[1]"?>></td>    td>
                <?php echo"$row[2]"?><</td>                                                         
                <?php $total = $total * $row[1]?>
                <td><?php echo"$total"?></td>
        </tr>
        <?php $totaloftotal+=$total;?>
        <?php
    
    //echo"$totaloftotal";

 catch ( PDOException $e )
    die($e->getMessage() );

?>  

这是应该进行更改的 updatecart.php:

<?php

    print_r($_POST);
    extract($_POST);
    
    if(isset($update))
    
        try
            require('connection.php');
            $qty= $_POST["quantity"];
            $itemid= $_POST["itemid"];
            $cartid= $_POST["cartid"];
            $qty= intval($qty);
            $sql2= "update cart set qty=$qty where iid=$itemid  and uid=23";
            $x = $db->exec($sql2);
                    $db=null;
            header("location:cart.php");

        catch (PDOException $e)
            die( $e->getMessage() );
           
    

    else
        try
            require('connection.php');
            $sql2= "delete from cart where iid=$itemid";
            $x = $db->exec($sql2);
                    $db=null;
            header("location:cart.php");

        catch ( PDOException $e )
            die($e->getMessage());
           
    

?>

【问题讨论】:

详细了解 ajax 请求... 如果您在代码中保持良好的格式/缩进,您会帮自己一个大忙。对上面的内容进行了编辑以使其清晰易读,您可以清楚地看到这些代码部分存在错误 ~ &gt;&lt;/td&gt; td&gt;?&gt;&lt;&lt;/td&gt; 更不用说您不能像这里一样合法地嵌套 html 元素。 【参考方案1】:

尝试使用 while : 和 endwhile

...
<tbody>
<tr>

<?php
while($row = $rs->fetch()): 
?>
<?php 
$total=0;                                                               
$total+=$row[2];
?>
<form method="post" action="updatecart.php"> 
<td> <button class="btn" type="submit" name="update" >Update</button></td>
<td> <button class="btn" type="submit" name="remove" >Remove</button></td>
<?php echo"$row[1]"?>
<input type="hidden" name="itemid" value="<?php echo $row[3]?>">                                                             
<input type="hidden" name="cartid" value="<?php echo $row[6]?>">                                                             
<td><a href="product_detail.html"><img  src="photos/<?php echo"$row[4]"?> " width= 100 height=100></a></td>               <td><?php echo"$row[0]"?>                                               
</td>                                                               
<td><input type="number" id="quantity" name="quantity" min=1 max=<?php echo"$row[5]"?> value=<?php echo"$row[1]"?>></td>    td><?php echo"$row[2]"?><</td>                                                          
<?php $total = $total * $row[1]?>                                                       <td><?php echo"$total"?></td>
</tr>
<?php $totaloftotal+=$total;?>
<?php endwhile ?>


//echo"$totaloftotal";

.....

【讨论】:

但我的问题不在于循环。问题是我只能更新列表的最后一行。 你确定 $row[3] 包含正确的 itemid 并且这个值被发送到 updatecart.php ??? 是的,row[3] 包含 itemid。我添加了 print_r($_POST) 以查看发生了什么,项目 ID 是一个数组。也许这就是为什么它只更改最后一行? 它已经包含在问题中,亲爱的,我已经修复了它。谢谢。

以上是关于使用按钮更新表中的值的主要内容,如果未能解决你的问题,请参考以下文章

从表中的多个值中选择不在数组中的位置

使用猫鼬模式将多个选择元素值中的值存储到MongoDB中的数组中

根据另一列中的值更新 BigQuery 中的嵌套数组

如何更新主表当前行的输入类型文本中的值从模态窗口表中获取值

使用集合中的值更新表中的列

Oracle 最佳实践使用父表中的值更新表中的 5000 万个子行