Hallo,
stehe gerade vor einem Problem, das sicherlich nicht neu ist, aber zugleich recht vielschichtig: das "Problem" der verschiedenen Dezimaltrennzeichen.
Derzeit arbeite ich an einer Webanwendung, die Daten werden in MySQL abgelegt, die Logik wird mit PHP implementiert, angezeigt wird das ganze mit HTML und CSS. Ergänzend kommt dann für die eine oder andere Clientseitige Funktionalität noch JavaScript hinzu, auf der Serverseite nutze ich dann noch einige PEAR-Klassen (im aktuellen "Fall" ist da QuickForm zu erwähnen).
Fange ich mal bei der Eingabe an: ich habe ein Textfeld in dem der User einen Betrag eingeben kann, da es sich um Geld handelt, ist es nicht unwahrscheinlich, das bei der Eingabe ein Komma vorkommt.
PEARs Quickforum erlaubt mir ja ganz nett die Daten schon Clientseitig zu kontrollieren, z.B. auf "isnumeric", aber... das funktioniert mit dem deutschen Komma ja nicht wirklich, weshalb mir das Absenden des Formulares verweigert wird.
Jetzt könnte man ja einfach hingehen, und beim verlassen des Feldes das Komma gegen einen Punkt austauschen, das könnte aber den Benutzer irritieren ("was ist denn das, ich habe da doch ein Komma eingegeben!"). Also wäre ein anderer potentieller Moment für das Aufrufen einer "Ersetzen" Funktion das Absenden des Formulares selber (wobei da ja netterweise beim "Submit" Event schon die Prüfung von Quickform steht... da müsste ich dann wohl die Funktion wrappen und erweitern?).
Ist JS aktiviert sollte so ganz brav ein Float-Wert gesendet werden. Ist JS deaktiviert (okay, passiert immer seltener, aber ich will mich ja nicht alleine auf JS verlassen) muss ich die Prüfung nochmal Serverseitig durchführen und ggf. die Korrektur vornehmen.
Liegt der Wert erstmal brav als Float vor, kann ich ihn ja wunderbar in MySQL eintragen.
Beim Aufruf des Formulares selber kann ich den Vorgabewert ja wunderbar mit "Number_Format" formatieren und ausgeben.
Gibt es da ausser
noch Möglichkeiten "deutsches" Verhalten zu "erzwingen"?
Speziell bei HTML gibt es ja noch die "lang=de" Option, würde die mir helfen?
Gibt es evt. eine entsprechende Einstellung auch für JS?
Oder gibt es da schon fertige Lösungen?
stehe gerade vor einem Problem, das sicherlich nicht neu ist, aber zugleich recht vielschichtig: das "Problem" der verschiedenen Dezimaltrennzeichen.
Derzeit arbeite ich an einer Webanwendung, die Daten werden in MySQL abgelegt, die Logik wird mit PHP implementiert, angezeigt wird das ganze mit HTML und CSS. Ergänzend kommt dann für die eine oder andere Clientseitige Funktionalität noch JavaScript hinzu, auf der Serverseite nutze ich dann noch einige PEAR-Klassen (im aktuellen "Fall" ist da QuickForm zu erwähnen).
Fange ich mal bei der Eingabe an: ich habe ein Textfeld in dem der User einen Betrag eingeben kann, da es sich um Geld handelt, ist es nicht unwahrscheinlich, das bei der Eingabe ein Komma vorkommt.
PEARs Quickforum erlaubt mir ja ganz nett die Daten schon Clientseitig zu kontrollieren, z.B. auf "isnumeric", aber... das funktioniert mit dem deutschen Komma ja nicht wirklich, weshalb mir das Absenden des Formulares verweigert wird.
Jetzt könnte man ja einfach hingehen, und beim verlassen des Feldes das Komma gegen einen Punkt austauschen, das könnte aber den Benutzer irritieren ("was ist denn das, ich habe da doch ein Komma eingegeben!"). Also wäre ein anderer potentieller Moment für das Aufrufen einer "Ersetzen" Funktion das Absenden des Formulares selber (wobei da ja netterweise beim "Submit" Event schon die Prüfung von Quickform steht... da müsste ich dann wohl die Funktion wrappen und erweitern?).
Ist JS aktiviert sollte so ganz brav ein Float-Wert gesendet werden. Ist JS deaktiviert (okay, passiert immer seltener, aber ich will mich ja nicht alleine auf JS verlassen) muss ich die Prüfung nochmal Serverseitig durchführen und ggf. die Korrektur vornehmen.
Liegt der Wert erstmal brav als Float vor, kann ich ihn ja wunderbar in MySQL eintragen.
Beim Aufruf des Formulares selber kann ich den Vorgabewert ja wunderbar mit "Number_Format" formatieren und ausgeben.
Gibt es da ausser
PHP-Code:
setlocale(LC_ALL, 'de_DE@euro.utf8', 'de_DE', 'de', 'ge');
Speziell bei HTML gibt es ja noch die "lang=de" Option, würde die mir helfen?
PHP-Code:
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
Oder gibt es da schon fertige Lösungen?