Ошибка пользовательской корзины: невозможно использовать возвращаемое значение функции в контексте записи

Я делаю небольшую систему корзины покупок для своего сайта, но есть ошибка, которую я не могу устранить. Это происходит из моей функции cart (). Ниже вы можете увидеть весь мой код, любая помощь будет оценена, спасибо заранее.

<?php
session_start();

$page = 'shop.php';

mysql_connect('localhost','root','');
mysql_select_db('_cart') or die(mysql_error());

if (isset($_GET['add'])) {
$quantity = mysql_query('SELECT id, quantity FROM products WHERE id='.mysql_real_escape_string((int)$_GET['add']));
while ($quantity_row = mysql_fetch_assoc($quantity)) {
if ($quantity_row['quantity'] != $_SESSION['cart_'.(int)$_GET['add']]) {
$_SESSION['cart_'.(int)$_GET['add']] + '1';
}
}
header('Location: '.$page);
}

if (isset($_GET['remove'])) {
$_SESSION['cart_'.(int)$_GET['remove']]--;
header('Location: '.$page);
}

if (isset($_GET['delete'])) {
$_SESSION['cart_'.(int)$_GET['delete']]='0';
header('Location: '.$page);
}

function paypal_items() {
$num = 0;
foreach ($_SESSION as $name => $value) {
if ($value != 0) {
if (substr($name, 0, 5)=='cart_') {
$id = substr($name, 5, strlen($name)-5);
$get = mysql_query('SELECT id, name, price, shipping FROM products WHERE id='.mysql_real_escape_string((int)$id));
while ($get_row = mysql_fetch_assoc($get)) {
$num++;
echo '<input type="hidden" name="item_number_'.$num.'" value="'.$id.'">';
echo '<input type="hidden" name="item_name_'.$num.'" value="'.$get_row['name'].'">';
echo '<input type="hidden" name="amount_'.$num.'" value="'.$get_row['price'].'">';
echo '<input type="hidden" name="shipping_'.$num.'" value="'.$get_row['shipping'].'">';
echo '<input type="hidden" name="shipping2_'.$num.'" value="'.$get_row['shipping'].'">';
echo '<input type="hidden" name="quantity_'.$num.'" value="'.$value.'">';
}
}
}
}
}

function cart() {
foreach($_SESSION as $name => $value) {
if ($value>0) {
if (substr($name, 0, 5) = 'cart_') {
$id = substr($name, 5, (strlen($name)-5));
$get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id));
while($get_row = mysql_fetch_assoc($get)) {
$sub = $get_row['price']*$value;
echo $get_row['name'].' x '.$value.' @ &euro;'.number_format($get_row['price'], 2).' = &euro;'.number_format($sub, 2).'<a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />';
}
}
$total += $sub;
}
}
if ($total==0) {
echo "Your cart is empty.";
} else {
echo '<p>Total: &euro;'.number_format($total, 2).'</p>';
?>
<p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="pavel@bgtracker-studios.com">
<?php paypal_items(); ?>
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="amount" value="<?php echo $total; ?>">
<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but03.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>
</p>
<?php

}
}

function products() {
$get = mysql_query('SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC');
if (mysql_num_rows($get)==0) {
echo "There are no products to display!";
} else {
while ($get_row = mysql_fetch_assoc($get)) {
echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />&euro;'.number_format($get_row['price'], 2).' <a href="cart.php?add='.$get_row['id'].'">Add</a></p>';
}
}
}

?>

Я получаю следующую ошибку при вызове функции cart (). «Неустранимая ошибка: невозможно использовать возвращаемое значение функции в контексте записи в E: \ xampp \ htdocs \ cart.php в строке 53»

И строка 53 находится внутри функции cart ():

if (substr($name, 0, 5) = 'cart_') {

-1

Решение

Вы, кажется, пытаетесь сравнить это if(), вы должны использовать двойные знаки равенства, а-ля ==, Единственный знак равенства предназначен для присвоения значения.

Этот код должен быть

if (substr($name, 0, 5) == 'cart_') {
0

Другие решения

Ваш опубликованный код на самом деле является правильным и неправильным:

if (substr($name, 0, 5) =='cart_') { // This version is right
if (substr($name, 0, 5) ='cart_') {  // This version is not

Помните разницу между = а также ==,

=  // Assignment
== // Comparison
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector