Получение ошибок в PHP
У меня проблемы с созданием страницы корзины. Каждый раз, когда я добавляю продукт, он показывает, что продукт был добавлен, но не отображает информацию о продукте...
Это код в моей корзине: php:
<?php
$id = $_GET[BikeCode]; //the product id from the URL
$action = $_GET[action]; //the action from the URL
//if there is an id and that id doesn't exist display an error message
if($id && !productExists($id)) {
die("Error. Product Doesn't Exist");
}
switch($action) { //decide what to do
case "add":
$_SESSION['cart'][$id]++; //add one to the quantity of the product with id $id
break;
case "remove":
$_SESSION['cart'][$id]--; //remove one from the quantity of the product with id $id
if($_SESSION['cart'][$id] == 0) unset($_SESSION['cart'][$id]); //if the quantity is zero, remove it completely (using the 'unset' function) - otherwise is will show zero, then -1, -2 etc when the user keeps removing items.
break;
case "empty":
unset($_SESSION['cart']); //unset the whole cart, i.e. empty the cart.
break;
}
if($_SESSION['cart']) {
echo "<table width=\"100%\">";
foreach($_SESSION['cart'] as $id => $quantity) {
$sql = sprintf("SELECT Manufacturer, Model, Price FROM Bike WHERE BikeCode = $id;", $id);
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0) {
list($Manufacturer, $Model, $Price) = mysql_fetch_row($result);
$line_cost = $price * $quantity; //work out the line cost
$total = $total + $line_cost; //add to the total cost
echo "<tr><th>Manufacturer:</th><th>Model:</th><th>Price:</th></tr>";
echo "<tr>";
echo "<td align=\"center\">$Manufacturer</td>";
echo "<td align=\"center\">$Model</td>";
echo "<td align=\"center\">$Price</td>";
echo "</tr>";
}
}
echo "<tr>";
echo "<td colspan=\"2\" align=\"right\">Total</td>";
echo "<td align=\"right\">£$total</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"3\" align=\"right\"><a href=\"$_SERVER[PHP_SELF]?action=empty\" onclick=\"return confirm('Are you sure?');\">Empty Cart</a></td>";
echo "</tr>";
echo "</table>";
}else{
echo "You have no items in your shopping cart.";
}
function productExists($id) {
$sql = "SELECT * FROM Bike WHERE BikeCode = $id";
return mysql_num_rows(mysql_query($sql)) > 0;
}
?>
Я считаю, что ошибка происходит из этого раздела в коде, но я не могу выяснить, что это такое:
foreach($_SESSION['cart'] as $id => $quantity) {
$sql = sprintf("SELECT Manufacturer, Model, Price FROM Bike WHERE BikeCode = $id;", $id);
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0) {
list($Manufacturer, $Model, $Price) = mysql_fetch_row($result);
$line_cost = $price * $quantity; //work out the line cost
$total = $total + $line_cost; //add to the total cost
echo "<tr><th>Manufacturer:</th><th>Model:</th><th>Price:</th></tr>";
echo "<tr>";
echo "<td align=\"center\">$Manufacturer</td>";
echo "<td align=\"center\">$Model</td>";
echo "<td align=\"center\">$Price</td>";
echo "</tr>";
}
}
Помощь будет оценена и спасибо заранее.
РЕДАКТИРОВАТЬ
Это то, что ошибка, по-видимому:
Примечание: использование неопределенной константы BikeCode - предполагается, что 'BikeCode' в /homes/2012/abpr904/html/velocity/basket.php в строке 42 Примечание: неопределенный индекс: BikeCode в / homes / 2012 / abpr904 / html / speed / basket. php в строке 42 Примечание: использование неопределенного постоянного действия - предполагаемое "действие" в /homes/2012/abpr904/html/velocity/basket.php в строке 43 Примечание: неопределенный индекс: действие в / homes / 2012 / abpr904 / html / speed / basket.php в строке 43 Предупреждение: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, логическое значение указано в /homes/2012/abpr904/html/velocity/basket.php в строке 76 Примечание: неопределенная переменная: всего в / homes / 2012 / abpr904 / html / speed / basket.php в строке 94
1 ответ
$sql = sprintf("SELECT Manufacturer, Model, Price FROM Bike WHERE BikeCode = %d;", $id);
Вы используете sprintf неправильно.
Но вы должны переключиться на PDO и провести санитарную обработку должным образом.
Также я предполагаю, что вы имеете в виду $id = $_GET['id'] или какой-то постоянный идентификатор. Было бы безумно назначать уникальный параметр get для каждого элемента.