Ein Feld mehrer Datensätze addieren

  • Hi,
    ich möchte in einem Perl-(Shop)Script, das aus einfachen Datenfiles die Daten ausliest und verschiedenen Variablen (Artikel, Stückzahl, Einzelpreis usw.) zur Weiterverarbeitung zuordnet und verschiedene Felder miteinander operieren lässt,

    Zitat


    foreach $data (@data) {
    chomp($data);
    ($realart,$art,$cat,$price,$qty,$headline,$size,$headline2,$storl) = split(/\|/,$data);
    $price2 = "$price"; $price = ($price * $qty); $pris = ($pris + $price); $antal++;


    ein Feld ($qty) aller Datensätze zusammenrechnen. Ich brauche das Ergebnis, weil ich eine nach Stückzahl gestaffelte Versandkostenpauschale berechnen möchte.


    Momentan behelfe ich mit mit der Scriptphrase

    Zitat


    $qty2 = ($qty1 + $qty); $qty1 =($qty + $qty); $antal++;


    Das funzt aber nur, wenn die geringe Pauschale nur für 1 item gilt. Sobald 2 items geordert werden, wird $qty2 > 2.


    Hat vielleicht jemand einen Tipp für mich, wie man sauber die Summe von $qty aller ausgelesenen Datensätze bekommt?


    Danke
    Heinz Eric

  • Zitat

    Das funzt aber nur, wenn die geringe Pauschale nur für 1 item gilt. Sobald 2 items geordert werden, wird $qty2 > 2.


    ???


    vor dem foreach:
    $qty2 = 0;


    innerhalb des foreach:


    $qty2 = ($qty2 + $qty);


    dann wird $qty2 bei jedem neuen Artikel (jeder neuen Zeile) um die Anzahl $qty erhöht und enthält am Ende die Summe.



    Tom

    Tom - ex Mitglied im Team der PC-Special
    Computer-Hilfe-Forum, Tipps und Tricks, Scripte, Downloads und mehr

  • "Tom" schrieb:

    $qty2 > 2.
    ???


    Ja, das hab ich mich auch gefragt. Aber bei dem Script kamen die sonderbarsten Ergebnisse raus.



    Genial! So einfach, aber genau das war die Lösung. Das
    $qty2 = ($qty2 + $qty); hatte ich ja ursprünglich auch versucht, weil mir das logisch erschien. Allerdings hatte ich vorher nicht $qty = 0; gesetzt.
    Es funzt jetzt also tadellos und ich danke tausend mal. Warum habe ich nicht gleich die PC-Specialisten gefragt!?
    Gruß HeinzEric