将多个产品添加到一个购物车中

时间:2014-04-18 16:32:21

标签: php mysql sql

嘿,我正在尝试将来自不同产品页面的产品添加到一个购物车中,例如,如果我从asus页面选择产品,而另一个产品来自acer页面,它将在一个购物车中显示它们但现在我得到了一个错误,说

从asus中选择名称,其中serial = 1

字段列表中的列'名称'不明确

我为每个产品创建了不同的表

CREATE TABLE asus ( serial int(11), name varchar(20), price float(), picture varchar(80) );

CREATE TABLE acer ( serial int(11), name varchar(20), price float(), picture varchar(80) );

CREATE TABLE lenovo ( serial int(11), name varchar(20), price float(), picture varchar(80) );

这是获取名称和价格的功能:

function get_product_name($pid){
    $result=mysql_query("select name from asus,acer,lenovo
    where serial=$pid") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['name'];
}




 function get_price($pid){
    $result=mysql_query("select price from  asus,acer,lenovo where serial=$pid") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['price'];
}

这是addtocart的功能,产品存在并获得总计:

function get_order_total(){
    $max=count($_SESSION['cart']);
    $sum=0;
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=$_SESSION['cart'][$i]['qty'];
        $price=get_price($pid);
        $sum+=$price*$q;
    }
    return $sum;
}

function addtocart($pid,$q){
    if($pid<1 or $q<1) return;

    if(is_array($_SESSION['cart'])){
        if(product_exists($pid)) return;
        $max=count($_SESSION['cart']);
        $_SESSION['cart'][$max]['productid']=$pid;
        $_SESSION['cart'][$max]['qty']=$q;
    }
    else{
        $_SESSION['cart']=array();
        $_SESSION['cart'][0]['productid']=$pid;
        $_SESSION['cart'][0]['qty']=$q;
    }
}




function product_exists($pid){
    $pid=intval($pid);
    $max=count($_SESSION['cart']);
    $flag=0;
    for($i=0;$i<$max;$i++){
        if($pid==$_SESSION['cart'][$i]['productid']){
            $flag=1;
            break;
        }
    }
    return $flag;
}

这适用于每个产品页面中的添加到购物车按钮:

 <button type="button" title="Add to Cart" class="button btn-cart"onclick="addtocart(<?php echo $row['serial']?>)" />

这适用于购物车页面:

<?php
        if(is_array($_SESSION['cart'])){
        $max=count($_SESSION['cart']);
            for($i=0;$i<$max;$i++){
                $pid=$_SESSION['cart'][$i]['productid'];
                $q=$_SESSION['cart'][$i]['qty'];
                $pname=get_product_name($pid);
                $price=get_price($pid);

                if($q==0) continue;
        ?>
                <tr bgcolor="#FFFFFF"><td><?php echo $i+1?></td><td>
                <?php echo $pname?>

                </td>
                <td>RM 
                <?php echo $price?> 

1 个答案:

答案 0 :(得分:0)

请在此处查看答案: SQL Query From 2 Tables Using Multiple Aliases

我建议将所有三个表合并到一个组合的Product表中,并使用Flag来表示它是什么类型的产品。

如果没有,那么你需要使用表别名。

function get_product_name($pid){
    $result=mysql_query("select isnull(isnull(a.name, c.name), l.name) as name from asus a,acer c,lenovo l
    where(a.serial=$pid OR c.serial=$pid OR l.serial=$pid) ") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['name'];
}