Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 9007 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel 2010 - Berechnungen mit Datumswerten Uhrzeiten (2)

Frage von Volchy zum Thema Microsoft Office ...

PHP
PHP 5.3 nach PHP 5.6 portieren (5)

Frage von nippon-tussi zum Thema PHP ...

C und C++
C-sharp soll Datei von PHP speichern (3)

Frage von Yanmai zum Thema C und C ...

Neue Wissensbeiträge
Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Erkennung und -Abwehr

Infineon TPMs unsicher! Bitlocker ggf. angreifbar

(4)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Firewall

PfSense Repository für Version 2.3.x

(4)

Information von Dobby zum Thema Firewall ...

LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(8)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...