【问题标题】:save order cart session to database将订单购物车会话保存到数据库
【发布时间】:2015-05-15 22:20:25
【问题描述】:

我想知道是否有人可以帮我将购物车保存到数据库中?我在网上查看了所有内容,但没有找到任何东西。 在用户将商品添加到购物车并继续进行支付功能后,我试图将订购单(用于模拟餐厅)保存到数据库,该功能已经将它们引导到贝宝屏幕。所以基本上,我试图将用户选择的菜肴和价格/数量保存到数据库中,地址以及订单 ID。 在数据库中,我有一个名为菜的表(ID、名称、描述、价格和数量)。 非常感谢 下面是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";
                        }


            }   
        }
    }
}

【问题讨论】:

  • 我没有看到插入查询?您只是在选择数据。另请注意,您正在使用已弃用的 mysql_ 函数;如果你正在学习,我会完全避免这些,我建议查看准备好的 mysqli_ 语句或 PDO
  • 我已经编辑了上面的内容!感谢您的回复。

标签: php mysql


【解决方案1】:

你需要一个订单表和一个订单明细表,当客户下单时,你

插入包含客户信息和新订单 ID 的新订单,支付金额,....

将每个购物车商品、数量、价格以及订单 ID 插入到详细信息表中

清除会话内容。

【讨论】:

  • 我对 php 很陌生,有什么方法可以给我一个例子吗?谢谢你的回复
猜你喜欢
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多