【问题标题】:Not removing item from the cart不从购物车中删除物品
【发布时间】:2016-07-15 05:38:26
【问题描述】:

下面是我的 php 代码,展示了我如何从购物车中删除商品。网页中没有显示错误,但该项目没有删除,购物车没有更新。 使用完整代码编辑

    <div class="product_box">
            <form action="cart.php" method="post" enctype="multipart/data">

            <table align="center" width="700" bgcolor="skyblue">

                <tr>
                    <th>Remove</th>
                    <th>Product (s) </th>
                    <th>Quantity</th>
                    <th>Total Price</th>
                </tr>

        <?php  



        $total = 0;

         global $db;

         $ip = getIp();

         $sel_price ="select * from cart where ip_add='$ip'";

         $run_price = mysqli_query($db, $sel_price);

         while ($p_price=mysqli_fetch_array($run_price)) {

            $pro_id = $p_price['p_id'];

            $pro_price = "select * from products where product_id='$pro_id'";

            $run_pro_price = mysqli_query($db, $pro_price);

            while ($pp_price = mysqli_fetch_array($run_pro_price)) {

                $product_price = array($pp_price ['product_price']);

                $product_title = $pp_price['product_title'];

                $product_image = $pp_price['product_img1'];

                $single_price = $pp_price['product_price'];




                $values = array_sum($product_price);
                $total +=$values;

          //echo "Rs ." . $total;





            ?>

            <tr align="center">
                <td><input type="checkbox" name="remove[]"></td>
                <td><?php echo $product_title; ?><br>
                    <img src="admin_area/product_images/<?php echo $product_image;?>" width="50px" height="50px">
                 </td>
                <td><input type="text" name="qty" size="3"></td>
                <td><?php echo "Rs." . $single_price ?></td>
            </tr>



            <?php   } } ?> 
            <tr align="right">
                <td colspan="3">
                    <b> Sub Total: </b>
                </td>
                <td>
                    <?php echo "Rs." .$total; ?>
                </td>
            </tr>
            <tr align="center">
                <td colspan="1"><input type="submit" name="update_cart" value="Update Cart"></td>
                <td><input type="submit" name="continue" value="Continue Shopping"></td>
                <td><button><a href="checkout.php">Checkout</a></button></td>
            </tr>


            </table>

            </form>

            <?php
$ip = getIp();

        if (isset($_POST['update_cart'])) {

            foreach ($_POST['remove'] as $remove_id) {

                $delete_product = "delete from cart where p_id=".$remove_id." AND ip_add=".$ip;
                $run_delete = mysqli_query($db, $delete_product);
                if ($run_delete) {
                    echo "<script>window.open('cart.php','_self')</script>";
                }

            }
        }

}


             ?>
        </div>
        </div>

我尝试通过在 if 语句之后添加以下代码来检查错误,但没有成功。

else { echo mysqli_error($db);}

请帮忙谢谢。

【问题讨论】:

  • 您是否检查过AND ip_add='$ip' 是否匹配?我的意思是即将到来的请求和存储在 Db 中的数据?
  • 是的。这是正确的。数据正在数据库中
  • @SagarKodte 请做一些调试。添加回显语句看看它在哪里刹车
  • 调试一些信息 检查 $ip, $_POST 中的值。也许 $_POST['remove'] 不是一个数组?
  • 注意: IP 地址可以共享,因此每个 IP 地址只能有一个购物车。这是一个不好的方法

标签: php mysql shopping-cart cart


【解决方案1】:

尝试使用 writelog 检查您的 mysql 语句是否正在获取值。这是一个小功能,可以帮助您更好地调试。

<?php   
function writelog($content) {
    $file = 'log.txt';
    file_put_contents($file, date("Y-m-d H:i:s")." : ".$content."\r\n", FILE_APPEND | LOCK_EX);
}

//Only display php errors to the developer...
if($_SERVER['REMOTE_ADDR'] == "put your localhost ip address")
{
    error_reporting(0);
    ini_set('display_errors', 'On');
    $db_hostname = "localhost";
    $db_database = "ecommerce";
    $db_username = "root";
    $db_password = "";      
}
else
{
    error_reporting(0);
    ini_set('display_errors', 'On');
    $db_hostname = "localhost";
    $db_database = "ecommerce";
    $db_username = "root";
    $db_password = "";              
}

//Establishing database connection
$db_connection = mysqli_connect($db_hostname, $db_username, $db_password, $db_database) or die(mysqli_error($db_connection));

如何使用此功能的示例: write_log($delete_product);

这将创建一个文本文件,其中包含您当前的 php 文件。 从这个网站学习一个完整的 CRUD php mysqli 示例:

try this it will help you in understanding better

【讨论】:

  • 文件没有创建兄弟。
  • 更新你的完整代码,我修复它会更好。你在哪里定义了 $db 变量。
  • $db 是我的数据库连接。它在 db.php 中
  • K,现在您将文件保存在哪里。如果在特定文件夹示例中:“C:\programFiles\SagarKodte\php”,那么这里您将有一个名为 log.txt 的文本文件。请看一下,我会在一分钟内回来
  • 我看到了。无文件。我正在使用 wamp 服务器
【解决方案2】:

我认为你应该与复选框一致

<tr align="center">
                <td><input type="checkbox" name="remove[]"></td>
                <td><?php echo $product_title; ?><br>
                    <img src="admin_area/product_images/<?php echo $product_image;?>" width="50px" height="50px">
                 </td>
                <td><input type="text" name="qty" size="3"></td>
                <td><?php echo "Rs." . $single_price ?></td>
            </tr>

你应该在复选框中设置一个 value = product_id

<input type="checkbox" name="remove[]" id="<?=$pp_price['product_id']?>>

【讨论】:

    【解决方案3】:

    我得到了答案,我只是在输入复选框中添加了以下值,它可以工作。

    <input type="checkbox" name="remove[]" value="<?php echo $pro_id; ?> ">
    

    【讨论】:

    • 正如我在下面所说的......你为什么不将此答案标记为已解决?
    • 因为你写了错误的值,这就是原因。我试过你的答案,但没有奏效。但我从你的回答中得到了我的错误。它帮助到我。所以我赞成你的回答。谢谢
    【解决方案4】:

    试试这个对你有帮助

    $ip = getIp();
    if (isset($_POST['update_cart'])) {
        foreach ($_POST['remove'] as $remove_id) {
            $delete_product = "delete from cart where p_id=".$remove_id." AND ip_add=".$ip;
            $run_delete = mysqli_query($db, $delete_product);
            if ($run_delete) {
                echo "<script>window.open('cart.php','_self')</script>";
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2020-02-17
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多