Hallo Bernd,
ich versuche mal, das mit deinem Bild aus dem Eingangsposting zusammenzubringen. Da ist eine weiße Zeile ("Reihe 1"), bunte Zeilen ("- Test 1" etc) und eine schwarze Zeile (Gesamt...). Dein Code ist gekürzt, darum erkenne ich nicht genau, was wozu da ist. In allen drei Zeilenarten stehen Spalten mit Werten. Die schwarze Zeile enthält eine undefinierte Summe (weil ich keine Initialisierung von $Berechnung_Sub_1 sehe - aber wahrscheinlich ist das der Kürzung zum Opfer gefallen) der bunten Spalten.
Nun soll der schwarze Wert auf den weißen Wert aufaddiert werden - und meine JavaScript-Idee gefällt Dir nicht (bzw. sie ist Dir unverständlich).
Dein Code sieht merkwürdig aus. Ist das ein Grid, dessen Elemente Du spaltenweise ausgibst? Manchmal ist eine table tatsächlich eine table... Aber das ist jetzt wie es ist, und das Markup ist nicht das Problem über das wir hier reden. Ich wollte nur sicher sein dass ich die Logik verstehe.
Pro Wertespalte läuft dann dieser Code:
<div> <?php echo $a1; ?> m<sup>3</sup>
<?php if($frontend_kategorieuebersichtVolumenHauptKat > 0) { ?>
<div>
<?php foreach($frontend_kategorieuebersichtVolumenHauptKat as $array_VolumenHauptKat){
$SubKat1_a1 = Claudia($mysqli, $array_VolumenHauptKat['ma_id']);
$Berechnung_Sub_1 += $SubKat1_a1;
?>
<div>
<?php echo $SubKat1_a1; ?> m<sup>3</sup>
</div>
<?php } ?>
</div>
<div>Gesamt: <?php echo $Berechnung_Sub_1; ?> m<sup>3</sup></div>
<?php } ?>
</div>
Den würde ich so abändern. Bitte genau lesen und kontrollieren - keine Gewähr für Richtigkeit. Ich habe zwar eine Claudia hier, aber wenn ich der eine ID zuwerfe, bekomme ich keine Zahl zurück, sondern nur einen befremdeten Blick 😂
<div>
<?php
$Berechnung_Sub_1 = 0;
// Subkat-Werte vorab aufsummieren und zwischenspeichern
if($frontend_kategorieuebersichtVolumenHauptKat > 0) {
$SubKat1_a1 = ARRAY();
foreach($frontend_kategorieuebersichtVolumenHauptKat as $array_VolumenHauptKat) {
$SubKat1_a1[] = Claudia($mysqli, $array_VolumenHauptKat['ma_id']);
}
}
echo $a1 + array_sum($SubKat1_a1); ?> m<sup>3</sup>
<?php if($frontend_kategorieuebersichtVolumenHauptKat > 0): ?>
<div>
<?php foreach($SubKat1_a1 as $tempVal) : ?>
<div><?= $tempVal ?> m<sup>3</sup></div>
<?php endforeach; ?>
</div>
<div>Gesamt: <?= $Berechnung_Sub_1; ?> m<sup>3</sup></div>
<?php endif; ?>
</div>
D.h. die Aufsummierung geschieht, bevor $a1 ausgegeben wird.
Für die Kontrollstrukturen, die PHP-Blockübergreifend sind, habe ich die alternative Syntax gewählt (foreach/endforeach und if/endif
Ein Hinweis noch zum Runden; das ging aus dem anderen Thread nicht hervor. Wenn es dir NUR um die Ausgabe eines gerundeten Wertes geht, und Du mit dem gerundeten Wert nicht weiterrechnen musst, kannst Du das auch mit der number_format Funktion von PHP tun, die rundet auch.
$x = 4711.45778;
echo number_format($x, 2, ",", "");
- Parameter: 2 Nachkommastellen
- Parameter: Verwende Dezimalkomma
- Parameter: Kein Tausendertrenner.
Rolf
sumpsi - posui - clusi