保存订单购物车会话到数据库

时间:2015-05-15 22:20:25

标签: php mysql

我想知道是否有人可以帮我将购物车保存到数据库中?香港专业教育学院在网上看了但没有发现任何东西 我试图在用户将项目添加到购物车后将订购表格(对于模拟餐馆)保存到数据库,然后进入付费功能,该功能已经将他们引导至paypal屏幕。所以基本上,我试图保存用户选择的菜肴和数据库的价格/数量,地址以及订单ID。 在数据库中,我有一个名为dish(Id,name,Description,Price and Quantity)的表。 非常感谢 下面是php会话代码。

<?php

session_start();

$page = 'ordering.php';


mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db ('cart') or die (mysql_error());

if (isset($_GET['add'])) {
    $quantity = mysql_query('SELECT id, quantity FROM dishes WHERE id='.mysql_real_escape_string((int)$_GET['add']));
    while ($quantity_row = mysql_fetch_assoc($quantity)){
        if ($quantity_row['quantity']!=$_SESSION['cart_'.(int)$_GET['add']]){
            $_SESSION["cart_".(int)$_GET['add']]+='1';

        }
    }
    header('Location: '.$page) ;
}

if (isset($_GET['remove'])) {
    $_SESSION['cart_'.(int)$_GET ['remove']]--;
    header('Location: '.$page) ;
}

if (isset($_GET['delete'])) {
    $_SESSION['cart_'.(int)$_GET ['delete']]='0';
    header('Location: '.$page) ;
}



function dishes(){
    $get = mysql_query('SELECT id, name, description, price FROM dishes WHERE quantity > 0 ORDER BY id DESC');
    if (mysql_num_rows($get)==0) {
        echo "There are no dishes to display!";
    }
    else {

        while ($get_row = mysql_fetch_assoc($get)) {

            echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />&euro;'.number_format($get_row['price'], 2).' <a href="cart.php?add='.$get_row['id'].'"> Add</a></p>';
        }
    }
}



function cart() {
    $total = 0;
    foreach($_SESSION as $name => $value) {
        if ($value>0) {
            if (substr ($name, 0, 5)=='cart_'){

                $id = substr($name, 5, strlen ($name)-5);
                $get = mysql_query('SELECT id, name, price FROM dishes WHERE id='.mysql_real_escape_string((int)$id)) ;

                while ($get_row = mysql_fetch_assoc($get)) {

                    $sub = $get_row['price']*$value;
                    echo $get_row['name'].' x '.$value.' @ &euro;'.number_format($get_row['price'], 2). ' = &euro;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />';
                }
            }
            $total += $sub;
        }
    }
    if ($total == 0) {
        echo "no items.";
    }
    else {
        echo 'Total: &euro;'.number_format($total, 2).'</p>';


?>

<html>
<p> 
<form action='viewcart.php' method='POST'>
<input type='submit' name='view' value='Confirm'>
</p>

    <?php
    }
}
?>

这是用于显示菜肴和购物车的html文件。

<div class="callout">
<aside class="sidebar">
<br />
<fieldset>
<?php cart(); ?>
</fieldset>
</div>
<br />
<?php dishes (); ?>
</body>
<?php include 'footer.html'; ?>
</html>

我试图保存它,但即时通讯获得每个项目的ID,我想要每个订单的ID,我也想要总价但它回来空了

这是我插入数据库的代码

function orders() {

    foreach($_SESSION as $name => $value) {
        if ($value !=0) {
            if (substr ($name, 0, 5)=='cart_'){
//-5 so it = to the id number
            $id = substr($name, 5, strlen ($name)-5);   
            $get = mysql_query('SELECT id, name, price FROM dishes WHERE id='.mysql_real_escape_string((int)$id));
                while ($Get_row = mysql_fetch_assoc($get)) {


                    echo '<input type="text" name="item_name_'.$num.'" value="'.$Get_row['name'].'">';
                    echo '<input type="text" name="amount_'.$num.'" value="'.$Get_row['price'].'">';
                    echo '<input type="text" name="quantity_'.$num.'"value="'.$value.'">';
                    echo '<input type="text" name="total_'.$num.'"value="'.$total.'">';


                if(mysql_query("INSERT INTO orders (name,quantity,price) VALUES ('$name','$value','$price')"))
                echo"successfully inserted";
                else
                echo "failed";
                        }


            }   
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要订单表和订单明细表,当客户下订单时,您

插入新订单,其中包含客户信息和新订单,已支付金额,....

将每个购物车项目,数量,价格插入详细信息表格,订单ID

清除会话内容。