gechger
Goto Top

Addition durch php Funktion nimmt keine Nachkommastellen mit in die Berechnung

Zur Addition verschiedener Werte beim Durchlauf eines Arrays verwende ich $sum+=$array[8], aber Nachkommastellen werden nicht berücksichtigt

Hallo Forum,

wieder einmal bräuchte ich Tips und Tricks von Euch. Recherchen haben mir zu meinem Problem nicht weiter geholfen.

Kurz beschrieben:
In einer Datenbank befinden sich etliche Daten, unter anderem auch Zeiten. Diese wurden im Dezimalsystem erfasst, also 1,5 / 1,75 / 2 usw.
Ich möchte nun mittels fpdf ein pdf Dokument erzeugen, worin diese Zeiten stehen, was sie auch tun.

Zusätzlich möchte ich aber die einzelnen Zeiten als Summe ausgeben. Ich verwende dafür dieses Script:

$sum+=$row[8];

wobei in row8 die einzelnen Zeiten stehen. Ich bekomme auch eine schöne Summierung, nur leider ist sie falsch. Alle Werte mit Kommastellen werden ohne die Nachkommastellen gerechnet.
2 + 2,5 +2 ergibt 6 und nicht 6,5

Unschön!

Da ich die Zeiten über ein Eingabeformular bekomme, werde ich die Zeiten gewohnheitsmäßig immer mit einem Komma erhalten. Ich vermute, daß das Problem darin liegt, das für die Zeiten ein Komma, und nicht ein Punkt vorhanden ist.

Deshalb die Frage:
Muß ich das Komma vorm Schreiben in die Datenbank in einen Punkt ändern? Wenn ja, wie??

Kann man eine Formatierung einbauen, die fpdf versteht und mit den Kommawerten auch rechnet? sprintf funktioniert nicht. Ich darf keine weiteren Ausgaben erzeugen, ohne das fpdf einen Fehler auswirft.

Vielen Dank für jede Idee
Schöne Grüße
Christof

Content-ID: 126266

Url: https://administrator.de/forum/addition-durch-php-funktion-nimmt-keine-nachkommastellen-mit-in-die-berechnung-126266.html

Ausgedruckt am: 22.12.2024 um 21:12 Uhr

filippg
filippg 01.10.2009 um 21:09:08 Uhr
Goto Top
Deshalb die Frage:
Muß ich das Komma vorm Schreiben in die Datenbank in einen
Punkt ändern? Wenn ja, wie??
Klares Jein. Genauer: Du musst den Datentyp ändern. Zahlen speichert man in einer SQL-DB gefälligst auch nur als Zahl, nicht als Zeichenkette (was offenbar jetzt der Fall ist).

Gruß

Filipp
gechger
gechger 01.10.2009 um 21:16:09 Uhr
Goto Top
Das Feld mit der Zeit ist als varchar definiert.

Und es liegt tatsächlich am Komma. Wenn ich den Datenbank Wert manuell als 2.5 eintrage, bekomme ich richtige Berechnungen.

Wie bekomme ich also eine Eintrag aus dem Eingabeformular im Format 2,5 in die korrekte Schreibweise 2.5 ?
Mit substr wirds nicht gehen, es könnte ja auch 10,75 drin stehen.

Schöne Grüße
Christof
Dani
Dani 01.10.2009 um 21:23:22 Uhr
Goto Top
Hi,
warum konvertierst du das DB-Feld nicht nach FLOAT um.
Ansonsten versuch es mit der Funktion explode().

Beispiel:
<?php

$value="1,75";  
echo preg_replace("/,/", ".", $value);  

?>
Ich habe es einfach mit echo gelöst. Du musst natürlich eine Zuweisung nehmen.


Gruß,
Dani
gechger
gechger 02.10.2009 um 08:28:13 Uhr
Goto Top
Hallo Dani,

wie so oft sieht man das Naheliegende einfach nicht.
Dein Vorschlag führt zum gewünschten Ergebnis.

Die Umwandlung der Spalte in Float(4,2) bringt leider keinen Erfolg. Die Nachkommastellen werden abgeschnitten, wenn die Zahl mit Komma gespeichert wird. Man muß tatsächlich erst mit preg_replace das Komma in einen Punkt umwandeln.

Vielen Dank für Deine Hilfe

Schöne Grüße
Christof