PHP, Error in Shopping Cart Program

时间:2016-02-12 22:08:05

标签: php session shopping-cart

I am trying to create a Shopping Cart in PHP. It worked fine. But then I removed all items from the Shopping Cart and it failed. I think it has something with the session, but I not complete sure. I am getting this error:

file_get_contents()

I used this Shopping cart tutorial to build this program.

cart.php code:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\Apache24\htdocs\phpshop\index.php on line 85
Call Stack
#   Time    Memory  Function    Location
1   0.0002  244096  {main}( )   ...\index.php:0
2   0.0017  255352  mysqli_fetch_array ( )  

line 85 about here ---> $query = mysqli_query($con,$sql);

<?php



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

    foreach($_POST['quantity'] as $key => $val)
    {
        if($val==0)
        {
            unset($_SESSION['cart'][$key]);


        }
        else
        {
            $_SESSION['cart'][$key]['quantity']=$val;
        }
    }

}

?>

<h1>View cart</h1>
<a href="index.php?page=products">Go back to products page</a>
<form method="post" action="index.php?page=cart">

    <table>

        <tr>
            <th>Name</th>
            <th>Quantity</th>
            <th>Price</th>
            <th>Items Price</th>
        </tr>

        <?php

        $sql="SELECT * FROM products WHERE id_product IN (";

        foreach($_SESSION['cart'] as $id => $value)
        {
            $sql.=$id.",";
        }




        $sql=substr($sql, 0, -1).") ORDER BY name ASC";

index.php

        $totalprice=0;

        $numrows = mysqli_num_rows($query);

        if($numrows == 0)
        {

            header("Location: index.php");

        }

        while($row=mysqli_fetch_array($query))
        {
            $subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price'];
            $totalprice+=$subtotal;
            ?>
            <tr>
                <td><?php echo $row['name'] ?></td>
                <td><input type="text" name="quantity[<?php echo $row['id_product'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?>" /></td>
                <td><?php echo $row['price'] ?>$</td>
                <td><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'] ?>$</td>
            </tr>
            <?php

        }
        ?>
        <tr>
            <td colspan="4">Total Price: <?php echo $totalprice ?></td>
        </tr>

    </table>
    <br />
    <button type="submit" name="submit">Update Cart</button>
</form>
<br />
<p>To remove an item, set it's quantity to 0. </p>

products.php

<?php




session_start();









require("includes/connection.php");
if(isset($_GET['page'])){

    $pages=array("products", "cart");

    if(in_array($_GET['page'], $pages)) {

        $_page=$_GET['page'];

    }else{

        $_page="products";

    }

}
else{

    $_page="products";

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="css/reset.css" />
    <link rel="stylesheet" href="css/style.css" />

    <title>Shopping cart</title>

</head>

<body>

<div id="container">

    <div id="main">

        <?php require($_page.".php"); ?>

    </div><!--end main-->

    <div id="sidebar">

        <h1>Cart</h1>
        <?php

        if(isset($_SESSION['cart'])){

            $sql="SELECT * FROM products WHERE id_product IN (";

            foreach($_SESSION['cart'] as $id => $value)
            {
                $sql.=$id.",";
            }







            $sql=substr($sql, 0, -1).") ORDER BY name ASC";
            $query = mysqli_query($con,$sql);
            while($row=mysqli_fetch_array($query))
            {

                ?>
                <p><?php echo $row['name'] ?> x <?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?></p>
                <?php

            }
            ?>
            <hr />
            <a href="index.php?page=cart">Go to cart</a>
            <?php

        }
        else
        {

            echo "<p>Your Cart is empty. Please add some products.</p>";

        }

        ?>

    </div><!--end sidebar-->

</div><!--end container-->

</body>
</html>

1 个答案:

答案 0 :(得分:0)

您的

分配
$query = mysqli_query($con,$sql);

失败并返回布尔值FALSE。这是因为$con未正确设置。

http://php.net/manual/en/mysqli.query.php

所以,您将$ FALSE传递给mysqli_fetch_array作为$ query

while($row=mysqli_fetch_array($query))

这导致您报告的错误

警告:mysqli_fetch_array()要求参数1为mysqli_result,第85行的C:\ Apache24 \ htdocs \ phpshop \ index.php中给出布尔值