[PHP] Sessie verwijdert niet compleet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben een shopping cart aan het maken waarin ik met behulp van sessies producten toevoeg. Deze producten sla ik als volgt op:

PHP:
1
$_SESSION['cart'][$_POST['iid']] = $_POST['amount'];


Goed, dat werkt. Hiermee lees ik de items uit:

PHP:
1
2
3
4
5
6
7
8
9
10
if(isset($_SESSION))
{
  if(isset($cart))
  {
    foreach($_SESSION['cart'] as $iid => $amount)
    { 
    // Hier de code om alles te laten zien
    }
  }
}


En hiermee verwijder ik ze:

PHP:
1
unset($_SESSION['cart'][$_GET['iid']]);


Ok dit werkt allemaal. Als ik voor het eerst bij m'n shopping cart kom, staat er netjes dat hij leeg is. Als ik hierna een item toevoeg en weer verwijder, blijft er echter een leeg "informatie" veld staan. Er staat dus "Artikel, Prijs" etc bovenaan, maar geen data in de sessie. Ik ben bang dat hij een stukje sessie achterlaat oid.

Iemand enig idee?

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
doe eens de output van print_r($_SESSION) als je iets in je cart hebt, en vervolgens weer nadat je het er uit hebt haalt.

[ Voor 6% gewijzigd door Y0ur1 op 05-04-2007 20:35 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok.

Als er iets in zit:
PHP:
1
Array ( [cart] => Array ( [25] => 2 ) )


Nadat ik dit verwijder:
PHP:
1
Array ( [cart] => Array ( ) )

Acties:
  • 0 Henk 'm!

Verwijderd

Ja hij doet een unset() op $_SESSION['cart'], dus dat klopt :) Je kan twee dingen doen als ik even snel nadenk:

- bij het verwijderen kijk je na unset of 'cart' leeg is, zo ja dan verwijder je ook cart uit je session (zodat session helemaal leeg is)
of:
- bij het bepalen of de winkelwagen leeg is tel je het aantal items in $_SESSION['cart']

edit
ipv deleten kun je natuurlijk ook je aantal op 0 zetten, wat ook weer zijn voor- en nadelen heeft natuurlijk :)

[ Voor 14% gewijzigd door Verwijderd op 05-04-2007 20:41 ]


Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 18:54
Als ik het goed heb (ik gebruik alleen cookies, nooit sessies) "unset" hij alleen de sessie.

Dus als sessie: cart 1 bedraagd, haalt ie volgens mij alleen de "1" weg. Dus sessienaam "cart" is blanco. Als iemand z'n browser afsluit, is de sessie helemaal verwijderd.

Dus je moete denk ik controleren op inhoud ipv aanwezigheid van sessie.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Harstikke bedankt! Het laten tellen van aanwezige items werkt!

Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
wat dacht je van unset($_SESSION("cart")) ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dan haalt ie alles weg, niet het geselecteerde item

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
PHP:
1
2
3
4
unset($_SESSION['cart'][$_GET['iid']]);

if(count($_SESSION['cart'] == 0)
  unset($_SESSION['cart'];
Pagina: 1