2010-12-11 3 views
1

Ich habe versucht, einen Einkaufswagen zu machen und bekam einen Code von Web ..PHP-Sitzungsfehler

<?php 
session_start(); 
require_once 'class/Item.php'; 
$product_id = $_REQUEST['i_id']; 
$action = $_REQUEST['action']; 

$item= new Item(); 

if($product_id && !$item->productExists($product_id)) { 
    die("Error. Product Doesn't Exist"); 
} 

switch($action) { 
    case "add": 
     $_SESSION['cart'][$product_id]++; 
    break; 

    case "remove": 
     $_SESSION['cart'][$product_id]--; 
     if($_SESSION['cart'][$product_id] == 0) unset($_SESSION['cart'][$product_id]); 
    break; 

    case "empty": 
     unset($_SESSION['cart']); 
    break; 
} 
?> 

aber durring Hinzufügen der ersten Artikel in den Warenkorb gelegt es Fehler geht. Wie kann ich das korrigieren?

Fehler:

Notice: Undefined index: cart in C:\wamp\www\website\store_esp\addtocart.php on line 16

Notice: Undefined index: 2 in C:\wamp\www\website\store_esp\addtocart.php on line 16

+3

Welche Fehler haben Sie bekommen ? – thejh

+0

Vielleicht der Verweis auf ein nicht vorhandenes assoziatives Array-Mitglied ist der Fehler? – thejh

+0

Wahrscheinlich eine Warnung "undefinierter Index". Ich denke '$ _SESSION ['cart'] [$ product_id] ++;' ist wahrscheinlich das Problem. – Jonah

Antwort

2

Sieht aus wie Sie können versuchen, Variablen zu manipulieren, die noch nicht eingerichtet sind. Stellen Sie sicher, Sie überprüfen, dass $_SESSION['cart'][$product_id] existiert, bevor Sie etwas tun, darauf:

if(!isset($_SESSION['cart'][$product_id])) 
    $_SESSION['cart'][$product_id] = 0; 

switch($action) { 
... 
+2

Er müsste auch 'if ($ _ SESSION ['cart'] [$ product_id] == 0) nicht gesetzt ...' zu 'if ($ _ SESSION ['cart'] [$ product_id] <= 0) nicht gesetzt werden ... '. – Jonah

1

Versuchen Sie, diese zu ändern:

$_SESSION['cart'][$product_id]++; 

dazu:

if (isset($_SESSION['cart'][$product_id])) { 
    ++$_SESSION['cart'][$product_id]; 
} else { 
    $_SESSION['cart'][$product_id] = 1; 
} 
1

Ohne den Fehler zu wissen, ist es unmöglich, mit Sicherheit zu sagen. Aber meine deduktiven Befugnisse, ich denke, das Problem hier ist:

$_SESSION['cart'][$product_id]++; 

Es sollte sein:

if (isset($_SESSION['cart'][$product_id])) { 
    $_SESSION['cart'][$product_id]++; 
} else { 
    $_SESSION['cart'][$product_id] = 1; 
} 

Und Sie brauchen, dies zu ändern:

session_start(); 
// add this part 
if (!isset($_SESSION['cart'])) { 
    $_SESSION['cart'] = array(); 
} 
require_once 'class/Item.php'; 
$product_id = $_REQUEST['i_id']; 
$action = $_REQUEST['action'];