kostenloser Webspace werbefrei: lima-city


Dezimalzahl in PHP auf 2 Kommastellen runden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pokerleben

    pokerleben hat kostenlosen Webspace.

    Hallo Leute, ich hab ein kleines Problem.

    Ich versuch grad so eine Art Bewertungssystem mittels PHP in meiner HP zu integrieren. Dazu kann man Bewertungen eingeben, die dann angezeigt werden. Soweit funzt alles, alle Bewertungen werden sauber ausgegeben und alles passt.
    Jetzt woll ich es erweitern und über allen Bewertungen eine Durschnittliche Bewertung anzeigen lassen. Dazu hab ich einen kleinen Counter eingebaut mittels
    $counter = 0;
    .
    .
    while(..)
    {
    .
    .
    $counter++;}

    (nur Beispielhaft)

    Hier das Problem:
    $wertezahl = $gesamt;
    if ($counter == 0)
    {	
       $counter = 1;
    }
    $anzahl = $counter;
    $schnitt = $wertezahl/$anzahl;


    Die Variable Gesamt wird übergeben, die zählt die Bewertungspunkte zusammen. Die funzt einwandfrei.
    Jetzt wollt ich über die Variable $schnitt meinen Schnitt ausrechnen, das geht auch.
    Kommt aber beispielsweise ein Schnitt von 2, 2 raus, so schreibts mir in meine Datenbank nur ein 2 ohne Kommastelle, hier der Code:
    $eintrag = @mysql_query(\"UPDATE kommentare.rooms SET schnitt = \'$schnitt\' WHERE rooms.id = 1 LIMIT 1\");
    		if (!eintrag){}
    		else
    		{
    			echo (\"Eintrag nicht erfolgreich\");
    		}

    Hab bei der Datenbank das Feld \"schnitt\" als dezimal eingestellt. Muss ich da evtl was anderes einstellen, damit es die Kommazahlen übernimmt?
    Und was kann ich in meinem Code ändern, damit die variable Schnitt immer 2 Nachkommastellen hat, egal ob 2 glatt raus kommt, oder 2,45678059? Es soll halt dann 2,00 oder 2,46 speichern.

    Habs schon mit meinen letzten C Kenntnissen (recht wenig) versucht und über %.2 aber das hat irgendwie nicht gefunzt.

    Wäre super, wenn sich jemand erbarmen würde und mir da helfen kann.

    Gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    Runden: http://de3.php.net/manual/de/function.round.php

    Für das Dezimalproblem solltest du uns mal die Tabelle \"zeigen\"
    Heißt: Die Typen, größen, etc. der einzlenen Felder.
  4. Autor dieses Themas

    pokerleben

    pokerleben hat kostenlosen Webspace.

    Hab mal 2 Screenshots gemacht:

    hier die Links:

    [url=href\"http://www.pokerleben.de/images/phpma.JPG]Bild 1[/url]
    [url=href\"http://www.pokerleben.de/images/phpma2.JPG]Bild 2[/url]

    Hoff das hilft, wenn nicht, sagt bescheid, ich kann noch mehr \"Fotos\" machen.. :-)


    PS: Hab schnitt Standard auf 8 gesetzt, geht in der reg. Bewertung nur von 0 bis 6, ich prüfe, ob schnitt =8 und wenn ja, geb ich keinen schnitt aus, weil dann ja noch nix bewertet wurde...

    Beitrag geändert: 7.7.2008 12:52:19 von pokerleben
  5. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    wenn du decimal(10, 0) hast, heißt das dann nicht, dass 0 Nachkommastellen zugelassen sind?
    Sry, ich hab damit noch nie gearbeitet^^

    Sonst probiers mal mit nem einfachen Varchar, das sollte klappen.
  6. Ja, es heißt genau das, dass keine Nachkommastellen zugelassen sind.
    Die erste zahl von Decimal zeigt die Vorkommastellen an, und die zweite die Nachkommastellen.
  7. Gibts nicht eh \"float\"?

    Wenn ja würd ich am besten das nehmen!
  8. Naja, mit float ist das so eine Sache. Die Umwandlung von float zurück in eine normale Dezimalzahl kann Probleme machen, da float nicht im Dezimalsystem arbeitet, so kann float bei 2 z.B. 1.99998799 oder ähnliches ausgeben. Somit musst du zweimal runden, einmal bei der Eingabe, einmal bei der Ausgabe.

    Wenn du das mit decimal machen willst, so gibt die 1. Zahl die Stellen vorm komma, und die 2.Zahl die Kommastellen an.
    Wenn du also 1,2 speicher willst, so muss decimal (10,1) sein.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!