2010-01-04 11 views
6

Ich mache eine kleine Anwendung von Hinzufügen von Preisen und Dezimalzahlen. Punkte sind normal mit Dezimalzahlen zu verwenden, aber wie kann ich Dezimalzahlen mit Komma als Eingabe schreiben (543,35 statt 543,35) und dann vielleicht mit Punkt in die Datenbank (mysql) ändern? Dann drucke es mit dem Komma aus der Datenbank zurück. Grund ist, dass Komma (,) in Finnland häufiger verwendet wird als Punkt (.), Wenn Dezimalzahlen geschrieben werden.Dezimalzahl mit Komma anstelle von Punkt (PHP und Sql)

Vielen Dank!

Samuel

+0

Welche Datenbank verwenden Sie? –

+0

Wenn Sie in mehreren Formaten präsentieren, handelt es sich um ein Präsentationsproblem, das besser in PHP behandelt werden könnte. Andernfalls können Sie den Wert aus SQL formatieren. –

+0

Ich benutze mysql –

Antwort

6

müssen Sie nichts in der SQL-Ende tun. Sie den Dezimalwert in php formatiert werden soll (unter Annahme php4/php5): Stellen Sie den dritten Parameter $ mittels dec_point auf ''

// string number_format (float $number , int $decimals , string $dec_point , string $thousands_sep) 
<?php 

$number = 1234.56; 

// French notation 
$nombre_format_francais = number_format($number, 2, ',', ' '); 
// 1 234,56 

$number = 1234.5678; 

// english notation without thousands seperator 
$english_format_number = number_format($number, 2, '.', ''); 
// 1234.57 

?> 

Quelle: http://php.net/manual/en/function.number-format.php

Prost!

+0

Vielen Dank! Jetzt kann ich die Nummer mit Komma 12,50 anstelle von 12,50 eingeben (einfacher für finnische Tastatur), damit es mit den Dezimalzahlen erkannt werden kann? –

+0

Rechts. Sie müssen sich nur um die Formatierung der Nummer im Frontend kümmern und MySQL wie gewohnt speichern lassen. Die zugrunde liegende Nummer ist immer noch dieselbe, egal wie Sie sie anzeigen. – mirezus

0

Wie schon gesagt, ist es am besten, den Wert als Float zu speichern und dann für die Anzeige zu formatieren. Als Alternative zu dem zuvor vorgeschlagenen number_format() könnten Sie money_format() versuchen http://us.php.net/manual/en/function.money-format.php Es funktioniert nicht in einer Windows-Umgebung, wenn das für Sie wichtig ist.

+0

Whoops, ich glaube, ich habe deine Frage zu schnell gelesen ... du brauchst kein Währungsformat, oder? –

+0

Ja, keine Notwendigkeit für Währungsformat. Was ich noch suche, ist das, gibt es irgendeine Möglichkeit, Dezimalzahl mit Komma als Eingabe zu schreiben? Ich weiß nicht, ob ich meine Frage richtig formulieren kann. –

0

Nein, die Verwendung von Komma als Dezimaltrennzeichen für arithmetische Operationen wird nicht unterstützt. Filtern Sie Ihre Eingabe und ersetzen Sie das Komma durch einen Punkt und formatieren Sie dann Ihre Ausgabe wie gewünscht.

1

die PHP number_format Funktion ist, was Sie brauchen:

number_format(5.50, 2, ','); 

... sollte es tun.

+0

Nein, es ist nicht, lesen Sie es noch einmal. –

+0

Hoppla, es ist eigentlich nicht ... mein Schlechter. (Auf der einen Seite bin ich nicht immer erstaunt zu sehen, wie Leute falsche Antworten kommentieren, ohne einen richtigen zu liefern. Los Jungs, ihr bringt so viel in die Community :) – Nicolas

10
$input = '5,50'; 
$output = str_replace(',', '.', $input); 
var_dump($output); // string(4) "5.50" 
$number = (float)$output; 
var_dump($number); // float(5.5) 
+0

Danke! Sehr gute und klare Antwort !! –

Verwandte Themen