Ankündigung

Einklappen
Keine Ankündigung bisher.

artikelbestand vorläufig runter rechnen wenn artikel in WK gelegt wird

Einklappen

Neue Werbung 2019

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

  • artikelbestand vorläufig runter rechnen wenn artikel in WK gelegt wird

    Hallo Leute.

    Ich bastel nun schon etliche Stunden an dem Problem und habe mich durchs Manual gesucht,aber nichts hilfreiches gefunden.

    Folgendes habe ich vor.

    Wenn ein Artikel in einen Warenkorb gelegt wird soll voläufig so lange der Artikel im WK liegt der Bestand runter gerechnet werden. Das klappt auch wenn ich einen Artikel in WK lege zum Beispiel einmal in einer Menge von 3 Stueck wird das korrekt abgezogen. Lege ich den selben Artikel aber noch mal rein in den WK z.B. 1 mal erneut dann zieht er mir bei dem Vorgang 4 ab,also den Wert mit der Artikel schon im WK liegt plus dem Wert der noch mal neu dazu kommt vom selben Artikel und das soll ja nicht sein.

    Ziel soll sein.

    Wenn ich einen Artikel mit der Stueckzahl 3 in den Wk lege und dann noch mal rein lege mit einer anderen Steuckzahl z.B. 1 soll er beim zweiten rein legen auch nur den Wert abziehen. Also einmal 3 und dann wenn er noch mal in den Wk kommt 1 mal.

    Ich hoffe ich konnte mich verständlich ausdrücken.

    Hier mein Code der noch nicht so richtig funktinoiert.

    PHP-Code:
    //session array bilden
      
    $_SESSION['artikel'][] = array(
              
    'art_id' => intval($_POST['art_id']),
              
    'stueck' => intval($_POST['stueck']),
              
    'groesse' => (string)$_POST['groesse'],
              
    'farbe' => (string)$_POST['farbe']
              );
              
      
    //artikelbestand vorläufig runter rechnen wenn artikel in WK gelegt wird
      
    foreach($_SESSION['artikel'] as $key => $value)
      {
       
    $sqlbefehl ="
          Update
           artikel
          Set
           bestand = bestand - "
    .intval($value['stueck'])."
          Where
           id_artikel ="
    .intval($value['art_id'])."
          "
    ;
       
    $res_bestand mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
      }
      
      
    header("Location: ".$path."/l-shop/artikel.php?id_cat=".intval($_SESSION['id_cat']).""); 
    Die ist nur der betreffende Codeausschnitt.

    Ich hoffe ihr könnt mir wieder mal weiter helfen mfg der litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    [URL]http://www.lit-web.de[/URL]

  • #2
    Ich sehe 2 Möglichkeiten:
    - 1ste: Du rechnest die Differenz zwischen alter und neuer Stückzahl aus bevor du sie überschreibst und benutzt den Wert für dein Bestand-Update
    - 2te: Du machst vorm überschreiben der Stückzahl erst den Bestand wieder auf den alten Wert und ziehst am Ende den Gesamtwert (die neue Stückzahl) wieder ab

    Kommentar


    • #3
      Ich komme da momentan nicht weiter. Ich muss ja vor dem Update erst prüfen ob die Artikel id im Session Array drin ist,das habe ich mit

      PHP-Code:
      if(in_array($value['art_id'], $_SESSION['artikel'])) 
      versucht,aber das funktioniert nicht.

      Dann das Differenz bilden,da hänge ich auch momentan. Weil im Array befindet sich ein Wert der dann heist $value['stueck'] und der selbe kommt ja dazu wenn ich einen bzw. in dem Falle den selben Artikel noch mal dazu lege. Da beist sich doch irgendwas.

      Und so eine Differenz soll ja auch nur gebildet werden wenn der Artikel schon mal im WK liegt. Auch da hänge ich,ich weis das ich das alles mit if und else machen muss,aber momentan fehlt mir irgendwie das richtige denken gerade.

      Bin momentan grad vollkommen Ratlos.
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      [URL]http://www.lit-web.de[/URL]

      Kommentar


      • #4
        Wenn der Artikel in den Warenkorb gelegt wurde, dann existiert ja ein Tabelleneintrag im WK mit Artikelnummer, Menge und einem Zeitstempel.

        Um den aktuellen verfügbaren Lagerbestand zu berechnen musst du alle in der WK-Tabelle vorhandenen Mengen zu einem Artikel addieren und vom Stamm-Bestand 'abziehen', d.h. du zeigst an: $stamm_menge - $summe_wk_menge

        Wenn der Kauf erfolgt, dann muss die WK-Menge vom Lagerbestand abgezogen werden, bzw. in ein neues Summenfeld 'Verkaufte Menge' gebucht werden. Bei der Auslieferung wird dann aus 'Verkaufte Menge' nach 'Lagerbestand' umgebucht.

        Die WK brauchen einen Zeitstempel, damit du liegengebliebene WK löschen kannst, bzw. die reservierten Bestände der Warenkörbe unbeachtet lassen kannst.
        [PHP]if ($var != 0) {
        $var = 0;
        }[/PHP]

        Kommentar


        • #5
          Hallo Wolla.

          Danke für deine Antwort,nur hilft die mir nicht sehr viel weiter momentan weil mein Warenkorb nicht über eine Tabelle läuft sondern komplett über Sessions. Ich hole eigentlich nur gewisse Daten zum Artikel aus der Artikel Tabelle die zur art_id in der Session gehören. Der Warenkorb selber wird über keine Tabelle gesteuert.
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          [URL]http://www.lit-web.de[/URL]

          Kommentar


          • #6
            wenn du 10 Artikel im Lager hast, und grade 50 Leute den Artikel in den WK legen, hast du ein unlösbares Problem. Warenkörbe mus man in mysql verwalten.
            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #7
              Nun der knackpunkt der Geschichte liegt eben nicht bei deinem Code oben, sondern vorerst an der Stelle wo die Artikel dem Warenkorb zugeordnet werden, denn nur da hast du noch beide Werte die du brauchst.

              Kommentar


              • #8
                Nun ich habe nun dank cycaps letzten Post das Problem fast komplett gelöst. Nur ein Problem bleibt noch,wenn ein Besucher nun den Warenkor sich belegt mit verschiedenen Artikel und nun aber zum Beispiel der Browser von selber schliest oder sein Rechner abstürtzt und der Browser schliest und die Bestellung noch nicht abgeschickt wurde,dann ist der Bestand runter gerechnet obwohl gie Sachen gar nicht bestellt btw. verkauft wurden. Wie kann ich es dann machen das wenn der Browser sich schliest egal aus welchen Grund und die Bestellung nicht abgeschickt wurde das dann authomatisch in so einem Falle alle Artikel wieder auf ihren ürsprünglichen Bestandswert zurück gesetzt werden?

                Ich habe so die dumme Vermutung das,dass nur mit Javascript geht.
                Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                [URL]http://www.lit-web.de[/URL]

                Kommentar


                • #9
                  hab ich doch in #4 geschrieben

                  Wenn jemand seinen Browser schließt, sind die Daten weh-eh-ceh-kah : weck
                  [PHP]if ($var != 0) {
                  $var = 0;
                  }[/PHP]

                  Kommentar


                  • #10
                    Mist das scheint wirklich ein unlösbares Problem zu sein.

                    Und was mich ärgert das einzige was ich noch dabei habe.
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    [URL]http://www.lit-web.de[/URL]

                    Kommentar


                    • #11
                      Soweit ich weiss kannst du das mit dem PHP-eigenen Session-Management nicht realisieren. Du müsstest ein eigenes entwickeln, das den Warenbestand beim löschen der Session wieder in Ordnung bringt.

                      Kommentar


                      • #12
                        Naja jein,denn wenn ich per Klick auf gesamten Warenkorb löschen gehe,dann wird alles gemacht wie es soll. Also da wird auch die Session gelöscht aber vorher eben ein Update gamcht und alles passt wieder. Das Problem ist wenn der Browser geschlossen wird,dann sind die Daten weg das ist klar und das dumme dabei ist,dass der Artikelbestand nicht auf den eigentlichen Stand gebracht wird. Es sind also Artikel abgezogen die gar nicht bestellt wurden. Also liegt das Problem auf dem Browserschluss und nicht auf das löschen der Session.
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        [URL]http://www.lit-web.de[/URL]

                        Kommentar


                        • #13
                          Ich hab dein Problem schon richtig verstanden, nur bedenke: beim schließen des Browsers geht die Session nicht verloren, sondern der Browser weiss nicht mehr welches seine Session ist. Auf dem Server gibt es die Session noch, die wird dann erst später irgendwann durch die PHP-eigene Session-Verwaltung gelöscht (Garbage-Collection) und genau an dieser Stelle müsstest du reagieren können, das kannst du aber nicht so ohne weiteres. Dazu musst du die Sessions selber verwalten und auch selber die Garbage-Collection durchführen. Das ist keine Hexerei, aber es gehört doch schon was dazu. Du müsstest dich komplett vom Gedanken befreien das PHP die Sessions für dich managed und das ganze nachbauen.

                          Kommentar


                          • #14
                            Wie könnte ich so etwas machen? Ich will keinen Code,aber mal nen Ansatz,weil das ist nun sehr neu für mich.

                            Danke sehr.
                            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                            [URL]http://www.lit-web.de[/URL]

                            Kommentar


                            • #15
                              Nun, du weisst doch wie das Session-Management in PHP funktioniert oder? Generiere einen Code, den du als Cookie beim Browser setzt und auf deinem Server abspeicherst (wo auch immer). Zu diesem Code speicherst du auf dem Server die Daten und auch die gewünschte Laufzeit der Session. Ist diese Laufzeit überschritten werden die Sessiondaten gelöscht und dann genau ist der Knackpunkt an dem deine Daten wieder zurück in den Warenbestand kommen.

                              Kommentar

                              Lädt...
                              X