【发布时间】:2014-04-18 16:32:20
【问题描述】:
嘿,我正在尝试将来自不同产品页面的产品添加到一个购物车中,例如,如果我从华硕页面选择了一个产品,从 acer 页面选择了另一个产品,它会将它们都显示在一个购物车中,但现在我得到了一个错误说
select name from asus where 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'];
}
这是添加到购物车的功能,产品存在并获得总数:
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?>
【问题讨论】:
-
您没有使用带有
serial、name、price、picture和brand的表是否有原因? -
不是答案,但作为仅供参考,最好不要使用保留关键字,例如列或表名称中的“名称”。它会导致各种各样的问题。想一想,这可能是答案。试试“select [name] from asus where serial=1”看看是否能解决问题。
-
不,不是真的没有想过...但是如果我要使用品牌,我将如何称呼它
-
我在上面的评论,该语法适用于 sql server。请参阅此代替 MySql - 从选择查询中转义保留字...:stackoverflow.com/questions/3993465/…