Andreas: Staffelpreis

Hallo,

ich habe verschiedene Artikel mit verschiedenen Preisen die abhängig der Menge sind

Ich möchte,
das wenn jemand eine Menge angibt,
das dann mit dem dazugehörigen Preis kalkulieren wird.

ich habe eine Spalte Menge
und eine Spalte Preis

MENGE | PREIS
24 | 4,26
52 | 2,95
104 | 2,21
200 | 2,05

z.B.
Mengeneingabe wäre 100, so müsste dies mit dem Preis von (52) 2,95 kalkulieren

wie kann ich dies anstellen, das die eingegebene Menge mit dem richtigen Preis kalkuliert?

Danke
Andreas

  1. Hi

    mh.. du willst das in PHP machen?

    ja wo is das Problem? Du hast doch sicher jeden Wert in einer Variablen?

    $ergeb = $var1 * $var2;

    oder sitz ich aufm Schlauch?

    tOM

    1. Hi!

      mh.. du willst das in PHP machen?

      ja wo is das Problem? Du hast doch sicher jeden Wert in einer Variablen?

      $ergeb = $var1 * $var2;

      oder sitz ich aufm Schlauch?

      hm, vermutlich ist das denn doch ein wenig komplizierter ;-)

      So wie ich Ihn verstehe hat er verscheidene preise abhängig von der Menge. KLar, das rechnen ist nicht das Problem, aber woher nimmst Du $var1 und $var2? Du hast 100 Artikel, woher weiß t Du jetzt den Preis?

      Ich gehe mal davon aus das hier eine DB eingesetzt wird.

      Das einfachste wäre wenn die Abstufungen bei jedem Produkt gleich wären, dann könnte man einfach in der produkttabelle mehrere Preise speichern, oder %-Zahlen.

      Vermutlich ist das aber nicht so.
      Wie ich das sehe kommst Du um eine Extra-Tabelle mit den 1.n Beziehungen nicht drum herum.

      Also Du brauchst eine Tabelle mit 3 Spalten ProduktID, Anzahl, Preis oder Prozent.
      Dann mußt Du das halt alle jhier abspeichern. Wenn ein Produkt 5 Stufen hat gibt das 5 Datensätze in der Tabelle. Am Ende fragst Du dann nur noch diese Tabelle ab, bzw. joinst diese. FFraglich ist nur, wie genau so eien Abfrage aussehen würde, angenommen wir haben 5 Stufen,

      5,10,20,50,100

      Wenn ich jetzt 35 Artikel habe, wie frage sorge ich dafür das ich auch in dem Datensatz mit 20-49 Artikeln lande?

      SELECT Preis FROM staffelpreise WHERE ProduktID = 'xyz' AND Anzahl >= 35

      OK, aber das trifft sowohl auf 20, 50 und 100 zu. Ich sehe keine Andere Möglichkeit als Group By, also was der Art

      SELECT Preis FROM staffelpreise WHERE ProduktID = 'xyz' AND Anzahl >= 35 GROUP BY ID HAVING MIN(Anzahl)

      Das kommt mit jetzt irgendwie komisch vor, aber so ähnlich sollte es klappen. Oder kennt jemand einen besseren Weg?

      Grüße
      Andreas

  2. Huhu Andreas

    ich habe eine Spalte Menge
    und eine Spalte Preis

    MENGE | PREIS
    24 | 4,26
    52 | 2,95
    104 | 2,21
    200 | 2,05

    z.B.
    Mengeneingabe wäre 100, so müsste dies mit dem Preis von (52) 2,95 kalkulieren

    evtl. hilft dieses

    SELECT MENGE,PREIS FROM TBL WHERE MENGE < 100 ORDER BY MENGE DESC LIMIT 1

    Viele Grüße

    lulu

  3. Tag

    MENGE | PREIS
    24 | 4,26
    52 | 2,95
    104 | 2,21
    200 | 2,05

    z.B.
    Mengeneingabe wäre 100, so müsste dies mit dem Preis von (52) 2,95 kalkulieren

    wie kann ich dies anstellen, das die eingegebene Menge mit dem richtigen Preis kalkuliert?

    nehmen wir mal an, das alles würde in einem Array $x stehen, die angegebene Menge ist $m, der Preis soll am Ende in $p stehen ...

    $m2 = 0;
    for($i=0, $j=count($x); $i<$j; $i++)
    {
     $y = explode("|", $x);
     $y[0] = trim($y[0]);
     if(is_numeric($y[0]))
     {
      # *1
      $y[1] = trim(str_replace(",", ".", $y[1]));
      if($y[0]>$m2 && $y[0]<$m)
       $m2 = $y[0];
     }
    }
    $p = str_replace(".", ",", ($m * $m2));

    Dieses Beispiel kann auch mit ungeordneten Mengenangaben (also nicht sortiert) umgehen.
    Wenn die Mengen wie von Dir angegeben aufsteigend geordnet sind, kannst Du bei # *1 folgendes einfügen:

    if($y[0]>m) break;

    Dann geht's noch bißl schneller (wirkt sich aber nur bei wirklich vielen Abfragen / Mengen aus).

    Ciao,

    Harry

    1. Hallo

      das sieht so aus, wie ich es
      mir nicht vorgestellen konnte,
      aber jetzt vorstellen kann.

      Danke

    2. Hallo!

      nehmen wir mal an, das alles würde in einem Array $x stehen, die angegebene Menge ist $m, der Preis soll am Ende in $p stehen ...

      Aber wie kommen die Datenm in en Array? Vielleicht ist es hier nicht das Problem, aber wie speichert man diese Information am sinnvollsten, halt für mehrere Produkte?

      Grüße
      Andreas

      1. Tag

        Aber wie kommen die Datenm in en Array? Vielleicht ist es hier nicht das Problem, aber wie speichert man diese Information am sinnvollsten, halt für mehrere Produkte?

        Ich dachte halt, es würde so in einer Datei drinstehn.
        Dann kann man die mit $x = file("x.txt"); ganz leicht in eine Array einlesen.

        Wenn's in ner DB steht ist die Lösung freilich Quatsch ;)

        Ciao,

        Harry

        1. Hi!

          Ich dachte halt, es würde so in einer Datei drinstehn.
          Dann kann man die mit $x = file("x.txt"); ganz leicht in eine Array einlesen.

          Wenn's in ner DB steht ist die Lösung freilich Quatsch ;)

          Jetzt nicht falsch verstehen, ich dachte nur wenn jemand schon Staffelpreise hat wird er wohl kaum eine Datei pro Artikel haben, aber wie es aussieht wohl doch, keine Ahnung?!

          Grüße
          Andreas

          1. Tag

            Jetzt nicht falsch verstehen, ich dachte nur wenn jemand schon Staffelpreise hat wird er wohl kaum eine Datei pro Artikel haben, aber wie es aussieht wohl doch, keine Ahnung?!

            Hm, dann müsste man das Array $x nochmal aufteilen, so ala $x["produkt"]
            Da müssten man dann erstmal die ganze Datei durchlaufen, rausfinden, welcher Abschnitt für welches Produkt ist und dann den entsprechenden Unterteil ins Array speichern.

            Ciao,

            Harry