Empfehlungen: Erweiterte Suche

wie Dezimalzahlen behandeln

Fragen zur Konzeptionierung und womit man am besten anfäng? Hier rein...

wie Dezimalzahlen behandeln

Beitragvon mbrod » Do 22. Okt 2009, 22:49

Hallo Kuchenbäcker,

ich wollte mal fragen, wie ihr prinzipiell mit Dezimalzahlen umgeht. In der Datenbank wird der Nachkommateil ja mit einem Punkt getrennt und in PHP ja auch so gerechnet (12.34). In den Views sollte aber entsprechend unserer Lokalisation ein Komma benutzt werden (12,34). Im Kochbuch wird diesbezüglich auf die PHP-Funktion setlocale verwiesen. Im Buch "Webentwicklung mit cakephp" wird auf l10n und LC_NUMERIC verwiesen, ohne aber näher darauf einzugehen.
Mit setlocale habe ich bisher keine Erfahrung und habe durch rumstöbern den Eindruck, dass das nicht so das Wahre ist. Daher meine Frage, wie ihr damit umgeht.
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: wie Dezimalzahlen behandeln

Beitragvon euromark » Fr 23. Okt 2009, 11:41

einfach mit number_format() arbeiten

bsp:

echo number_format($stats['p_male'], 2, Configure::read('Localization.decimal_point'), Configure::read('Localization.thousands_point'))

durch die configs ist es auch mehrsprachig (je nach Land) einsetzbar, sofern man das braucht
euromark
 
Beiträge: 642
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: wie Dezimalzahlen behandeln

Beitragvon mbrod » Fr 23. Okt 2009, 14:27

ja, danke. Die Idee mit der Configure-Klasse zu arbeiten leuchtet mir ein. number->format(...) ist dann für das Ausgeben der Daten im View zuständig. (Hatte daran auch schon gedacht.)
Für die Verarbeitung von Benutzer-Eingaben in ein Formular mit 'Localization.decimal_point' muss man dann aber noch eine "Umkehrfunktion" schreiben, die vor 'save->(...)' aufzurufen ist, damit die Datenbank wieder ihren korrekten decimal delimiter (.) serviert bekommt. Richtig?

Gibt es noch andere Lösungen? Ich fand nämlich die l10n Lösung mit den .po-Dateien in LC_MESSAGES so genial und frage mich, ob es dann nicht ähnliche Lösungen mit LC_NUMERIC gibt?
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: wie Dezimalzahlen behandeln

Beitragvon euromark » Sa 24. Okt 2009, 00:02

keine, die sauber auf allen system läuft
außerdem wären dann alle wieder in 1 variante
und kein switch zwischen dein beiden

du kannst im afterFind und beforeSave (besser beforeValidate) jeweils die umwandlungen durchführen
oder im controller jeweils vor dem save bzw nach dem find
euromark
 
Beiträge: 642
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows


Zurück zu Konzeption und Vorgehensweise

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron