Staffelpreis
Andreas
- php
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
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
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
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
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
Hallo
das sieht so aus, wie ich es
mir nicht vorgestellen konnte,
aber jetzt vorstellen kann.
Danke
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
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
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
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