Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Addition durch php Funktion nimmt keine Nachkommastellen mit in die Berechnung

Frage Entwicklung PHP

Mitglied: gechger

gechger (Level 1) - Jetzt verbinden

01.10.2009, aktualisiert 02.10.2009, 8697 Aufrufe, 4 Kommentare

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
Mitglied: filippg
01.10.2009 um 21:09 Uhr
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
Bitte warten ..
Mitglied: gechger
01.10.2009 um 21:16 Uhr
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
Bitte warten ..
Mitglied: Dani
01.10.2009 um 21:23 Uhr
Hi,
warum konvertierst du das DB-Feld nicht nach FLOAT um.
Ansonsten versuch es mit der Funktion explode() .

Beispiel:
01.
<?php 
02.
 
03.
$value="1,75"; 
04.
echo preg_replace("/,/", ".", $value); 
05.
 
06.
?>
Ich habe es einfach mit echo gelöst. Du musst natürlich eine Zuweisung nehmen.


Gruß,
Dani
Bitte warten ..
Mitglied: gechger
02.10.2009 um 08:28 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...