phpbar.de logo

Mailinglisten-Archive

Re: [php] Monet ä re Werte | mysql |DBfelder

Re: [php] Monet ä re Werte | mysql |DBfelder

Gloss Mathias Mathias.Gloss at start.de
Mon Aug 4 16:32:15 CEST 2003


Aloha,

> Von: 	Olaf Gleba[SMTP:list at creatics.de]
> 
> Ganz einfaches Szenario. Ich will einen Besucher über ein Formular auf im
> Frontend z.B einen Mietpreis f. ein eingestelltes Objekt eintragen lassen.
> Dieses kann selbstverständlich auch Nachkommastellen beinhalten (120,50
> Euro). wenn ich das DB Feld mit decimal angebe, fungiert als
> Dezimaltrenner
> ja der Punkt.
> 
> Es muss doch eine einfache Methode geben, OHNE dem Besucher darauf
> hinzuweisen, bei Nachkommabeträgen anstatt einem Komma bitte einen Punkt
> zu
> nutzen und bitte auf Tausendertrennung komplett zu verzichten (wäre ja
> auch
> möglich, das folgendes eingetragen wird: 10.000,- Euro) da das Objekt
> plötzlich seeehr billig sein würde ;)
> 
> Einziger Weg, der mir einfallen würde, wäre ein Abfangen des Inputs mit
> einer Funktion, die mir entsprechen die Werte vor dem einfügen ummodelt.
> 
da wirst du auch nicht drum herum kommen. Du solltest alle
Währungs-Eingaben prüfen, ob sie der Form "-?[0-9]+,[0-9]{2}"
entsprechen, und falls nicht den Anwender zur Korrektur zwingen.

Vor dem Abspeichern in die DB musst du noch das , durch einen
. ersetzen (z.B.) mit string_replace.

Davon abgesehen ist aber eine WährungsVERARBEITUNG in PHP 
mit Vorsicht zu genießen, da PHP keine geeigneten Datentypen
hat (wie z.B. ABAP).
Dadurch, daß Zahlen mit Nachkommastellen von PHP als Float
bearbeitet werden, kann das recht unschöne Rundungsfehler geben.
Abhilfe schafft hier nur, in z.B. in Pfennigen ... aeh Eurocent 
zu rechnen und dann vor der Ausgabe durch 100 zu teilen.

Grüße, Mathias


php::bar PHP Wiki   -   Listenarchive