# Punkt statt Komma



## emplace (14. November 2002)

Moin Leute,

hab mal wieder ein Prob. und zwar:

Wenn ich in ein Formularfeld eine Summe eintrage 

z.B. 12,22 und diese Daten nach mysql übergebe steht nur 12.00 drin.

Das Feld in der Tabelle ist *decimal(5,2)*.

Da ich die Zahlen über den Nummerblock eingebe, muss ich wohl in der Formularprogrammierung das Komma in Punkt umwandeln, nur wie?

Danke im Vorraus

MFG emplace


----------



## Christian Fein (14. November 2002)

str_replace

(PHP 3>= 3.0.6, PHP 4 )
str_replace --  Replace all occurrences of the search string with the replacement string
Description
mixed str_replace ( mixed search, mixed replace, mixed subject)

This function returns a string or an array with all occurences of search in subject replaced with the given replace value. If you don't need fancy replacing rules, you should always use this function instead of ereg_replace() or preg_replace().

In PHP 4.0.5 and later, every parameter to str_replace() can be an array.

If subject is an array, then the search and replace is performed with every entry of subject, and the return value is an array as well.

If search and replace are arrays, then str_replace() takes a value from each array and uses them to do search and replace on subject. If replace has fewer values than search, then an empty string is used for the rest of replacement values. If search is an array and replace is a string; then this replacement string is used for every value of search.

Example 1. str_replace() example

$bodytag = str_replace("%body%", "black", "<body text=%body%>");

This function is binary safe.

Note: str_replace() was added in PHP 3.0.6, but was buggy up until PHP 3.0.8.

See also ereg_replace(), preg_replace(), and strtr()


----------



## antihero (14. November 2002)

also ganz genau wäre dass dann:


```
$zahl = str_replace(".",",", $zahl);
```

wobei $zahl die variable ist die die zahl enthält...

antihero


----------



## emplace (14. November 2002)

Danke!

Nur wie bringe ich das hier ein:  <? $jan = str_replace(".",",", $jan); ?>


```
....
<td>
       <input name="jan" type="text" value="<? echo $jan ?>" size="10" maxlength="10">
</td>
......
```


MFG emplace


----------



## antihero (14. November 2002)

hmmm... so wie dus geschrieben hast...

nimm dein script und statt dem einfachen echo machst dus so:


```
<? $jan = str_replace(".",",", $jan); ?>
<tr><td><input name="jan" type="text" value="<? echo $jan ?>" size="10" maxlength="10"></td></tr>
```

und dann solte das gehen... vielleicht habe ich deine frage falsch verstanden... in diesem falle einfach nachfragen... so wie oben gehts aber auf jeden fall..

antihero


----------



## emplace (14. November 2002)

Danke,

nur das funkt nicht.

Ok, hier noch mal die Frage:

Ich möchte die Werte mit einem Komma eingeben also 12,22 aber in der mysql datenbank steht nur 12.00 . Es fehlt als alles nach dem Komma
???? :-(


Wie bekomme ich das hin das ich 12,22 eingebe und 12.22 gespeichert wird?

MFG emplace


----------



## antihero (15. November 2002)

hmmm... scheint als akzeptiert mysql als Komma nur den Punkt (dummer satz, ich weiss ). Filtere also bei deiner Eingabe (12,23) das komma heraus und ersetze es mit einem punkt. schreib dann diesen wert in die tabelle.
wenn du den wert wieder aus der DB ausliest, kannst du dann zum ausgeben, das Punk wieder durch ein Komma ersetzen...

Hoffe das geht so, ansonsten gibts noch eine dumme, unelegante ausweichlösung, du änderst einfach den feldtyp ind "varchar", dann wird das ganze sicher korrekt gespeichert, is aber sicher nicht elegant gelöst... 

antihero


----------



## Alexnder Ruff (19. Juni 2009)

Moin Moin,

Ich habe das gleiche Problem. Es ist kein Problem die Daten umzuwandeln sp das das Komma zu einen punkt umgewandelt werden. 

Jetzt habe ich aber das Problem das die Eingaben eines Textfeldes nicht in eine Variable zu schreiben.

Hier meinen Code:


```
<input name="preis1" type="text" id="preis1" size="15" />
	     <? 
		 	$preis = $_POST["preis1"];
		 	$s = $preis;
			$f = str_replace(',', '.', $s);
			$test = $f * 3.5; 
		?>
      &euro;
      <input name="preis" type="hidden" id="preis" value="<?php echo "$test"; ?>" />
```

Wo mache ich meinen Fehler 

Alex


----------



## Loomis (19. Juni 2009)

Was genau hast du vor?
Das was du da zeigst, funktioniert bei mir so wie es soll. Nach dem Absenden des Formulars, steht der Wert in einem hidden-Feld.


----------



## saftmeister (19. Juni 2009)

Euer Problem kann mit number_format() gelöst werden.


----------



## Alexnder Ruff (22. Juni 2009)

Moin Moin,

leider landet der wert bei mir nicht im hidden Feld! 

ich weiß nicht woran das noc liegen könnte ?

Alex


----------



## CookieBuster (22. Juni 2009)

@Ruff

Warum hast du deine Variable in Anführungszeichen? Noch unsinniger kann man seine Performace ja nicht verschlechtern xD (in dem Fall zwar nicht viel, aber mach das mal öfters....)

Ich könnte mir bei deinem Code vorstellen dass du versuchst einen String mit einer Zahl zu multiplizieren, mach mal einen Cast bevor du die Zahlen multiplizierst (also deinen String explizit in eine float umwandeln)


----------

