我正在开发一个简单的PHP购物车,总的来说它进展顺利。我遇到的困难是能够从两个单独的数据库中提取数据,以便填充购物车的字段(单价,名称,数量等)。
这是showCart函数:
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="cart.php?action=update" method="post" id="cart">';
$output[] = '<table>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM table_name WHERE id ='. $id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td><a href="cart.php?action=delete&id='.$id.'" class="r">Remove</a></td>';
$output[] = '<td>'.$product_name.' by '.$country.'</td>';
$output[] = '<td>$'.$price.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td>$'.($price * $qty).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table>';
$output[] = '<p>Grand total: <strong>$'.$total.'</strong></p>';
$output[] = '<div><button type="submit">Update cart</button></div>';
$output[] = '</form>';
} else {
$output[] = '<p>You shopping cart is empty.</p>';
}
return join('',$output);
}
购物车工作正常,如上图所示。您可以看到我从MySQL数据库表中提取了ID,价格,产品名称和其他一些位。现在,我想让价格来自不同的数据库表。为此,我尝试了以下内容......
首先,我创建了一个新连接,它将获得我之后的价格值(Get_Price.php):
include 'connect.php';
$actual_price='_POST['new_price']';
$offer_price = mysql_connect("$host", "$username", "$password") or die ("Unable to connect to server");
mysql_select_db("$database", $offer_price) or die ("Unable to select database");
$get_value=mysql_query("SELECT * FROM offers WHERE actual_price = '$actual_price'");
$value_rslt = $db->query($get_value);
$vlu_row = $value_rslt->fetch();
extract($vlu_row);
$vlu_otp[] = '<td>$'.$special_offer.'</td>';
$vlu_otp[] = '<td><input type="text" name="qty'.$unique_id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$vlu_otp[] = '<td>$'.($special_offer * $qty).'</td>';
$total += $special_offer * $qty;
$vlu_otp[] = '</tr>';
然后我用了这个电话:
include 'Get_Price.php';
作为原始代码的替代品:
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="cart.php?action=update" method="post" id="cart">';
$output[] = '<table>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM table_name WHERE id ='. $id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td><a href="cart.php?action=delete&id='.$id.'" class="r">Remove</a></td>';
$output[] = '<td>'.$product_name.' by '.$country.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
include 'Get_Price.php';
} else {
$output[] = '<p>You shopping cart is empty.</p>';
}
return join('',$output);
}
这造成了大量错误,并且删除了所有值。解决方案是什么?
答案 0 :(得分:0)
首先,尝试看看是否可以使用单个数据库。
如果没有,请查看Get_Price.php
。您正在尝试连接到第二个数据库,并使用变量$offer_price
。但是,当您对第二个数据库运行查询时,您正在使用$db->query($get_value);
,它将实际针对第一个数据库运行。
解决方案:在connect.php
中创建两个数据库连接 - 类似$db_cart
和$db_price
。然后使用相关连接照常进行。你的其余代码似乎很好。