Warenkorb

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

  • Warenkorb

    Hallo Zusammen

    steh leider auf dem schlauch und komm nicht weiter!

    per post wird mir die ProduktID, die Anzahl und die größe übermittelt.
    Wenn neue ProduktID übersendet wird, dann soll ein neuer Eintrag stattfinden. Ebenso wenn für eine ProduktID schon ein Eintrag im Warenkorb ist, allerdings nicht für diese Größe. Wenn schon ein Eintrag für dei jeweilige ProdID und Größe vorhanden ist, soll lediglich die Anzahl upgedatet werden.

    Bis auf den letzten Teil scheint es auch zu funktionieren, da knabber ich schon ne ganze Weile dran rum

    PHP-Code:
    /**
     * Process.php
     *
     **/

    include("session.php");

    class 
    Process
        
    {
        function 
    Process()
            {
            global 
    $session;

            
    /* ein bereits registrierte User möchte sich einloggen */
            
    if (isset($_POST['login'])) { $this->Login(); }

            
    /* User möchte sich registrieren */
            
    else if (isset($_POST['register'])) { $this->Register(); }

            
    /* User möchte die sprache ändern */
            
    else if (isset($_POST['setLang'])) { $this->setLang(); }

            
    /* angemeldeter User möchte sich ausloggen */
            
    else if ($session->loggedIn) { $this->Logout(); }

            
    /* User fügt einen Artikel dem Warenkorb hinzu */
            
    else if (isset($_POST['add2Card'])) { $this->add2Card(); }

            
    /* ansonsten weiterleitung */
            
    else { header("Location: ../index.php"); }
            }

      ...

        
    /* Einträge im Warenkorb vornehmen */
        
    function add2Card()
            {
                  if (!isset(
    $_SESSION["prod_ids"]))
                {
                    
    $_SESSION["prod_ids"] = array();
                    
    $_SESSION["prod_size"] = array();
                    
    $_SESSION["prod_counts"] = array();
                }



                
    $i=0;
                while (
    $i<count($_SESSION["prod_ids"]) && $_SESSION["prod_ids"][$i] != $_POST["prodID"]) $i++;
                if (
    $i count($_SESSION["prod_ids"])) //increase current product's quantity
                
    {
                    
    $_SESSION["prod_counts"][$i]+=$_POST["count"];
                }
                else 
    //no item - add it to $gids array
                
    {
                    
    $_SESSION["prod_ids"][] = $_POST["prodID"];
                    
    $_SESSION["prod_counts"][] = $_POST["count"];
                    
    $_SESSION["prod_size"][] = $_POST["prod_size"];
                }
                            
    header("Location: ../index.php?shoppingCard");

            }
        }

    ;

    $process=new Process
    über sachdienliche Hinweise wäre ich sehr erfreut
    mfG
    derTrallala
    Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

  • #2
    Re: Warenkorb

    $_SESSION["prod_ids"][] = $_POST["prodID"];
    $_SESSION["prod_counts"][] = $_POST["count"];
    $_SESSION["prod_size"][] = $_POST["prod_size"];

    Diese Array-Struktur finde ich denkbar ungünstig.

    Warum nicht ein mehrdimensionales Arrays, prodID als ersten Schlüssel und prod_size als zweiten?

    Dann brauchst du nur noch prüfen, ob zu [prodID][prod_size] bereits ein Eintrag existiert - wenn ja, zählst du seine Menge um count hoch, wenn nein, legst du ihn mit Menge count an.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi,

      abgesehen davon das es shoppingCar(t) heisst solltest du dir mal die PHP funktionen... in_array() und array_key_exists() ansehen...

      Dann brauchst du weder schleifen noch irgendwelche zähler um rauszufinden ob der bestellte Artikel bereits im Warenkorb liegt oder nicht. Der rest sollte nicht das problem sein.

      Du scheinst nicht gerade ein Anfänger zu sein
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Kommentar


      • #4
        naja im englischen sind beide Ausdrücke synonym zu benutzen.

        aber jetzt zum eigentlichen Problem.

        Wie erzeuge ich denn ein mehrdimensionales array in meinem Fall. Habe damit bisdato noch nicht gearbeitet.

        mfG
        derTrallala

        (irgendwie ist man doch immer ein Anfänger, oder?)
        Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

        Kommentar


        • #5
          Original geschrieben von Timo Trallala

          Wie erzeuge ich denn ein mehrdimensionales array in meinem Fall. Habe damit bisdato noch nicht gearbeitet.
          wahsaga hat dir doch schon gezeigt, liest nochmals

          Kommentar


          • #6
            vielleicht anders,

            wie fülle ich denn $_SESSION["prod_ids"]["prod_size"] mit meinen post-vars

            der Trallala
            Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

            Kommentar


            • #7
              Nee, komm - das ist jetzt wirklich Grundlagenwissen.
              Lies im Handbuch nach, wenn dir das nicht klar ist.

              So lange du das noch nicht mal weist, solltest du von einem "Warenkorb" die Finger lassen ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Sollte man nicht voher überprüffen ob die gesendete Daten auch in Ordnung sind?

                PHP-Code:
                else //no item - add it to $gids array
                            
                {
                                
                //  ist das Produkt überhaupt ein Produkt?
                                
                $_SESSION["prod_ids"][] = $_POST["prodID"]; 
                                
                // ist die Zahl überhaupt Positiv?; ist es überhaupt eine Zahl?
                                
                $_SESSION["prod_counts"][] = $_POST["count"]; 
                                
                $_SESSION["prod_size"][] = $_POST["prod_size"];
                            } 
                Es sollte schon etwas Defensiver Programmiert werden, vorallem wenn es um einen Shop geht.
                Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                PHP Sicherheit
                PHPUnit[1-2]
                Professionelle Softwareentwicklung mit PHP 5
                Professionelle PHP 5-Programmierung

                Kommentar


                • #9
                  Original geschrieben von Timo Trallala
                  vielleicht anders,

                  wie fülle ich denn $_SESSION["prod_ids"]["prod_size"] mit meinen post-vars
                  $_SESSION["prod_counts"][] = $_POST["count"]; <-- is von dir

                  Gib dem Schwein einen Namen dann ists gefüllt.
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Hallo ich bins nochmal der trallala

                    ich habs jetzt mal mit einem mehrdim. Array versucht

                    PHP-Code:
                    $_SESSION['prod_id']['prod_size']=array();


                    $_SESSION['prod_id']['prod_size'] = array(
                    $_POST['prodID'] => array('prod_size' => $_POST['prod_size'],
                    'prod_count' => $_POST['count'])); 
                    das ist ja alles schön und gut.

                    es werden auch schon die Einträge erzeugt, leider werden aber keine Einträge angehängt sondern lediglich überschrieben.

                    na vielleicht kann mir da doch jemand unterstützend unter ide Arme greifen.
                    Bei eindim. Arrays würd ichs ja noch hinbekommen, aber hier setzt leider mein Hirn aus

                    mfg & besten dank für eure nerven
                    derTrallala
                    Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

                    Kommentar


                    • #11
                      Original geschrieben von Timo Trallala
                      es werden auch schon die Einträge erzeugt, leider werden aber keine Einträge angehängt sondern lediglich überschrieben.
                      Natürlich.
                      Das ist ja auch genau das, was du programmiert hast.
                      Works as designed ...


                      Was du stattdessen machen solltest, sagte ich dir doch schon in meiner ersten Antwort.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Z.B.
                        PHP-Code:
                        //in der Config
                        define('SHOP_SESSION_BASEKT''_BASKET');
                        //end Config

                        if (isset($_SESSION[SHOP_SESSION_BASEKT]) === false) {
                            
                        $_SESSION[SHOP_SESSION_BASEKT] = array();
                        }

                        //Ware ist schon im Korb
                        if ($_SESSION[SHOP_SESSION_BASEKT][$_POST['prodID']]) {
                            
                        $product =& $_SESSION[SHOP_SESSION_BASEKT][$_POST['prodID']];
                            
                        $product['prod_size'] += $_POST['prod_size'];
                            
                        $product['prod_count'] += $_POST['count'];

                        //Neue Ware
                        } else {
                            
                        $_SESSION[SHOP_SESSION_BASEKT][$_POST['prodID']] = array(
                                
                        'prod_size' => $_POST['prod_size'],
                                
                        'prod_count' => $_POST['count']
                            );

                        Zuletzt geändert von schlimmerfinger; 30.11.2005, 13:18.
                        Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                        PHP Sicherheit
                        PHPUnit[1-2]
                        Professionelle Softwareentwicklung mit PHP 5
                        Professionelle PHP 5-Programmierung

                        Kommentar


                        • #13
                          Merci

                          aber wenn ich dies über
                          PHP-Code:
                          foreach ($_SESSION[SHOP_SESSION_BASEKT] as $key => $value)
                          {
                          echo (
                          "Artikel-Nr." $key "<br/>\n");
                          echo (
                          "Artikel-Größe:" $value['prod_size'] . "<br/>\n");
                          echo (
                          "Anzahl: " $value['prod_count']. "<br/>\n");


                          ausgebe,
                          erhalte ich immer nur einen Artikel im warenkorb.

                          Irgendwie kommt mir das bekannt vor

                          mfG
                          derTrallala
                          Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

                          Kommentar


                          • #14
                            http://phpunit.de/de/index.php
                            Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                            PHP Sicherheit
                            PHPUnit[1-2]
                            Professionelle Softwareentwicklung mit PHP 5
                            Professionelle PHP 5-Programmierung

                            Kommentar


                            • #15
                              und was ist, wenn es nicht zur Verfügung steht?

                              mfG
                              derTrallala
                              Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

                              Kommentar

                              Lädt...
                              X