Zahl formatieren

tinella

Erfahrenes Mitglied
Hallo zusammen

Hab gleich mehrere Probleme, die wie ich denke miteinander verknüpft sind.

Ich habe Preise, die ich in einer SQL-DB abspeichere.
Die Preise sind eher hoch, das heisst zB 50'000 oder 1'000'000 oder 5'000'000'000.
Die Zahlen müssen so wie oben dargestellt werden mit den dazugehörigen Hochkomma zwischen den Tausendern.

Die Preise kann man via einem Inputfield eingeben.

Ich habe für das DB-Feld den Typ INT genommen.

Problem:
Wenn ich nun in das Inputfield 100'000 mit dem Hochkomma eingebe, speichert es mir nur Hundert (100) in die DB und liest auch entsprechend wieder 100 aus. Was falsch ist.

Frage:
Wie kann ich dieses Problem umgehen? Kann ich einen anderen Typ nehmen, damit es mir die Zahl mit den Hochkommas direkt und unverändert in die DB speichert?

Vielen Dank für allfällige Antworten, Tinella
 
Also ich hab noch nie gesehen, dass ein Hochkomma als 1000er-Trennzeichen genutzt wird. In Deutschland ist ja der Punkt ueblich, hier das Komma, aber wie gesagt, ein Hochkomma hab ich dafuer noch nie gesehen.
Wie dem auch sei, egal was Du bei der Eingabe nutzt, es wird wohl immer als String gehandhabt werden. Dementsprechend waere es besser wenn Du bei der Eingabe entweder auf die Trennzeichen verzichtest oder diese vor dem Eintrag in die Datenbank ausfilterst. Wenn Du die Daten dann aus der Datenbank holst kannst Du sie ja wieder einfuegen.
 
Für so eine eigenwillige Formatierung kannst du doch auch Strings benutzen (VARCHAR)
und wenn du damit rechnen willst musst du es ja sowieso in eine Formatierung bringen mit der man rechnen kann.
 
Danke für deine Antwort!

Bei uns in der Schweiz macht man die Trennung mit Hochkommas :)

Ich habe jetzt gemacht, dass es mir die Hochkommas entfernt bei speichern in die DB:
Code:
// Delete ' from price
$auftragsSumme = str_replace("\'", "", $_REQUEST['news_auftragssumme']);

Könntest du mir einen Ansatz geben, wie ich den String aufsplitte wenn ich ihn wieder aus der DB auslese?
Ich weiss nicht wie ich das lösen soll, damit er drei Zeichen hinten an der Zahl anfängt und nicht vorne (wegen zB 2'500'000).

Bis jetzt habe ich diese Variante:
Code:
$number = wordwrap($row['news_auftragssumme'], 3, ' ', 1);
Aber das fängt von vorne an und ergibt das hier (= falsch): 250'000'0


Vielen Dank, Tinella
 
Hallo!

In PHP und MySQL werden Kommata als Tausendertrennzeichen und Punkte für die Nachkommastellen genutzt.
Ich würde mal versuchen Deine Zeichen mit str_replace() zum eintragen in die Datenbank mit den Kommata bzw. dem Punkt auszutauschen.
Beim auslesen (genauer gesagt bei der Darstellung) würde ich dann den umgekehrten Weg nehmen.

Gruss Dr Dau
 
Und welche Lösung hast Du nun genommen?
number_format() oder str_replace()?
Dürfte andere sicherlich auch interessieren. ;)
 
Also, habe folgende Zahl aus Datenbank gelesen: 500400111

Und mit
Code:
		<?php 	
		// Show Auftragssumme with '
		$news_auftragssumme = number_format($_REQUEST['news_auftragssumme'], 0, ".", "'");
		?>

Zu 500'400'111 gezaubert :)

Klappt prima :)
 
Als zusätzliche Information: Gewöhnlich wird in Deutschland bei Zahlenwerten ein (schmales) Leerzeichen als Tausendertrennzeichen benutzt. Bei Geldbeträgen (und nur dort) können auch Punkte als Trennzeichen genommen werden.
 
Zurück