ChatKult FORUM · Next 1.0.9
Forenübersicht » [ Technik & Multimedia ] » Und auf ein Neues -> PHP :-p

Und auf ein Neues -> PHP :-p

Jaja, ich schon wieder s-)

Diesmal habe ich ein Problem mit number_format()
Es geht um einen "Vergleichsrechner" - wieviel Kohle der Kunde sparen kann, wenn er das Supidupi-Produkt einsetzt.

Also, es beginnt damit, dass der Besucher der Seite via Eingabefeld sagt, wieviele Mitarbeiter seine Firma hat.
Diese Zahl wird übergeben an ein Script, das voreingestellte Beispielwerte benutzt, um mit der Mitarbeiterzahl Berechnungen durchzuführen. Die Ergebnisse werden dann in einem weiteren Formular als value-Werte der Eingabefelder angezeigt. Und damit es hübsch aussieht, sollen die Werte Tausender-Zeichen und Nachkommastellen anzeigen. Das habe ich nun mittels number_format() gemacht. Allerdings werden diese formatierten Werte nun weitervermittelt an ein nachfolgendes Script, dass wiederum Berechnungen mit diesen übergebenen Werten anstellt. Und dabei kommt es zu Berechnungsfehlern - scheinbar wertet php die Tausender-Stellen als Komma-Stellen und ignoriert, was hinter der Tausenderstelle steht.

Ich habe nun versucht, mittels ereg_replace den Punkt durch "nichts" ersetzen zu lassen, aber das hat nicht funktioniert, mir wurden nur noch Nullen ausgegeben :-/ In einem anderen Forum habe ich die Aussage gesehen, man solle number_format() immer erst NACH einer Berechnung anwenden - das hilft mir aber nicht, denn es ist gewünscht, dass im ersten Formular die Zahlen schon formatiert angezeigt werden. Weiß jemand, wie ich diese Formatierung für eine weitere Berechnung wieder rückgängig machen kann?

-----------------------------------------------

Zur Verdeutlichung:

1. Schritt: Der Seitenbesucher sieht ein Eingabefeld, in welches er einen Wert einträgt.
<input type="text" name="mitarbeiterzahl" value="">


2. Schritt: Dieser Wert wird an ein Script übergeben, welches mit diesem Wert erste Berechnungen anstellt und die Ergebnisse dann wieder in einem Formular anzeigt - damit der Seitenbesucher die Zahlen ggf. an seine tatsächlichen Kosten anpassen kann. Diese im Formular angezeigten Werte werden mit number_format() in die gewünschte Form gebracht.
### Übergebener Wert
$p_stamm = $mitarbeiterzahl;

### Vorgegebene Faktoren
$faktor_wartung = 25;

### Wartungskosten/Jahr
$kosten_wartung_jahr = $faktor_wartung*$p_stamm;

### Ausgabe
echo %27<form>
<input type="text" name="wartungskosten_jahr" value="%27.$number_format($kosten_wartung_jahr,2,",",".").%27">
<input type="submit" value="Berechnen">
</form>%27;


3. Schritt: Ein zweites Script bekommt nun diese formatierten Werte und soll damit weitere Berechnungen anstellen. $wartungskosten_jahr hat nu also bspw. den Wert 2.567,00 . Wenn diese Zahl nun mit etwas multipliziert werden soll, scheint php nur die 2 zu erkennen und ignoriert alles, was hinter dem Punkt steht ...
Wie gesagt, ich habe versucht, mit ereg_replace(".", "", $wartungskosten_jahr) den Punkt wegzubekommen - aber dann erhielt ich als Ergebnis nur eine 0,00. Und irgendwo las ich etwas von dem Befehl setlocale (LC_ALL, %27de_DE%27), das dem Script wohl sagen soll, die deutschen Formatierungen zu berücksichtigen - hab%27s ohne Erfolg versucht :-/

Weiß jemand Rat?
Juhu, ich hab die Lösung gefunden :-n

### $wartungskosten_jahr hat jetzt noch den Wert 2.567,00

$wartungskosten_jahr = str_replace(array(".", ","), array("", "."), $wartungskosten_jahr);

### $wartungskosten_jahr hat jetzt den Wert 2567.00 - und damit funktionieren die nachfolgenden Berechnungen wieder :-n

Es lohnt sich, die Kommentare zu Funktionen auf php.net zu lesen :-p