Kommazahl in PHP mit Beistrich anstatt Punkt.

nchristoph

Erfahrenes Mitglied
Hallo,

Ich tüftel gerade an der Eingabe bei meinem Projekt:

Ich muss Kubik eingeben und bei uns in der Firma ist es üblich, einen Beistrich anstatt des Punktes einzugeben.

Ich habe die Eingabe jetzt so versucht:

PHP:
$kubik = $_POST['kubik'];

$kubikneu = str_replace(",", ".", $kubik);

Wenn ich das jetzt ausgeben lasse, stimmt es zwar, in die DB wird es allerdings nicht richtig eingetragen, da habe ich dann anstelle von 21.214 nur 21.000 stehen.

Mach ich da irgendwie was falsch?
 
Zuletzt bearbeitet:
Hi

was bekommst du, wenn du kubik vor bzw. kubikneu nach str_replace ausgibst?

Welche DB? Splatentyp? Insert?
 
Wenn ich $kubik ausgeben lasse bekomme ich das, was ich eingegeben habe.

Wenn ich $kubikneu ausgebenlasse bekomme ich anstelle von 21,214 21.214.

DB ist MYSQL, Spaltentyp ist decimal(10,3), Insert:

PHP:
	$DbCon->DoSQL("INSERT INTO suchmaschine (Holzart, Klasse, Trockenheit, Partie, Starke, Pfad ,Datum)
	VALUES 
		('".mysql_real_escape_string($holzart1)."',
		'".mysql_real_escape_string($klasse1)."',
		'".mysql_real_escape_string($trocken1)."',
		'".mysql_real_escape_string($partie1)."',
		'".mysql_real_escape_string($starke)."',
		'".mysql_real_escape_string($kubikneu)."',
		'".mysql_real_escape_string($link)."',
		NOW())");
 
Moin,
das hört sich alles nach einem fehlerhaften Datentyp an.
Wenn du eine Zahl im Format xx.xxx in die DB eintragen willst, dann sollte diese dort auch als Gleitpunktzahl gespeichert werden. (Für alle x != 0)

Nun hast du ja folgendes Szenario:
anstelle von 21.214 nur 21.000 stehen.

Solch ein Fehler tritt dann auf, wenn z.B. der Spaltentyp "Integer" ist -> da geht natürlich der Nachkommateil flöten, denn die Zahl muss auf den entsprechenden Spaltentyp gebracht werden.

Also, nochmal kontrollieren, ob da der Spaltentyp auf "Integer" steht.
 
Gib dir das Query mal direkt mit echo aus.
Ich kenn zwar den Aufbau der Tabelle nicht, glaube aber, dass das so nicht hinhaut:

PHP:
   $DbCon->DoSQL("INSERT INTO suchmaschine (Holzart, Klasse, Trockenheit, Partie, Starke, Pfad ,Datum)
    VALUES 
        ('".mysql_real_escape_string($holzart1)."',
        '".mysql_real_escape_string($klasse1)."',
        '".mysql_real_escape_string($trocken1)."',
        '".mysql_real_escape_string($partie1)."',
        '".mysql_real_escape_string($starke)."',
        '".mysql_real_escape_string($kubikneu)."',
        '".mysql_real_escape_string($link)."',
        NOW())");

ergibt:
Holzart => $holzart1
Klasse => $klasse1
Trockenheit => $trocken1
Partie => $partie1
Starke => $starke
Pfad => $kubikneu (?)
Datum => $link (?)
 
BUMM das war eine Fahrt gegen die Wand.

Das ich die Spalte nicht eingetragen hatte hab ich übersehen, Danke.

Komischerweise funktionierts jetzt auch nicht.

//Edit

Hab mir jetzt den Query ausgeben lassen und der Query war auch richtig.

Hab jetzt den Feldtyp von decimal auf float umgestellt, jetzt funktionierts, schon komisch irgendwie.
 
Zuletzt bearbeitet:
Zurück