所购商品用session保存,不要直接入库。
只有当客户确认购买时再连同客户信息一同入库,这样至少在客户放弃购买时无须删除库中的无效信息。
预备购买的商品可用二维数组保存,无论是添加、修改、删除还是显示均很方便
使用session保存购物车的另一个好处是当客户选购商品时无须预先登录

解决方案 »

  1.   

    TO:xuzuning(唠叨) 
    按你的意思是:当用户点击 订购 时,把这个商品用session保存起来,确认购买才入库。这样的话那客户所选的商品均得放入一个session数组中,可这个数组如何定义呢?
      

  2.   

    这是一个二维数组,形如
    Array (
      [0] => Array (
             [id] => 
             [num] => 
           )
      [1] => Array (
             [id] => 
             [num] => 
           )
    )
    即索引数组的每一个元素是一个数组,表示一个商品。
    至少需要保存“商品编号”和“欲购数量”。
      

  3.   

    <?php
    session_start();
    $_SESSION['test'][0] = "a";
    $_SESSION['test'][1] = "b";
    $_SESSION['test'][2] = "c";
    $_SESSION['test'][3] = "d";
    $_SESSION['test'][4] = "e";print_r ($_SESSION['test']);
    ?>
      

  4.   

    谢谢xuzuning(唠叨)兄:
    这个数组是不是在商品列表(shooping.php)页里面定义的呢?
    我做的页面链接是这样的:index.php(每件商品下方均有一个'订购'按钮,点'订购')--->商品列表(shooping.php)
    Array (
      [0] => Array (
             [id] => 
             [num] => 
           )
      [1] => Array (
             [id] => 
             [num] => 
           )
    )
    这中间的[id] and [num]是不是用session注册过的变量呢?能给一个实例吗?
      

  5.   

    谢谢  feel8(准备早起的鸟)
    <?php
    session_start();
    $_SESSION['test'][0] = "a";
    $_SESSION['test'][1] = "b";
    $_SESSION['test'][2] = "c";
    $_SESSION['test'][3] = "d";
    $_SESSION['test'][4] = "e";print_r ($_SESSION['test']);
    ?>
    能加上注释吗?所定义的test是什么变量呢?
      

  6.   

    index.php(每件商品下方均有一个'订购'按钮,点'订购')--->商品列表(shooping.php)
    “订购”处理shooping.php:
    <?php
    session_start();
    $_SESSION['商品'][] = array(商品编号=>xxx,所购数量=>xxx,...);
    根据具体的传递方式决定变量的取值方式

    ?>
      

  7.   

    谢谢 xuzuning(唠叨) 兄
    我先试一下,若不明白再请教
      

  8.   

    php购物车其实跟其它的一样,都是用SESSION来保存商品的.楼主的存到数据库中的做法太不可取的,这样系统的花消会很大的,因为用户点了一个商品,他不一定就会购买,所以数据库的读写太频繁了.最核心的还是要用SESSION来保存,PHP的一个优势就是可以用ARRAY()还要用到的就是implode()这个函数.
      

  9.   

    http://www.gs160.net/~sports98/out/read.php?id=208我以前写的购物车,你可以看看..
      

  10.   

    to:xuzuning(唠叨) 谢谢!
    现在有一点眉目了,执行不了时再来请教
      

  11.   

    晕啊!!用session还是不知道怎么写,只会用数据库。但很多前辈都说用数据库不太可取,用session真是没有头绪啊,我想用session的话,也必须与数据库相结合,但是怎么结合起来呢?怎么才能做到反复的订购而不会让原有的商品丢失呢?学做购物车真的尝到头痛的滋味了
      

  12.   

    给你一个测试例,共4个文件
    data.php //商品目录
    <?php
    $data = array(
      s001 => array(名称=>"甲",单价=>100.00),
      s002 => array(名称=>"乙",单价=>110.00),
      s003 => array(名称=>"丙",单价=>90.00),
      s004 => array(名称=>"丁",单价=>10.00),
      s005 => array(名称=>"戊",单价=>30.00),
      s006 => array(名称=>"己",单价=>50.00),
    );
    ?>
    mail.htm
    <frameset cols="*,*">
     <frame src=list.php name=list>
     <frame src=mycart.php name=mycart>
    </frameset>list.php
    商品列表
    <form method=post target=mycart action=mycart.php>
    <table>
    <tr><th>名称</th><th>单价</th><th>数量</th></tr>
    <?php
    include "data.php";
    foreach($data as $k=>$v)
      echo "<tr><td>$v[名称]</td><td>$v[单价]</td><td><input type=text name='id[$k]' size=3 value=$数量></td></tr>";
    ?>
    </table>
    <input type=submit name=cart value="加入购物车">
    </form>mycart.php // 显示和修改购物车
    <?
    session_start();
    include "data.php";if(isset($_POST['id']))
     foreach($_POST['id'] as $k=>$v) {
       if($v > 0) {
         $_SESSION['cart'][$k] = $data[$k];
         $_SESSION['cart'][$k][数量] = $v;
       }else if($_POST['cart'] == "刷新")
         unset($_SESSION['cart'][$k]);
     }
    if(!is_array($_SESSION['cart']))
      exit;
    ?>
    <form method=post>
    <table>
    <tr><th>名称</th><th>单价</th><th>数量</th></tr>
    <?php
    foreach($_SESSION['cart'] as $k=>$v)
      echo "<tr><td>$v[名称]</td><td>$v[单价]</td><td><input type=text name='id[$k]' size=3 value=$v[数量]></td></tr>";
    ?>
    </table>
    <input type=submit name=cart value="刷新">
    </form>
      

  13.   

    osCommerce - best known Open Source shopping cart
      

  14.   

    首先谢谢各位的指点。我还是有些不明白  产品名称       会员价               市场价
      ($picname)   $price*0.9             $price
     胶水机       会员价:450.00¥    市场价:500.00¥  [购买] 
     气动压花     会员价:270.00¥    市场价:300.00¥  [购买] 
     高频机       会员价:1800.00¥   市场价:2000.00¥ [购买]以上是我在主页面中显示出来的一个商品列表(其中商品是从数据库中调出来),当我点 [购买] 时,要怎么才能把相关的变量带入shopping.php中呢?又如何把每一个变量放入一个名为$new的数组中呢?
      

  15.   

    我原来做系统时,写的设计文档的一部分,思路就是这样。放入对象比数组要灵活一些。用户可以通过该功能模用G币购买网站上提供的商品。
    程序实现要求首先创建购物车的实例shopping 和商品的datamodel,
    然后将所购商品的信息存入datamodel中,多个商品的datamodel存入shopping中,
    shopping的临时保存采用session来完成,要求shopping对象中除了可以存入所购商品,还要求提供记算所购商品总金额(G币)的方法,
    在结算时,程序将计算出的总金额与用户当前的余额进行比较,
    只有用户余额大于所购物品的总金额时,才可以进行结算,否则给出错误提示。
    结算成功后将所购商品信息存入“(G币)用户消费记录表中”