Problem mit Punkt und Komma

Hallo,
ich hoffe, dass mir hier jemand helfen kann - bin ziemlicher Anfaenger was das programmieren angeht. Habe ein Problem bei der Darstellung der Flaechenberechnung mit den Kommas und Punkten. Meine Seite ist in drei Sprachen, daher muss es in de mit Punkt-Komma und in spanisch/englisch mit Komma-Punkt dargestellt werden. Wird es auch halbwegs . . .

Es sieht jetzt so aus:
in deutsch
Grund: 1.635 tarea = 1.028.415 m² = 252…44 acre
Grund: 2.000.000 m² = 3.179…65 tarea = 494…21 acre

in spanisch
Terreno: 1,635 tarea = 1,028,415 m² = 252,.44 acre
Terreno: 2,000,000 m² = 3,179,.65 tarea = 494,.21 acre

Und das ist das script:

function Flaechenumr($wert0,$wert1,$wie)
{
global $xlang;
if($wert1 == „t“)
{
$flmass1 = „tarea“;
$flmass2 = „m²“;
$flmass3 = „acre“;
$flaeche2 = round($wert0 * 629,2);
$flaeche3 = round($wert0 * 0.1544,2);
}
elseif($wert1 == „m“)
{
$flmass1 = „m²“;
$flmass2 = „tarea“;
$flmass3 = „acre“;
$flaeche2 = round($wert0 / 629,2);
$flaeche3 = round($wert0 / 4046.86,2);
}
$flaeche1 = $wert0;

if($xlang == „D“)
{ $trennung = „.“; }
elseif($xlang == „E“)
{ $trennung = „,“; }
else
{ $trennung = „,“; }

$fl = strlen($wert0);
if($fl > 6)
{ $flaeche1 = substr($wert0,0,($fl-6)).$trennung.substr($wert0,-6,3).$trennung.substr($wert0,-3,3); }
elseif($fl > 3)
{ $flaeche1 = substr($wert0,0,($fl-3)).$trennung.substr($wert0,-3,3); }
else
{ $flaeche1 = $wert0; }

$fl = strlen($flaeche2);
if($fl > 6)
{ $flaeche2 = substr($flaeche2,0,($fl-6)).$trennung.substr($flaeche2,-6,3).$trennung.substr($flaeche2,-3,3); }
elseif($fl > 3)
{ $flaeche2 = substr($flaeche2,0,($fl-3)).$trennung.substr($flaeche2,-3,3); }
else
{ $flaeche2 = $flaeche2; }

$fl = strlen($flaeche3);
if($fl > 6)
{ $flaeche3 = substr($flaeche3,0,($fl-6)).$trennung.substr($flaeche3,-6,3).$trennung.substr($flaeche3,-3,3); }
elseif($fl > 3)
{ $flaeche3 = substr($flaeche3,0,($fl-3)).$trennung.substr($flaeche3,-3,3); }
else
{ $flaeche3 = $flaeche3; }

if($wie == „P“)
{ $ret = ‚_ ‚.$flaeche1.‘ ‚.$flmass1.‘ = ‚.$flaeche2.‘ ‚.$flmass2.‘ = ‚.$flaeche3.‘ ‚.$flmass3.‘ '; }
else
{ $ret = ’
‚.$flaeche1.‘ ‚.$flmass1.‘ = ‚.$flaeche2.‘ ‚.$flmass2.‘ = ‚.$flaeche3.‘ ‚.$flmass3.‘ _‘; }
return $ret;
}

Vielen Dank im voraus

Hallo,

es gibt in php eine funktion zum formatieren von zahlen

http://de3.php.net/manual/de/function.number-format.php

ich weiß nur nicht ob das auch bei deienn ergebnisswerten mit 2? Punkten klappt.

Gruß

Hallo,

ich hoffe, dass mir hier jemand helfen kann - bin ziemlicher
Anfaenger was das programmieren angeht. Habe ein Problem bei
der Darstellung der Flaechenberechnung mit den Kommas und
Punkten. Meine Seite ist in drei Sprachen, daher muss es in de
mit Punkt-Komma und in spanisch/englisch mit Komma-Punkt
dargestellt werden. Wird es auch halbwegs . . .

Ich habe ehrlich gesagt aus dem Quelltext nicht verstanden,
wa Du überhauptmachen willst. Vielleicht solltest Du
mal in Ruhe aufschreiben, was das Ziel des Programms
und die Notwendigen Darstellungsoptionen sind.

Ich *vermute* mal grob, Du willst in etwa sowas machen:
/* Beispiel: */
$xlang = ‚E‘;
echo 'Grund: ’ . Flaechenumr(1000000, ‚m‘, ‚P‘);

function Flaechenumr($inp, $unit, $wie)
{
global $xlang;
$cid = $wie == ‚P‘ ? ‚at2‘ : ‚t2‘;
$sep = $xlang == ‚D‘ ? array(’,’, ‚.‘) : array(’.’, ‚,‘);

if( $unit == ‚t‘ ) { // input: tarea
$fl[0] = number_format($inp, 2, $sep[0], $sep[1]) . ’ tarea’;
$fl[1] = number_format($inp*628.8, 2, $sep[0], $sep[1]) . ’ m²’;
$fl[2] = number_format($inp*0.155379863867, 2, $sep[0], $sep[1]) . ’ acre’;
}
else { // input: m^2
$fl[0] = number_format($inp, 2, $sep[0], $sep[1]) . ’ m²’;
$fl[1] = number_format($inp*1./628.0, 2, $sep[0], $sep[1]) . ’ tarea’;
$fl[2] = number_format($inp*0.000247105381467, 2, $sep[0], $sep[1]) . ’ acre’;
}
return "" . join(’ = ', $fl);
}

Wie gesagt, reine Vermutung.

Grüße

CMБ

Oje, wenn ich noch nicht mal richtig erklaeren kann, was ich will, wie soll ich denn dann so einen Kram programmieren. . . .

Vielleicht ist es am einfachsten, wenn Du kurz auf meine Seite gehst:
http://rdbienes.com/bienes/liste.php?xlang=S&Objekto…

Da habe ich eine Liste mit Objekten, manchmal bekomme ich die Grundstuecksgroesse in m2, manchmal in tarea (eine typisch dominikanische Groesseneinheit).
Deshalb rechne ich die Angaben um in z.B. tarea=m2=acre oder m2=tarea=acre

Die Ergebnisse muessen dann eben in deutsch mit z.b. ,. und in spanisch und englisch mit …, ausgegeben werden - und da hapert es irgendwo.

Die Berechnungen sind richtig, aber die Ausgaben kommen bei mir so:

Es sieht jetzt so aus:
in deutsch
Grund: 1.635 tarea = 1.028.415 m² = 252…44 acre
Grund: 2.000.000 m² = 3.179…65 tarea = 494…21 acre

in spanisch
Terreno: 1,635 tarea = 1,028,415 m² = 252,.44 acre
Terreno: 2,000,000 m² = 3,179,.65 tarea = 494,.21 acre

das heisst also hinten die Dezimalzahlen werden falsch abgetrennt, entweder mit ,. oder mit …

War das jetzt besser zu verstehen? Es tut mir leid. Ich bin absolut kein Programmierer, kann ein wenig Webdesign, das fuer meine Seiten langt und suche mir in Buechern die PHP Codes zusammen, die ich brauche (was nicht immer gelingt, wie man sieht).

Also lasst Nachsicht walten - Danke

Hallo,

Da habe ich eine Liste mit Objekten, manchmal bekomme ich die
Grundstuecksgroesse in m2, manchmal in tarea (eine typisch
dominikanische Groesseneinheit).
Deshalb rechne ich die Angaben um in z.B. tarea=m2=acre oder
m2=tarea=acre

Aha. Zumindest habe ich fast richtig geraten :wink: Im
Prinzip kannst Du mal versuchen, Deine Routine
„Flaechenumr“ durch folgende zu ersetzen:

function Flaechenumr($inp, $unit, $wie)
{
global $xlang;
$cid = $wie == ‚P‘ ? ‚at2‘ : ‚t2‘;
$lng = array( ‚D‘ => array(‚Grund‘, ‚,‘, ‚.‘),
‚S‘ => array(‚Terreno‘, ‚.‘, ‚,‘),
‚E‘ => array(‚Lot‘, ‚.‘, ‚,‘) );
$sep = $lng[$xlang];
if( $unit == ‚t‘ ) { // input: tarea
$fl[0] = number_format($inp, 2, $sep[1], $sep[2]) . ’ tarea’;
$fl[1] = number_format($inp*628.8, 2, $sep[1], $sep[2]) . ’ m²’;
$fl[2] = number_format($inp*0.155379863867, 2, $sep[1], $sep[2]) . ’ acre’;
}
else { // input: m^2
$fl[0] = number_format($inp, 2, $sep[1], $sep[2]) . ’ m²’;
$fl[1] = number_format($inp*1./628.0, 2, $sep[1], $sep[2]) . ’ tarea’;
$fl[2] = number_format($inp*0.000247105381467, 2, $sep[1], $sep[2]) . ’ acre’;
}
return "$sep[0]: " . join(’ = ', $fl) .'’;
}

und zu schauen, was passiert. Die Ausserhalb dieser
Funktion möglicherweise vorkommende Einblendung von
„Grund“ „Lot“ etc. kannst Du auch weglassen.

Übrigens ist der HTML-Code der Seite ziemlich
kaputt, vielleicht solltet ihr mal eine Woche
lang jemanden „vom Fach“ ranlassen :wink:

Ausserdem hab ich mal die Umrechnungsfaktoren nachgeschaut,
die von Dir verwendeten Werte scheinen ein wenig ungenau.
Möglicherweise ist es aber in der Branche so üblich,
wer weiss …

Grüße

CMБ

Super . . .
Ich danke Dir, das ist genau das, was ich wollte.
Und mit der Ungenauigkeit - das lag an meiner Programmierung - nicht daran, dass es in der Branche so ueblich ist (obwohl das einige natuerlich auch deshalb machen).

Aber das Du sagst, dass mein Html so uebel ist, hat mich nun doch ziemlich betruebt - wo ich so stolz auf die Seite bin und sie eigentlich ganz gut finde . . . leider hast Du sicherlich recht.

Mit den Fachmaennern ist das so eine Sache. Das kann ich mir im Moment noch nicht leisten. Aber ich werde mich mal hinsetzen und schauen ob ich ein wenig Ordnung reinbringen kann.

Auf jeden Fall danke ich Dir ganz herzlich.

Gruesse aus der total verregneten DomRep