购物车代码无效。获取未定义变量的错误

时间:2014-02-26 02:04:47

标签: php jquery html xml

我发现这个教程是关于制作一个购物车应用程序而它不起作用。我在第22行收到有关未定义变量bookFound的错误,其中显示if(!$bookFound)。我想也许为什么它没有被定义,我想也许是因为它是在代码中的if语句中定义的,并且没有返回true。我有任何方法修复它,所以如果你可以使这个代码工作,那将是伟大的。用户应该能够单击按钮,并且应该使用计算结果更新div。

<?php
    session_start();

    $booksInfo = $_SESSION['cart'];
    if(count($booksInfo) > 0)
    {
        $bookFound = false;
        for($i=0; $i< count($booksInfo); $i++)
        {
            if($booksInfo[$i]['bookId'] == $_POST['bookId'])
            {
                $booksInfo[$i]['quantity'] = $_POST['quantity'];
                $bookFound = true;
                break;
            }
        }
    }
    if(!$bookFound)  //line 22 where error was found
    {
        $book = array('bookId' => $_POST['bookId'], 'quantity' => $_POST['quantity']);
        array_push($booksInfo, $book);
    }
    $_SESSION['cart'] = $booksInfo;

    $grossTotal = 0;
    for($i=0; $i< count($booksInfo); $i++)
    {
        $aBook = $booksInfo[$i];
        $bookName = getBookName($booksInfo[$i]['bookId']);
        $bookPrice = getPriceForBook($booksInfo[$i]['bookId']);
        $totalPrice = $bookPrice  * $booksInfo[$i]['quantity'];
        $grossTotal+= $totalPrice;
        $str.= '<strong>Name - </strong>'.$bookName;
        $str.= '<br/>';
        $str.= ' <strong>Copies - </strong>'.$booksInfo[$i]['quantity'];
        $str.= '<br/>';
        $str.= '<strong>Price - </strong>$'.$bookPrice. ' * ' .$booksInfo[$i]['quantity'].' = $'.$totalPrice;
        $str.= '<br/><br/>';
    }
    $str.= '<strong>Net Amount - </strong>$'.$grossTotal;
    echo $str;


    function getBookName($id)
    {
        $objXML = simplexml_load_file('books.xml');
        foreach($objXML->book as $book)
        {
            if($book['id'] == $id)
            {
                return $book->name;
            }
        }
        return false;       
    }
    function getPriceForBook($id)
    {
        $objXML = simplexml_load_file('books.xml');
        foreach($objXML->book as $book)
        {
            if($book['id'] == $id)
            {
                return $book->price;
            }
        }   
        return false;
    }
?>

指数:

 <body>
    <div class="cart">
        <strong>Your cart</strong>
        <p id = "cart">Cart is empty</p>
    </div>
    <?php 
        $objXML = simplexml_load_file('books.xml');
        foreach($objXML->book as $book)
        {
            echo '<div>';
            echo 'Name - ' . $book->name, '<br />';
            echo 'price - $'. $book->price, '<br/>';
     ?>

        Quantity -
        <select name="" id="">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
        -
        <input type="hidden" value = "<?php echo $book['id']; ?>">
        <input type="button" value = "Select this book ">
        <?php 
            echo '</div>';
        }
         ?>
         <script  src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
         <script>
            $(document).ready(function(){
                $('input:button').click(function(){
                    $.post('calculate.php',
                    {
                        bookId : $(this).prev('input:hidden').val(),
                        quantity: $(this).prev().prev('select').val()
                    },
                    function(data)
                    {
                        $('#cart').html(data);
                    }
                    )
                });
            });
         </script>
 </body>

1 个答案:

答案 0 :(得分:0)

尝试移动$bookFound = false;语句上方的if(count($booksInfo) > 0)语句。如果未执行if(count($booksInfo) > 0){}块,则在您到达$bookFound块时未初始化if(!$bookFound){}