Datenbanken, grosse zahlen und Usereingaben

Hi Leute,

ich hab hier grade ein Problemchen mit einem Eingabefeld und der weiteren Bearbeitung. Ich bin mir nicht ganz sicher, ob ich hier oder in Datenbanken fragen sollte, aber ich denke hier ist es besser aufgehoben…

Nun zum Szenario:
Es gibt ein Eingabefeld, in dem eine Zahl eingetragen werden soll. Das ganze wandert dann in eine Datenbank und soll da auch als Zahl abgespeichert werden, damit ich danach auch Abfragen mit WHERE > x machen kann etc.
Nun wäre das an sich ja kein Problem, wenn die User nicht da wären…
Der tausender-Punkt der in der Datenbank als Komma-Seperator verwendet wird haut natürlich alles zusammen… Dann gibts aber auch wieder Leute, die es Datenbankkonform mit . trennen und das komma als tausender-Seperator nehmen… Gut, man könnte einfach alles rausschmeissen und dann einen Punkt setzen aber vorsicht vorm User, denn der gibt unter umständen keine zwei Kommastellen an…

Nun steh ich da ich armer Tropf und senke ganz tief ab den Kopf…
Was soll ich denn da machen oder was kann ich machen um die Zahlen immer so zu erkennen, wie ich sie als Mensch erkennen würde?

Hatte das Problem schon mal jemand?

vielen Dank
Munich

Hi,

Nun steh ich da ich armer Tropf und senke ganz tief ab den
Kopf…
Was soll ich denn da machen oder was kann ich machen um die
Zahlen immer so zu erkennen, wie ich sie als Mensch erkennen
würde?

Ein extra Feld für die Nachkommastellen?
Sonst eine Schleife - komma vorn, punkt hinten oder punkt vorn, komma hinten - aber was wenn es nur ein komma oder einen punkt gibt arrghhh ist ja schwerer als ich dachte - wenn nur zwei Nachkommstellen erlaubt sind kannst du auch prüfen an welcher Stelle das komma/punkt steht. Nach einem tausender Trenner sind ja immer 3 Zeichen …

Gruss Jan

das war jetzt auch das einzige was mir eingefallen
ist…

aber ist echt knifflig…
aufteilen in 2 felder möcht ichs aber eigentlich nicht.
nur wie prüf’ ich am geschicktesten, wieviele Zeichen es bis zum Ende des Strings sind vom letzten punkt oder komma ausgehend *grübel*
am besten wohl
$test1 = strlen(strrchr($var,","));
$test2 = strlen(strrchr($var,"."));
if ($test1 == 2 || $test2 == 2) echo „2 Nachkommastellen angegeben“;
elseif ($test1 == 1 || $test2 == 1) echo „Irgendwer verarscht mich“;
else echo „gehen wir von 3 stellen aus, behandeln es also nicht als nachkommastelle“;
oder?

ist…

aber ist echt knifflig…
aufteilen in 2 felder möcht ichs aber eigentlich nicht.
nur wie prüf’ ich am geschicktesten, wieviele Zeichen es bis
zum Ende des Strings sind vom letzten punkt oder komma
ausgehend *grübel*

Ich würde strrpos benutzen, die Position minus die strlen und schon weisst du bescheid http://selfphp.de/funktionsreferenz/string_funktione…

für die interessierten: so hab ichs im Moment…
aber obs eine 1a Lösung ist weiss ich nicht so recht…
Für verbesserungen bin ich gerne offen

<?php echo "<form method=get>";

echo "Übergebene Zahl: ".$zahl."
";

$laenge1 = strlen($zahl)-strrpos($zahl,".")-1;
$laenge2 = strlen($zahl)-strrpos($zahl,",")-1;

$neuezahl = "";
for ($i=0;$i";

if ($laenge1 == 2 || $laenge2 == 2) 
 {
 echo "2 Nachkommastellen gefunden";
 $neuezahl = $neuezahl / 100;
 }
elseif ($laenge1 == 1 || $laenge2 == 1) 
 {
 echo "1 Nachkommastelle gefunden (wie interprätieren???)";
 }
else 
 {
 echo "3 oder mehr Nachkommastellen -\> Behandelt als 1ooo er Trennzeichen";
 }
echo " ";

echo "Umgewandelt in: $neuezahl";

?\>

PS: Die Ausgaben sind nur intern, deswegen schlampiges html - wichtiger ist die korrekte Ausführung. Wer sich das Script in Betrieb anschaun will hierhin surfen:
http://www.immobilien-for-you.com/zahl.php?zahl=5%2C…

nochmal korrigiert
Problem: bei einstelligen und zweistelligen Zahlen wirds chaotisch *g*

<?php echo "<form method=get>";

echo "";
echo "Übergebene Zahl: ".$zahl."
";

 $neuezahl = "";
 $neuerstring = "";
 for ($i=0;$i Behandelt als 1ooo er Trennzeichen
 }
 }
 echo $neuezahl;
?\>