Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Array in sessie opslaan (https://forum.scholieren.com/showthread.php?t=665577)

mvos100 18-11-2003 20:02

[PHP] Array in sessie opslaan
 
Hmmz ik probeer een winkelmandje te maken doormiddel van een array met de producten op te slaan in een sessie en dan op een andere pagina weer uit te lezen. Maar het wil niet helemaal werken. Krijg steeds maar 1 waarde, het lijkt wel of hij de andere waarde overschrijft.

code waarmee ik in sessie stop

PHP-code:


$p_id 
$_GET['p_id']; 
$Aantal =  $_POST['Aantal']; 

if(isset(
$winkelmandje[$p_id])) 
        { 
         
        
$winkelmandje[$p_id] = $winkelmandje[$p_id] + $Aantal

        } 
else 
        { 
         
        
$winkelmandje[$p_id] = $Aantal
         
        } 
         
$_SESSION['winkelwagentje'] = $winkelmandje

code om hem weer uit te lezen:

PHP-code:


foreach($_SESSION['winkelwagentje'] as $producten
        { 
         
        echo(
"$producten"); 
         
        } 


wat doe ik verkeerd?

Scooter B0y 18-11-2003 20:41

serialize & unserialize zijn je vrienden (y)

Da King 18-11-2003 20:53

probeer eens:
PHP-code:

session_register("winkelmandje"); 

in plaats van:

PHP-code:

$_SESSION['winkelwagentje'] = $winkelmandje


mvos100 18-11-2003 21:20

Hey thnx Da king het werk!! (y) :D :cool:

Maar waarom werkt dat andere dan niet? :O

Koen 18-11-2003 21:23

Citaat:

mvos100 schreef op 18-11-2003 @ 22:20:
Hey thnx Da king het werk!! (y) :D :cool:

Maar waarom werkt dat andere dan niet? :O

Omdat je niet zomaar naar een voorgedefinieerde array als $_SESSION weg mag schrijven. Daar moet je de functies voor gebruiken die daarvoor gemaakt zijn, anders wordt 't nooit onthouden.

mvos100 18-11-2003 21:25

Wat bedoel je precies met voor gedefinieerde arrays? en welke functies moet ik dan gebruiken? :confused:

Ik weet misschien domme vragen hoor :p

Da King 19-11-2003 08:02

$_SESSION["winkelmandje"] is een variabele die in de huidige sessie is opgeslagen. Als deze niet bestaat kun je hem dus ook niet aanspreken. Je zult hem dus eerst aan moeten maken met session_register

Triloxigen 19-11-2003 10:26

session_register()

Enlightenment 19-11-2003 12:13

?

Ik kan gewoon $_SESSION['blah'] = 2; doen en bij een volgende pageview kan ik deze prima uitlezen. Natuurlijk gebruik je session_register();.

12Trix 22-11-2003 18:27

Citaat:

Enlightenment schreef op 19-11-2003 @ 13:13:
?

Ik kan gewoon $_SESSION['blah'] = 2; doen en bij een volgende pageview kan ik deze prima uitlezen. Natuurlijk gebruik je session_register();.

Ik ook, zal wel aan de instellingen (of versie) van PHP liggen!

Blowie 10-12-2003 14:42

Citaat:

Da King schreef op 19-11-2003 @ 09:02:
$_SESSION["winkelmandje"] is een variabele die in de huidige sessie is opgeslagen. Als deze niet bestaat kun je hem dus ook niet aanspreken. Je zult hem dus eerst aan moeten maken met session_register
Fout.. sterker nog.. session_register gaan eruit.. dat is nog van oudere php versies.. dus waarschijnlijk heeft het persoon in kwestie gewoon een oude php versie :)

Da King 13-12-2003 21:36

Citaat:

Blowie schreef op 10-12-2003 @ 15:42:
Fout.. sterker nog.. session_register gaan eruit.. dat is nog van oudere php versies.. dus waarschijnlijk heeft het persoon in kwestie gewoon een oude php versie :)
vertel nog even duidelijk wat er nou precies fout aan is dan :s

Blowie 17-12-2003 17:31

Ik neem aan dat je telkens 1 product doorgeeft? Dus bijvoorbeeld is van add.php?p_id=1&Aantal=12..

FF kijken.. ik neem aan dat bovenin elke pagina session_start(); hebt staan?

Ikke ziet hem al..


PHP-code:

$winkelmandje $_SESSION['winkelwagentje'];
// is belangrijk.. anders is steeds je winkelwagentje leeg

$p_id $_GET['p_id'];  
$Aantal =  $_POST['Aantal'];  

if(isset(
$winkelmandje[$p_id]))
  
$winkelmandje[$p_id] = $winkelmandje[$p_id] + $Aantal;  
else  
  
$winkelmandje[$p_id] = $Aantal;  
          
$_SESSION['winkelwagentje'] = $winkelmandje//huppa .. sessie weer volgooien met het winkelwagentje 

en dan voor het uitlezen:

PHP-code:

foreach ($_SESSION['winkelwagentje'] as $prod_ID => $aantal) {
    echo 
"Je hebt product $prod_ID wel $aantal keer besteld<br>\n";


Dat zou het moeten doen.. :)

---

Ik weet niet helemaal meer waar ik het gelezen had.. maar in ieder geval staat dit in de handleiding:

Citaat:

You can also create a session variable by simply setting the appropriate member of the $HTTP_SESSION_VARS or $_SESSION (PHP >= 4.1.0) array

If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, assign variable to $_SESSION. i.e. $_SESSION['var'] = 'ABC';

If you are using $HTTP_SESSION_VARS/$_SESSION and disable register_globals, do not use session_register(), session_is_registered() and session_unregister().

If you enable register_globals, session_unregister() should be used since session variables are registered as global variables when session data is deserialized. Disabling register_globals is recommended for both security and performance reason.
Als je een sessie maakt met behulp van session_register() is het een global en kan je hem niet zomaar aanpassen.. maar maak je hem met $_SESSION['blaat'] = "mekker"; dan is ie gweoon vrij aan te passen.. Dan kan je later best zeggen $_SESSION['blaat'] .= "nog een string er aan gvast..";
Het is dan ook niet aan te raden om nog session_geregister te gebruiken.. En al helemaal niet om ze door elkaar te gebruiken.. :eek:


Alle tijden zijn GMT +1. Het is nu 09:04.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.