Zahlen umwandeln klappt nicht

SXrunner

Mitglied
Um in einer Zahl Kommas in Dezimalpunkte umzuwandeln verwende ich folgende Schleife.

Code:
if (isset($_POST)){
		       foreach($_POST as $key => $element){
			        if ($key!="beschreibung")
		         {
		         
		        $element=str_replace(",",".",$element);
		        
		        $test.="$key   $element <br>";
		        }
		         }
	          }
Wenn man sich das ausgeben lässt funktioniert das hervorragend.Wenn ich die umgewandelte Zahl aber in die Datenbank schreiben möchte fallen die Nachkommastellen weg.Also wenn man 33,33 eingibt steht 33.00 in der DB anstatt 33.33
Was hab ich falsch gemacht?
 
Feld ist vom Typ float 8,2 Wenn man 33.33 eintippt wird auch korrekt in die DB geschrieben,nur wenn man 33,33 eingibt wird 33.33 ausgegeben (echo $test) aber 33.00 in die DB geschrieben.
Mit number_format kommt in der Ausgabe schon 33.00
 
Ich weiss,aber wenn jemand 33,33 eingibt soll ja auch 33.33 in der DB stehen.Und das geht eben nicht obwohl die Ausgabe mit echo korrekt ist.
 
Hi

vllt. machst du beim Insertquery was falsch ?

Folgender test ging:

Tabelle: test
id int auto_increment NOT NULL,
number float(8,2) NOT NULL,
Primary Key (id)
);

Insert into test (number) VALUES ('33.33');

Also evtl falsche Variable im Insert-query ?
 
OK,vielleicht hab es nicht genau beschrieben.Die Query ist definitiv richtig.Das Problem ist:

Es werden Formulardaten ausgewertet.Wenn der User 33,33 eingibt ist die Eingabe ja falsch da nur der Punkt als Dezimalzeichen zulässig ist.Deshalb wollte ich mit der geposteten Schleife die Komma durch Punkte ersetzen.

Was ich grad gemerkt habe: Die Variable $element wird in der Schleife erfolgreich modifiziert.Die ursprüngliche Variable(welche von einem Formular durch post übergeben wurde) bleibt aber unverändert.Wie kann ich dieser Variable in der Schleife den Wert von $element zuweisen?Mit $key=$element irgendwie nicht.
 
PHP:
$_POST[$key] = $element;

Oder ersetzt mal den Anfang deiner Schleife mit
PHP:
foreach($_POST as $key => &$element){
 
Zurück