Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgeben von Get-Variablen mit doppelten Namen und Übertragung in eine Session

Einklappen

Neue Werbung 2019

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

  • Ausgeben von Get-Variablen mit doppelten Namen und Übertragung in eine Session

    Hallo zusammen,

    ich habe mich schon dumm und dämlich gegoogelt und hoffe nun, hier Hilfe zu finden (ich bin leider noch nicht sonderlich fit in PHP).
    Ich will ein kleines Shopsystem machen, bei Klick auf "in den Warenkorb" wird die ID des Artikels in eine Get-Variabel gespeichert. Das kann man für jeden Artikel beliebig wiederholen, sodass die Getvariabel z.b. wie folgt aussieht:

    www.url.de?site=shop&id=1&id=2&id=3

    Wenn ich nun das Ganze so ausgeben will, wird immer nur die letzte id angezeigt:

    PHP-Code:
    foreach($_GET as $key=>$value){
       echo 
    $key." -> ".$value."<br>";
     } 
    Das Ganze möchte ich dann nun noch in einer Session speichern, um alles auf der Warenkorb-Seite anzeigen lassen zu können.

    Wenn es eine ganz andere & einfachere Möglichkeit gibt, wäre das auch toll.

    Vielen Dank schon mal & LG


  • #2
    Definiere den Parameter id als ein Array.

    www.example.org?site=shop&id[]=1&id[]=2&id[]=3

    Kommentar


    • #3
      die id ist zuerst 1 dann 2 dann 3

      tja, das hat sich etwas überschnitten...

      Kommentar


      • #4
        @ Zeichen32:
        Klappt leider auch nicht. Oder muss ich die foreach-Schleife dann anders ausgeben?

        Kommentar


        • #5
          Das Ganze möchte ich dann nun noch in einer Session speichern, um alles auf der Warenkorb-Seite anzeigen lassen zu können.
          Dann speicherst du dir eben ein Array in die Session das du mit jedem Klick erweiterst. Also sinngemäß:

          PHP-Code:
          $_SESSION['produkt_id'][] = (int)Artikelnummer
          Ein Array in ein GET habe ich persönlich noch nicht gesehen, vom Gefühl her würde ich das vorher immer serialisieren.

          Kommentar


          • #6
            das du mit jedem Klick erweiterst
            Und somit brauchst du deinen GET-Schwanz (?site=shop&id=1&id=2&id=3) auch nicht. Immer nur die die aktuell ergänzt werden soll wird per GET übergeben. Der Rest ist ja schon in der Session.
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              @ TessaKavanagh:

              Leider verstehe ich deinen Code nicht ganz. Was bedeutet und worauf bezieht sich
              (int)Artikelnummer
              ?

              und @ hausl: Wie genau kann ich das mit einem Klick erweitern?

              Ich hatte mir sowas zusammengebastelt:

              PHP-Code:
              $int_count 1;

              if(isset(
              $add_to_cart_link) == true){
                 
              $int_count $int_count +1;

              ($add_to_cart ist der Link, bei dem die ID übertragen wird).

              Und meinen Link habe ich dementsprechend angepasst:

              ....url... > id_'.$int_count

              Das hat mehr schlecht als recht funktioniert, damit ich unterschiedliche Parameter-Namen bekomme, aber darauf wolltest du ja nicht hinaus, oder?

              Kommentar


              • #8
                @ TessaKavanagh:

                Leider verstehe ich deinen Code nicht ganz. Was bedeutet und woraus bezieht sich
                Zitat:
                (int)Artikelnummer

                ?
                (int) bezieht sich auf den Datentyp (Integer) = ganzzahlige Zahl.

                Artikelnummer bezieht sich auf die ID des Produktes also z.B. 1 oder 2 oder 3 usw.
                Da war der hausl schneller

                Kommentar


                • #9
                  (int)Artikelnummer
                  Nennt sich Typecasting: http://php.net/manual/de/language.ty...es.typecasting

                  und @ hausl: Wie genau kann ich das mit einem Klick erweitern?
                  In dem "hinzufügen" Link übergibst du die ID des Produktes und ergänzt diesen GET-Parameter (=die ID vom Link) in der Session. Im Grunde eh genau wie Tessa... schreibt.

                  Zitat von Tessa...
                  Dann speicherst du dir eben ein Array in die Session das du mit jedem Klick erweiterst
                  LG
                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Lass dir immer $_GET per var_dump ausgeben und schau dir an, was da reinkommt.
                    PHP-Klassen auf github

                    Kommentar


                    • #11
                      @ TessaKavanagh:

                      Aber woher wird die Artikelnummer gezogen - ich habe jetzt das hier versucht ($data["ARTIKEL_ID"] ist das Ergebnis der Datenbankabfrage):
                      PHP-Code:
                      $_SESSION['produkt_id'][] = $data["ARTIKEL_ID"]; 
                      .. aber so kommen logischerweise alle ID's aus der Datenbank-Tabelle.

                      auch wenn ich es in eine if-Abfrage stecke, da der Link ja immer da ist (oder wie kann ich es machen, dass nur die ID kommt, wo es wirklich ANGEKLICKT wurde):

                      PHP-Code:
                      if (isset ($add_to_cart_link) == true){
                       
                      $_SESSION['produkt_id'][] = $data["ARTIKEL_ID"];  

                      Kommentar


                      • #12
                        Du baust beim Anklicken eines Artikels einen Link zusammen wie bisher.

                        in der URL steht dann http://www.irgendetwas.tld?id=1

                        (Statt 1 kann da natürlich auch 2 oder 6478364943 stehen)
                        PHP-Code:
                        //mit 
                        $_SESSION['produkt_id'][] = (int)$_GET['id'];

                        /*speicherst du den Wert dann in die Session wo du Ihn später abfragen kannst.
                         Natürlich solltest du drum herum noch Prüfungen ob GET gesetzt ist bzw.
                        ob der Artikel schon im Array steht einbauen */ 
                        Ansonsten verstehe ich grade dein Problem nicht. Denn die ID kommst selbstverständlich aus dem Link wie bisher auch. Im Prinzip stellt es doch nur eine Erweiterung der bisherigen Funktionsweise dar.

                        Kommentar


                        • #13
                          Das klingt logisch, aber wenn ich die Inhalte der Session ausgeben lasse, kommen alle ID's die aus der Datenbank gezogen werden können, noch bevor der Link angeklickt wurde:

                          PHP-Code:
                          $_SESSION['produkt_id'][] = (int)$_GET['id']; 

                          foreach(
                          $_SESSION['produkt_id'] as $key=>$value){
                               echo 
                          $key." -> ".$value."<br>";
                           } 

                          Kommentar


                          • #14
                            ich würde mir hier eine Klasse Warenkorb bauen und diese komplett in eine Session-Variable ablegen.

                            Alles andere führt in eine Sackgasse.

                            Schön wäre es auch, wenn Du den Warenkorb per Ajax befüllst...

                            Kommentar


                            • #15
                              Das klingt logisch, aber wenn ich die Inhalte der Session ausgeben lasse, kommen alle ID's die aus der Datenbank gezogen werden können, noch bevor der Link angeklickt wurde:
                              Die ID's können doch überhaupt nur in die SESSION gelangen wenn du Sie da rein speicherst. Die können nicht auf magische Weise den Weg da hinein finden.

                              Kommentar

                              Lädt...
                              X