Php 将多个产品添加到一个购物车中
嘿,我正在尝试将不同产品页面的产品添加到一个购物车中,例如,如果我从华硕页面选择了一个产品,从宏碁页面选择了另一个产品,它将在一个购物车中同时显示这两个产品,但现在我得到一个错误,即 从asus中选择名称,其中serial=1 字段列表中的“名称”列不明确 我为每种产品创建了不同的表Php 将多个产品添加到一个购物车中,php,mysql,sql,Php,Mysql,Sql,嘿,我正在尝试将不同产品页面的产品添加到一个购物车中,例如,如果我从华硕页面选择了一个产品,从宏碁页面选择了另一个产品,它将在一个购物车中同时显示这两个产品,但现在我得到一个错误,即 从asus中选择名称,其中serial=1 字段列表中的“名称”列不明确 我为每种产品创建了不同的表 创建表asus ( 串行int(11), 名称varchar(20), 价格浮动(), 图片varchar(80) ); CREATE TABLE acer ( 串行int(11), 名称varchar(20),
创建表asus
(
串行int(11),
名称varchar(20),
价格浮动(),
图片varchar(80)
);代码>
CREATE TABLE acer
(
串行int(11),
名称varchar(20),
价格浮动(),
图片varchar(80)
);代码>
创建表
(
串行int(11),
名称varchar(20),
价格浮动(),
图片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'];
}
函数获取产品名称($pid){
$result=mysql\u query(“从华硕、宏碁、联想选择名称
其中serial=$pid”)或die(“从serial=$pid的产品中选择名称”。
。mysql_error();
$row=mysql\u fetch\u数组($result);
返回$row['name'];
}
函数获取价格($pid){
$result=mysql_query(“从华硕、宏碁、联想选择价格,其中serial=$pid”)或die(“从产品中选择名称,其中serial=$pid”。
。mysql_error();
$row=mysql\u fetch\u数组($result);
返回$row[‘价格’];
}
这是addtocart、product exist和get total的函数:
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;
}
函数get\u order\u total(){
$max=计数($_会话['cart']);
$sum=0;
对于($i=0;$i请参见此处的答案:
我建议将所有三个表合并到一个组合产品表中,并用一个标志表示它是什么类型的产品
如果没有,则需要使用表别名
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'];
}
函数获取产品名称($pid){
$result=mysql\u query(“选择isnull(isnull(a.name,c.name),l.name)作为来自华硕a、宏碁c、联想l的名称
其中(a.serial=$pid或c.serial=$pid或l.serial=$pid)”)或die(“从serial=$pid的产品中选择名称”。
.mysql_error();
$row=mysql\u fetch\u数组($result);
返回$row['name'];
}
您不使用带有序列号
、名称
、价格
、图片
和品牌
的表有什么原因吗?答案不是,但仅供参考,最好不要使用保留关键字,如“名称”在列或表名中。它会导致各种问题。仔细想想,这可能就是答案。请尝试“从asus中选择[name],其中serial=1”看看这是否解决了问题。不,我真的没有考虑过……但是如果我要使用brand,我将如何称呼它上面的评论,该语法是针对sql server的。对于MySql,请看这一点-从选择查询中转义保留字…:谢谢divan,但它给出了这个错误,选择产品的名称,其中serial=1的参数不正确调用本机函数“isnull”时的r计数
<?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?>
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'];
}