Problem liegt bei
Code: Select all
if( $subtotal['weight'] <= $row['weight'] && $subtotal['shipping_net'] <= $row['net'] ) {
$row['calculate'] = true;
}
Abfrage wird auch bei Unterschreitung des kleinsten Versandkostengewichtes bei jeder eingegeben höheren Gewichtsangabe erfüllt und bei der Berechnung immer bis zum höchsten Wert überschrieben.
Vorausgesetzt die Versandkosten werden aufsteigend eingegeben, reicht eine Variable zur Bestätigung, dass bereits eine gültige Berechnung in der if-Anweisung erfolgt ist.
Code: Select all
if( $subtotal['weight'] <= $row['weight'] && $subtotal['shipping_net'] <= $row['net'] && $setcost != 1 ) {
$row['calculate'] = true;
$setcost=1;
}
Bei obigen Beispiel mit Gesamtgewicht von 1,2 kg würde im ersten Durchlauf die elseif-Anweisung zur Berechnung führen, im 2. Durchlauf die if-Anwendung die 1. Berechnung überschreiben und $setcost auf 1 setzen und der 3. Durchlauf mit den 5 kg Maximalgewicht würde die if-Anweisung durch $setcost=1 nicht mehr wie bisher erfüllen.
MfG
Thomas