Array in $_SESSION speichern

  • PHP

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MB-Tech.

    Array in $_SESSION speichern

    Hey Leute,

    bin gerade dabei einen Mini Onlineshop zu schreiben. Die Anzahl der Artikel werden per $_POST ausgelesen und in ein Array gespeichert. Das klappt soweit.
    Dieses Array wird dann in die $_SESSION übergeben und später wieder herausgeholt. Doch genau da ist das Problem.

    Quellcode

    1. for($i = 0; $i < $max; $i++)
    2. {
    3. $artikel[$i] = $_POST['menge_'.$i];
    4. }
    5. $_SESSION['artikel'] = $artikel;


    Hole ich es wieder, also mit $artikel = $_SESSION['artikel']; und möchte das Array auslesen, dann ist es leer.


    Hoffe ihr habt da ne Idee.


    Gruß
    error_reporting(E_ALL);

    ist jetzt an. Fehler kommen keine, klappen tut es aber trotzdem nicht...
    Dann hast du was falsch gemacht, mit folgendem funktioniert's bei mir nämlich:

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. if(!isset($_SESSION["json"]) || isset($_GET["new"])) {
    4. $testarray = array(
    5. "blub" => "test",
    6. "test2" => array(
    7. "test3" => "mep",
    8. "testt" => array(0, 1, 3),
    9. "test bla" => "meppp"
    10. ),
    11. );
    12. $string = json_encode($testarray);
    13. $_SESSION["json"] = $string;
    14. var_dump($testarray);
    15. }
    16. else {
    17. $arr = json_decode($_SESSION["json"], true);
    18. var_dump($arr);
    19. var_dump(true);
    20. }


    Funktioniert mit JSON aber auch nur, wenn's keine Objekte gibt.
    Sonst guck mal hier.
    Hier mal ein paar mehr Ausschnitte:

    Funktion 1 zum einlesen

    PHP-Quellcode

    1. $max = file("dat/Artikel.txt"); //Anzahl Artikel
    2. $max = sizeof($max);
    3. for($i = 0; $i < $max; $i++)
    4. {
    5. $artikel[$i] = $_POST['menge_'.$i];
    6. }
    7. $_SESSION['artikel'] = json_encode($artikel);


    Funktion 2 zum ausgeben

    PHP-Quellcode

    1. $artikel = json_decode($_SESSION['artikel'],true);
    2. for($n = 0; $n < sizeof($artikel); $n++)
    3. {
    4. $anzahl = $artikel[$n];
    5. echo "Anzahl Artikel ".$n.": ".$anzahl;
    6. }



    $max etc. stimmt alles, wenn ich mir es ausgeben lasse. Auch wenn ich in Funktion 1 Werte auslese aus dem Array passt alles, nur in Funktion 2 ist dann alles leer...