[SESSIONS] Warenkorb Ich verstehs nidde :-/

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Also:

    Mein Problem ist folgendes:

    Habe ein Warenkorbsystem, dass die Artikel (die sich der user aussucht) per Session merken soll. Dies funktioniert aber nicht, da nach dem zweiten "merken" (sprich in die SESSION speichern) das script mir den nächsten Artikel nur für den ersten Artikel überschreibt!

    Die Zeilen für das "insert":
    PHP-Code:
        $_SESSION['artikel'] = $_GET['id'];
        
    header("LOCATION: warenkorb.php?aktion=warenkorb"); 
    Meine konkrete frage nun: wie krieg ich es hin, dass der mir die Artikel hintereiander wegspeichert und das nicht immer der erste Wert übeerschrieben wird?
    PS: das mit dem Fatal Error, weil wegen string ist nicht mehr da irgendwie.
    habe aus:
    PHP-Code:
    $_SESSION['artikel'][] = $_GET['id']; 
    das hier gemacht:
    PHP-Code:
    $_SESSION['artikel'] = $_GET['id']; 
    Bin für jeden Tipp dankbar!

    mfg

    caschti84

    Kommentar


    • #17
      PS: das mit dem Fatal Error, weil wegen string ist nicht mehr da irgendwie.
      weil du das symptom bekämpft hast, anstatt die ursache zu untersuchen.

      ersteres war richtig. du musst die neuen ids in ein array speichern. du hast aber die eckigen klammern entfernt und übschreibst lediglich die eine session variable immer mit neuen ids. dass du den error bekommst, sollte einen anderen grund haben. deswegen habe ich dir gesagt, mit print_r oder var_dump reinzuschauen - irgendwie ist 'artikel' kein array - warum? weiß nur jemand, der sich den code anschauen und debuggen kann.

      Kommentar


      • #18
        wärest du bereit ein paar minuten zu opfern und dir meinen code mal anzuschaun?

        Würde mich riesig freuen!

        Kommentar


        • #19
          wozu? du bist doch der autor, weißt, wo du diese variable anlegst. weißt, wo du damit arbeitest. kannst jederzeit reinschauen. weißt, wie man ein leeres array anlegt. was soll ich dann noch mit deinem code? und wenn du irgendwo nicht weiterkommst, dann lokalisiere die problemstelle auf max. +/- 5 zeilen, mehr sind selten nötig.

          Kommentar


          • #20
            Hallo

            Versuche mal dann wenigstens die Ursache zu bekämpfen, wenn du Sie nicht finden willst!

            $_GET['id'] = $_GET['id'] * 1; //Damit in jedem Fall ein String ausgeschlossen wird!

            dann
            $_SESSION['artikel'] = array(); // Array definieren

            $_SESSION['artikel'][] = $_GET['id'];
            header("LOCATION: warenkorb.php?aktion=warenkorb");

            Und falls das immer noch nicht klappt, das 2 Werte in der Session stehen, sondern nur einer, warum benutzt du dann unset($_SESSION) oder session_destroy() ?? Ich vermute das. Damit löschst du die alte Session, und mit session_start() legst du eine neue an. Das dann jeweils nur der neue Wert vorhanden ist, ist mir klar.

            Wenn das dann so ist !?? - session_destroy() nur bei logout nutzen, session_start() immer.
            Zuletzt geändert von LGC; 29.08.2005, 05:20.

            Kommentar


            • #21
              //Damit in jedem Fall ein String ausgeschlossen wird!
              das ist doch unfug. wozu gibt's intval() bzw. type casting?

              Kommentar


              • #22
                PHP-Code:
                    session_unset();
                    
                session_destroy(); 
                Des benutze ich ja nur, wenn der ganze warenkorb geleert werden soll!
                Mit der oberen MEthode wird immer nur der erste Wert im Array überschrieben :-(
                Woran kann das denn noch liegen?


                Die Ausgabe mach ich mit ner foreach schleife:
                PHP-Code:
                foreach($_SESSION['artikel'] as $temp)
                    {
                        echo 
                $temp;
                    } 
                Bin nun schon sehr lange zeit am grübeln,warum der mir die werte nicht hintereinander in des session array speichert. komm da einfach nicht hinter!

                Kommentar


                • #23
                  deine frage wurde schon beantwortet.

                  Kommentar


                  • #24
                    wie meine frage wurde beantwortet?

                    Kann nix entdecken!



                    ob man immer so unfreundlich sein muss - MUH!

                    Kommentar


                    • #25
                      meine erste antwort auf dieser seite.

                      Kommentar


                      • #26
                        So sieht der "insert" cide nun aus:
                        PHP-Code:
                        $_SESSION['artikel'] = array(); 
                        $_SESSION['artikel'][] = $_GET['id'];
                        header("LOCATION: index.php?action=warenkorb"); 
                        Meines Erachtens hab ich alles umgesetzt, was du in der ersten Antwort auf dieser Seite beschreiben hast! Aber trotzdem wird immer nur der erste Wert überschrieben!

                        Ich verlange nicht (und will auch nicht), dass man jemanden den kompletten code korrigiert. Aber ich denke wenn man schon um Hilfe fragt, und wenn man sich schon jemand bereit erklärt zuhelfen, dann sollte dies nicht so lapidar geschehen. ich beiße mir daran schon seit anfang des threades die zähne aus. Ich kann einfach nix entdecken, habe schon jede mir mögliche Kombaniation ausprobiert!

                        Tut mir ja auch leid, wenn ich nerve, abba bin mit meinem latein am ende!

                        Kommentar


                        • #27
                          dieser code sagt mehr.

                          dein fehler liegt darin, dass du $_SESSION['artikel'] bei jedem aufruf erst mal mit einem leeren array überschreibst. natürlich wird da nur eine letzte id abgelegt. diese zeile soll (wenn überhaupt) nur beim initialisieren des warenkorbs (sollte es bei dir so eine phase geben) ausgeführt.

                          Kommentar

                          Lädt...
                          X