2015-12-15 4 views
-3

Моя корзина никогда не будет эхом пуста, хотя значение равно 0. Что мне не хватает? Пожалуйста, укажите мне в правильном направлении. Я попытался переместить оператор else, но это только делает ошибки страницы.Корзина не echo empty PHP

<?php 
session_start(); 

include "cart.php"; 
include "style.php"; 


if (isset($_GET['add'])) { 
    $_SESSION['id'.$_GET['add']]++; 
} 

if (isset($_GET['empty'])) { 
    $_SESSION['id_'.$_GET['empty']]--; 
    session_unset(); 
} 

function cart() { 
    echo "<h3>Shopping cart!</h3>"; 
    echo "<table> 
    <tr> 
    <td>Product</td> 
    <td>Quantity</td> 
    <td>Price</td> 
    <td><a href='shoppingcart.php?empty=$name'>[Empty]</a></td> 
    </tr>"; 
    foreach($_SESSION as $name => $value) { 
    if ($value > 0) { 
    echo "<table><tr><td>$name</td><td>$value</td></tr></table>"; 

} 
    else { 
    echo "Cart is empty"; 
} 
}  
} 

?> 
+0

Вы хотите, чтобы очистить все переменные сессии или уничтожить сессию? Между ними есть разница. –

+2

Это ужасный дизайн для тележки. Как насчет '$ _SESSION ['cart'] = array();' Затем создайте массив и поместите его туда. И извлеките массив при извлечении тележки. Вы НЕ хотите, чтобы пользователи определяли имена переменных сеанса (т. Е. '$ _SESSION ['id'. $ _ GET ['add']]') ... которые могут быть уязвимостью безопасности. – developerwjk

+3

ужасный дизайн кода:/ –

ответ

0

Сессия - это не тележка, а тележка не является сеансом. Тележка должна по существу быть одним атрибутом сеанса, который содержит массив.

Вот основная идея (начиная с кодом):

<?php 
session_start(); 

//create default empty cart 
$cart = array(); 

if(isset($_SESSION['cart'])) 
{ 
    //get the cart from the session 
    $cart = $_SESSION['cart']; 
} 

if (isset($_GET['add'])) 
{ 
    $cart[] = $_GET['add']; //add to cart array 
} 

if (isset($_GET['empty'])) 
{ 
    $cart = array(); //set cart array to empty array 
} 

//put the cart in the session 
$_SESSION['cart'] = $cart; 

function cart() 
{ 
?> 
    <h3>Shopping cart!</h3> 
    <table> 
    <tr> 
    <td>Product</td> 
    <td>Quantity</td> 
    <td>Price</td> 
    <td><a href='shoppingcart.php?empty=true'>[Empty]</a></td> 
    </tr> 
<?php 
    if(empty($cart)) 
    { 
     echo "Cart is empty"; 
    } 
    else 
    { 
     echo "<table>"; 
     foreach($cart as $name => $value) 
     { 
      echo "<tr><td>$name</td><td>$value</td></tr>"; 
     } 
     echo "</table>"; 
    }  
}