Archief - PHP: Sessie Array

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

sarnath

Legacy Member
Hallo

Ik ben momenteel bezig met een simpele webshop om wat te oefenen met php sessies, maar nu heb ik al een probleem bij het bijhouden van de gekochte items.

Bovenaan de pagina staat hetvolgende :
PHP:
session_start();
$_SESSION['winkelwagentje'][] = array();

In de contentarea van mijn pagina voeg ik indien een item werd besteld, dit item toe aan de array, vervolgens druk ik alles af:

PHP:
if ($_POST['bestel'] === "bestel"){     
    array_push($_SESSION['winkelwagentje'],$_POST['bestelitem']);
                    
    foreach($_SESSION['winkelwagentje'] as $key=>$value)
    {
        echo 'Key: ' . $key . ' Waarde: ' . $value . '<br />';
    } 
}

als output komt dan

Key: 0 Waarde: Array
Key: 1 Waarde: Array
Key: 2 Waarde: fan_80mm
Key: 3 Waarde: Array
Key: 4 Waarde: Array
Key: 5 Waarde: fan_120mm

De items worden dus toegevoegd, maar telkens voorgegaan door 2 extra arrays? Hoe komt dit?

RpR

Legacy Member
Ik denk door dit:
$_SESSION['winkelwagentje'][] = array();

Je voegt bij het openen van een pagina een array toe+bij de verzending dan ook een keer.
Waarom voeg doe je dit eigelijk:
$_SESSION['winkelwagentje'][] = array();

PHP moet in tegenstelling tot andere talen niet weten wat er zal worden ingevoegd.

sarnath

Legacy Member
Ach ja tuurlijk, nu wordt em telkens opnieuw aangemaakt.
K wilde gewoon zorgen dat er geweten was dat die sessievariabele een array is en er dan dingen aan toevoegen, maar dat hoeft php niet op voorhand te weten idd, in tegenstelling tot veel andere programmeertalen :)

bedankt :)

sarnath

Legacy Member
vreemd, toch klopt er nog iets niet

volledig bovenaan pagina
PHP:
<?php
session_start();
if(!isset($_SESSION['winkelwagentje'])){
	/*$_SESSION['winkelwagentje'][] = "";*/
} 
?>

lijn 37
PHP:
array_push($_SESSION['winkelwagentje'],$_POST['bestelitem']);

ik moet blijkbaar toch bovenaan de sessievariabele instantiëren als array, want als ik dat weglaat en enkel array_push gebruik krijg ik volgende error:

Warning: array_push() [function.array-push]: First argument should be an array

Hoe ik het nu heb werkt het dus min of meer, als de sessievar nog niet bestaat maak ik die aan met een lege waarde in de array, maar aangezien je idd geen variabele hoeft te declareren in php is het raar dat ik het zo moet doen, niet?

Cycloon

Legacy Member
Waarom array_push gebruiken?

Code:
$_SESSION['winkelwagentje'][] = $_POST['bestelitem'];

doet net hetzelfde :)

Bram

Legacy Member
Cyc1oon zei:
Waarom array_push gebruiken?

Code:
$_SESSION['winkelwagentje'][] = $_POST['bestelitem'];

doet net hetzelfde :)

jup, was net hetzelfde aant denken...

PHP:
<?php
session_start();
if(!isset($_SESSION['winkelwagentje'])) {
$_SESSION['winkelwagentje'] = ''; // empty, maar bestaat wel, niet echt nodig I guess...
}
//item toevoegen
$_SESSION['winkelwagentje'][$key] = $_POST['bestelitem'];
// key kan bv ID van het item zijn... of gewoon
$_SESSION['winkelwagentje'][] = $_POST['bestelitem'];
//dan begint de array vanaf 0...
?>

Cycloon

Legacy Member
Uw session initialiseren is idd vrij hard onnodig in php. Ik stel me zelf vragen of php hier niet lastig over gaat doen omdat je er eerst een char insteekt en daarna array operaties wil op doen. Het lijkt mij dan wel logischer om er een lege array in te steken... Maar dan nog blijft het onnodig :p

sarnath

Legacy Member
Met $_SESSION['winkelwagentje'][] = $_POST['bestelitem']; werkt het idd, tis door die push dat em niet wilde werken en ik zogezegd mijn sessievariabele moest initialiseren, dacht dat array_push zowat de gangbare methode was.

bedankt!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan