Zahlen formatieren

atlantyz

Erfahrenes Mitglied
Hallo,

ich würde gerne Daten aus einer Datenbank umformatieren, damit die Tausender-Punkte haben.

Ich habe die Funktion number_format gefunden. Allerdings weiß ich nicht, wie ich die in einer Abfrage benutze.

Ich hab da zwei Versionen, aber beide funktionieren nicht... ne andere Idee hab ich leider nicht, vielleicht kann mir einer helfen

PHP:
while ($dsatz = mysql_fetch_assoc($res))
{
echo "<tr>";
echo "<td>" . $dsatz["Name"] . "</td>";
echo "<td>" . $dsatz["Stand"] . "</td>";
echo "<td>" . $dsatz["Level"] . "</td>";
$zwischen = $dsatz["Beute"]
echo "<td>" . number_format($zwischen) . "</td>";
echo "<td>" . $dsatz["Beute"] . "</td>";
echo "<td>" . $dsatz["Kaempfe"] . "</td>";
echo "<td>" . $dsatz["Siege"] . "</td>";
echo "<td>" . $dsatz["Niederlagen"] . "</td>";
echo "<td>" . $dsatz["E_Gold"] . "</td>";
echo "<td>" . $dsatz["V_Gold"] . "</td>";
echo "<td>" . $dsatz["Staerke"] . "</td>";
echo "<td>" . $dsatz["Verteidigung"] . "</td>";
echo "<td>" . $dsatz["Gewandheit"] . "</td>";
echo "<td>" . $dsatz["Ausdauer"] . "</td>";
echo "<td>" . $dsatz["Geschick"] . "</td>";
echo "<td>" . $dsatz["Pruefung"] . "</td>";
echo "<td>" . $dsatz["B_Pruefung"] . "</td>";
echo "<td>" . $dsatz["V_Pruefung"] . "</td>";
echo "</tr>";
}
PHP:
while ($dsatz = mysql_fetch_assoc($res))
{
echo "<tr>";
echo "<td>" . $dsatz["Name"] . "</td>";
echo "<td>" . $dsatz["Stand"] . "</td>";
echo "<td>" . $dsatz["Level"] . "</td>";
echo "<td>" . number_format($dsatz["Beute"]) . "</td>";
echo "<td>" . $dsatz["Beute"] . "</td>";
echo "<td>" . $dsatz["Kaempfe"] . "</td>";
echo "<td>" . $dsatz["Siege"] . "</td>";
echo "<td>" . $dsatz["Niederlagen"] . "</td>";
echo "<td>" . $dsatz["E_Gold"] . "</td>";
echo "<td>" . $dsatz["V_Gold"] . "</td>";
echo "<td>" . $dsatz["Staerke"] . "</td>";
echo "<td>" . $dsatz["Verteidigung"] . "</td>";
echo "<td>" . $dsatz["Gewandheit"] . "</td>";
echo "<td>" . $dsatz["Ausdauer"] . "</td>";
echo "<td>" . $dsatz["Geschick"] . "</td>";
echo "<td>" . $dsatz["Pruefung"] . "</td>";
echo "<td>" . $dsatz["B_Pruefung"] . "</td>";
echo "<td>" . $dsatz["V_Pruefung"] . "</td>";
echo "</tr>";
}
 
[phpf]number_format[/phpf]

Google oder die Suche hier im Forum hilft bei soetwas wunderbar... Da brauch man kein neues Thema für machen.

Die Benutzung ist doch in den Beispielen, erklärt, oder?

Einfach um die Variable die Funktion machen.

Also, wenn es vorher war:
PHP:
 echo 'html'.$int.'html';

ist es danach:

PHP:
echo 'html'.number_format($var, 0, ',', '.').'html';
 
Zuletzt bearbeitet:
Das funktioniert aber so nicht, ich hab das doch genau so geschrieben:

PHP:
echo "<td>" . number_format($dsatz["Beute"],0,".") . "</td>";

Das Beispiel von number_format funktioniert wunderbar, aber sobald es um Daten aus der Datenbank geht, funktioniert es nicht mehr (da hilft auch die Google Suche nix, die Beispiele dort sind immer nur auf ne Standard 08-15 Variable bezogen und die aus ner Variablen, die Daten aus der Datenbank beinhaltet).
 
Hi,

schau Dir die Definition der Funktion und die Beispiele bitte genau an und ergänze in Deinem Aufruf den fehlenden Parameter.

Wenn das nichts bringt, dann beherzige mal Deine eigene Signatur und erzähle uns, was "funktioniert nicht" genau heißt. Sprich: was genau steht in diesem Feld und was kommt dann heraus.

LG
 
Hi... wenn ich wüsste, welcher Parameter fehlt, müsst ich hier nicht fragen ;-)

Also in dem Feld steht 1000, raus kommen soll: 1.000

Und die Fehlermeldung lautet:

Warning: Wrong parameter count for number_format() in /var/www/web440/html/darkshadow/user/index.php on line 23
 
Hä? Alles

Stell dir doch einfach mal vor, ich könnt kein PHP, wills lernen und will einfach nur wissen, warum mein Code nicht funktioniert...
 
Hä? Alles

Stell dir doch einfach mal vor, ich könnt kein PHP, wills lernen und will einfach nur wissen, warum mein Code nicht funktioniert...

Dann stell Dir halt vor, dass meine Glaskugel mir Deinen Kenntnisstand nicht verrät -> sag das doch eher.

Auszug aus der deutschen Übersetzung (steht direkt unter der Definition):

Die Funktion akzeptiert entweder einen, zwei oder vier Parameter (nicht jedoch drei):

Wird nur ein Parameter übergeben, wird number ohne Nachkommastellen, aber mit einem Komma (",") zur Gruppierung der Tausenderstellen formatiert.

Wurden zwei Parameter übergeben, wird number als Zahl mit decimals Nachkommastellen mit einem Punkt (".") als Trennzeichen sowie einem Komma (",") zur Gruppierung der Tausenderstellen formatiert.

Wenn alle vier Parameter übergeben wurden, wird number als Zahl formatiert, die decimals Nachkommastellen hat, die mittels dec_point anstelle des Punktes (".") von der Zahl getrennt werden, und deren Tausenderstellen mittels thousands_sep anstelle des Kommas (",") gruppiert werden.

Der erste Satz verrät Dir, warum Dein Code nicht funktioniert, der letzte, welche Parameter Du übergeben musst, um das gewünschte Ergebnis zu erzielen.

LG
 
Kapier ich trotzdem nicht... wenn ich nur einen Wert übergebe, bekomm ich die gleiche Fehlermeldung...

PHP:
echo "<td>" . number_format($dsatz["Beute"]) . "</td>";

Und wie soll ich vier Parameter übergeben, wenn ich nicht weiß welche Soll ich mir welche ausdenken Punkte Gänsefüßchen? Leerzeichen Kommas Da gibts bei PHP sooooo viele Möglichkeiten.
 
Kapier ich trotzdem nicht... wenn ich nur einen Wert übergebe, bekomm ich die gleiche Fehlermeldung...

PHP:
echo "<td>" . number_format($dsatz["Beute"]) . "</td>";

Ich bekomme da keine Fehlermeldung. Vielleicht hast Du an anderer Stelle noch einen falschen Aufruf stehen? Ist aber auch egal, da diese (Standard-)Formatierung ja eh nicht das ist, was Du willst.

Und wie soll ich vier Parameter übergeben, wenn ich nicht weiß welche Soll ich mir welche ausdenken Punkte Gänsefüßchen? Leerzeichen Kommas

Die Bedeutung der Parameter ist auf der Handbuchseite doch lang und breit erklärt. Wieviele Dezimalstellen Du möchtest, welches Dezimal- und welches Tausendertrennzeichen, das musst Du selbst entscheiden. Genau dazu sind die Parameter doch da. Im Prinzip musst Du Dir die also ausdenken. Ich verstehe ehrlich gesagt Dein Problem dabei jetzt nicht.

LG
 
Zurück