PHP:点击添加按钮后购物车为空

标签 php mysql addition cart

根据标题,我在将产品添加到购物车时遇到问题:它会显示一条窗口消息,表明该产品已添加,但实际上它不在那里。它给出了以下错误:

Fatal error: Cannot use object of type stdClass as array

the line is: <td><?php echo $value['item_name']; ?></td>

这是代码文件reserve.php:

 <?php

  session_start();
  ini_set('display_errors', 1);
  $connect = mysqli_connect('127.0.0.1', 'root', '***********', 'Community Garden List');


  if (isset($_POST['add'])) {
    if (isset($_SESSION['cart'])) {
        $item_array_id = array_column($_SESSION['cart'], 'product_id');
        if (!in_array($_GET['id'], $item_array_id)) {
            $count = count($_SESSION['cart']);
            $item_array = array(
                'product_id' => $_GET['id'],
                'item_name' => $_POST['hidden_name'],
                'product_price' => $_POST['hidden_price'],
                'item_quantity' => $_POST['quantity'],
            );
            $_SESSION['cart'][$count] = $item_array;
            echo '<script>window.location="reserve.php"</script>';
        } else {
            echo '<script>alert("Product is already Added to Cart")</script>';
            echo '<script>window.location="reserve.php"</script>';
        }
    } else {
        $item_array = array(
            'product_id' => $_GET['id'],
            'item_name' => $_POST['hidden_name'],
            'product_price' => $_POST['hidden_price'],
            'item_quantity' => $_POST['quantity'],
        );
        $_SESSION['cart'][0] = $item_array;
    }
 }

 if (isset($_GET['action'])) {
    if ($_GET['action'] == 'delete') {
        foreach ($_SESSION['cart'] as $keys => $value) {
            if ($value['product_id'] == $_GET['id']) {
                unset($_SESSION['cart'][$keys]);
                echo '<script>alert("Product has been Removed...!")</script>';
                echo '<script>window.location="reserve.php"</script>';
            }
        }
    }
 }
 ?>

    ?>

html代码

 <?php

     $query = 'SELECT * FROM product ORDER BY serial ASC';
     $result = mysqli_query($connect, $query);

     if (mysqli_num_rows($result) > 0) {
         while ($row = mysqli_fetch_array($result)) {
             ?>
             <div class="col-md-4">
            <form method="post" action="reserve.php?action=add&id='.$row['id'].">
            <div style="border: 1px solid #eaeaec; margin: -1px 19px 3px -1px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); padding:10px;" align="center">

                <img src="<?php echo $row['image']; ?>" class="img-responsive" style="width:100%;>
            <h5 class="text-info"><?php echo $row['pname']; ?></h5>
            <h5 class="text-danger">€ <?php echo $row['price']; ?></h5>
            <h5 class="text-info"><?php echo $row['pdescription']; ?></h5>
            <input type="text" name="quantity" class="form-control" value="1">
            <input type="hidden" name="hidden_name" value="<?php echo $row['pname']; ?>">
            <input type="hidden" name="hidden_price" value="<?php echo $row['price']; ?>">
            <input type="hidden" name="hidden_pdescription" value="<?php echo $row['pdescription']; ?>">
            <input type="submit" name="add" style="margin-top:5px;" class="btn btn-success" value="Add to Bag">
            </div>
            </form>
            </div>
                }
        }
        ?>

 <?php
                if(!empty($_SESSION["cart"])){
                    $total = 0;
                    foreach ($_SESSION["cart"] as $key => $value) {
                        ?>
                        <tr>
                            <td><?php echo $value["item_name"]; ?></td>
                            <td><?php echo $value["item_quantity"]; ?></td>
                            <td>$ <?php echo $value["product_price"]; ?></td>
                            <td>
                                $ <?php echo number_format($value["item_quantity"] * $value["product_price"], 2); ?></td>
                            <td><a href="Cart.php?action=delete&id=<?php echo $value["product_id"]; ?>"><span
                                        class="text-danger">Remove Item</span></a></td>

                        </tr>
                        <?php
                        $total = $total + ($value["item_quantity"] * $value["product_price"]);
                    }
                        ?>
                        <tr>
                            <td colspan="3" align="right">Total</td>
                            <th align="right">$ <?php echo number_format($total, 2); ?></th>
                            <td></td>
                        </tr>
                        <?php
                    }
                ?>
            </table>
        </div>

    </div>

我已经尝试过print "<pre>"; var_dump($row); exit;此行之后:foreach e($_SESSION['cart'] as $key => $value) {它有一张 table ,上面有 NULL里面。这是什么意思?

在此之前,我尝试更改$value['item_name']$value->item_name ,我收到以下错误:

Notice: Undefined property: stdClass::$item_name in

您能帮助我了解问题所在吗?谢谢。

最佳答案

我解决了一些错误,尝试将零件组装在正确的位置 我把修改的所有内容都放在这里你应该复制粘贴你需要的部分。

<?php

  session_start();
  ini_set('display_errors', 1);
  $connect = mysqli_connect('127.0.0.1', 'root', '******************', 'Community Garden List');


  if (isset($_POST['add'])) {
    if (isset($_SESSION['cart'])) {
        $item_array_id = array_column($_SESSION['cart'], 'product_id');
        if (!in_array($_GET['id'], $item_array_id)) {
            $count = count($_SESSION['cart']);
            $item_array = array(
                'product_id' => $_GET['id'],
                'item_name' => $_POST['hidden_name'],
                'product_price' => $_POST['hidden_price'],
                'item_quantity' => $_POST['quantity']//!!!,
            );
            $_SESSION['cart'][$count] = $item_array;
            //echo '<script>window.location="reserve.php"</script>';//   do not send content when you use sessions $_SESSION['cart'][0] = $item_array;
        } else {
           // echo '<script>alert("Product is already Added to Cart")</script>';
            //echo '<script>window.location="reserve.php"</script>';
        }
    } else {
        $item_array = array(
            'product_id' => $_GET['id'],
            'item_name' => $_POST['hidden_name'],
            'product_price' => $_POST['hidden_price'],
            'item_quantity' => $_POST['quantity']//!!!!!!!!!!!!  ?  ->,
        );
        $_SESSION['cart'][0] = $item_array;
    }
 }

 if (isset($_GET['action'])) {
    if ($_GET['action'] == 'delete') {
        foreach ($_SESSION['cart'] as $keys => $value) {
            if ($value['product_id'] == $_GET['id']) {
                unset($_SESSION['cart'][$keys]);
                echo '<script>alert("Product has been Removed...!")</script>';
                echo '<script>window.location="reserve.php"</script>';
            }
        }
    }
 }


     $query = 'SELECT * FROM product ORDER BY serial ASC';
     $result = mysqli_query($connect, $query);

     if (mysqli_num_rows($result) > 0) {
         while ($row = mysqli_fetch_array($result)) {
             die();
$tmimi1=<<<mimi1
<div class="col-md-4">
<form method="post" action="reserve.php?action=add&id={$row['id']}">
<div style="border: 1px solid #eaeaec; margin: -1px 19px 3px -1px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); padding:10px;" align="center">

<img src="{$rr1}" class="img-responsive" style="width:100%;">
<h5 class="text-info">{$row['pname']}</h5>
<h5 class="text-danger">€{$row['price']}</h5>
<h5 class="text-info">{$row['pdescription']}</h5>
<input type="text" name="quantity" class="form-control" value="1">
<input type="hidden" name="hidden_name" value="{$row['pname']}">
<input type="hidden" name="hidden_price" value="{$row['price']}">
<input type="hidden" name="hidden_pdescription" value="{$row['pdescription']}">
<input type="submit" name="add" style="margin-top:5px;" class="btn btn-success" value="Add to Bag">
</div>
</form>
</div>
mimi1;
         }
}
echo($tmimi1);
                if(!empty($_SESSION["cart"])){
                    $total = 0;
                    foreach ($_SESSION["cart"] as $key => $value) {
$tmimi2 =<<<mimi2
                        <tr>
                            <td>{$value["item_name"]}</td>
                            <td>{$value["item_quantity"]}</td>
                            <td>${$value["product_price"]}</td>
                            <td>$
mimi2;
echo($tmimi2);
echo number_format($value["item_quantity"] * $value["product_price"], 2);

$tmimi2=<<<mimi3
</td>
                            <td><a href="Cart.php?action=delete&id={$value["product_id"]}"><span
                                        class="text-danger">Remove Item</span></a></td>

                        </tr>
mimi3;
echo($tmimi3);
                        $total = $total + ($value["item_quantity"] * $value["product_price"]);
                    }
$tmimi2=<<<mimi4
                        <tr>
                            <td colspan="3" align="right">Total</td>
                            <th align="right">$ 
mimi4;
echo($tmimi4);
echo number_format($total, 2); 
$tmimi2=<<<mimi5
</th>
                            <td></td>
                        </tr>
mimi5;
echo($tmimi5);                    }
$tmimi2=<<<mimi6
            </table>
        </div>

    </div>
mimi6;
echo($tmimi6);
?>

关于PHP:点击添加按钮后购物车为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137977/

相关文章:

php - 将照片添加到数据库php mysql

Php/MYSQL 高分列表仅显示他/她的电子邮件问题的最高分数

mysql - 选择日期范围内最新的合格类型

php - 在 PHP 中通过 SSH 连接到 MySQL

php - 在 MySQL 查询中使用分钟单位

PHP sleep() 内部循环不更新数据库

mysql - 我可以在 Rails 2.3 中执行原子增量而不下降到 SQL 吗?

Javascript:向以 0 开头的数字(如 01、02、03)添加 +1 并保留零

numpy - 为什么 numpy.absolute() 这么慢?

java - Java中如何实现时间的加法?