php:点击add按钮后购物车清空

nkhmeac6  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(419)

根据标题,我在将产品添加到购物车时遇到了一个问题:它会显示一个窗口消息,表明产品已添加,但实际上它不在那里。它给出以下错误:
致命错误:无法将stdclass类型的对象用作数组

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 ,我得到了以下错误:
注意:未定义的属性:stdclass::$item\u name in
你能帮我弄明白怎么了吗?谢谢您。

knpiaxh1

knpiaxh11#

你删除了关于从在线天气数据中获取阵列的帖子,然后才给你发布答案?我不知道如何发送你所问的,然后你删除之前的问题按'张贴答案'按钮(如果你是谁问咪咪或有另一个咪咪=不确定)如果你问之前,我张贴你的答案:

<?php
function print_r2($var){
	echo('<h3>'.$var.':</h3><br>');
	print_r($GLOBALS[$var]);echo('br');
}
function hr(){
	echo('<hr>');
}

$lines=implode(file('http://samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22'));
print_r2('lines');hr();

$data = json_decode($lines);
print_r2('data');hr();
print('wind obj:');print_r($data->wind);hr();
print('speed:');print_r($data->wind->speed);hr();
print('deg:');print_r($data->wind->deg);hr();
?>

在我的屏幕上我看到了…推送运行代码片段!

<h3>lines:</h3><br>{"coord":{"lon":139.01,"lat":35.02},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":285.514,"pressure":1013.75,"humidity":100,"temp_min":285.514,"temp_max":285.514,"sea_level":1023.22,"grnd_level":1013.75},"wind":{"speed":5.52,"deg":311},"clouds":{"all":0},"dt":1485792967,"sys":{"message":0.0025,"country":"JP","sunrise":1485726240,"sunset":1485763863},"id":1907296,"name":"Tawarano","cod":200}br<hr><h3>data:</h3><br>stdClass Object
(
    [coord] => stdClass Object
        (
            [lon] => 139.01
            [lat] => 35.02
        )

    [weather] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 800
                    [main] => Clear
                    [description] => clear sky
                    [icon] => 01n
                )

        )

    [base] => stations
    [main] => stdClass Object
        (
            [temp] => 285.514
            [pressure] => 1013.75
            [humidity] => 100
            [temp_min] => 285.514
            [temp_max] => 285.514
            [sea_level] => 1023.22
            [grnd_level] => 1013.75
        )

    [wind] => stdClass Object
        (
            [speed] => 5.52
            [deg] => 311
        )

    [clouds] => stdClass Object
        (
            [all] => 0
        )

    [dt] => 1485792967
    [sys] => stdClass Object
        (
            [message] => 0.0025
            [country] => JP
            [sunrise] => 1485726240
            [sunset] => 1485763863
        )

    [id] => 1907296
    [name] => Tawarano
    [cod] => 200
)
br<hr>wind obj:stdClass Object
(
    [speed] => 5.52
    [deg] => 311
)
<hr>speed:5.52<hr>deg:311<hr>
hwazgwia

hwazgwia2#

我解决了一些错误尝试组装在正确的地方我把所有的内容修改在这里你应该复制粘贴你需要的部分。

<?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);
?>

相关问题