Gewinnberechnung

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

  • Hallo tugsi,


    ich nochmal. hatte ja gestern abend schon geschrieben, dass es funktioniert (siehe oben).


    Nun habe ich mal ausprobiert, wie es aussieht, wenn ich die ersten 10 Plätze prozentual am Gewinn beteilige. Bild von der gewinne.inc.php anbei.


    Irgendwie scheint er bei bestimmten Prozentsätzen selbige falsch zu summieren. bekomme dann nämlich eine Fehlermeldung, dass die Summe der Prozentzahlen unter 100% liegt (siehe Anhang).


    Wenn ich überall 10% eingebe, funktioniert es aber seltsamerweise...


    Habe ich was übersehen?

    Dateien

    • 10plaetze.jpg

      (22,15 kB, 176 Mal heruntergeladen, zuletzt: )
    • 92prozent.jpg

      (9,79 kB, 128 Mal heruntergeladen, zuletzt: )

    Einmal editiert, zuletzt von FiedlWdd ()

  • Netter Fehler ;)
    Hmm da schau ich mal, was da schief läuft.
    Ich denke die fehlenden 8% sind die Vermittlungsprovison für den Admin :D
    EDIT:
    So konnte den Fehler reproduzieren, aber erklären kann ich den nicht ?(
    Die Überprüfung kommt mit den Zeilen hier, die ich zum testen mal mit einer Ausgabe ergänzt habe:

    PHP
    1. $prozent = 0; for ($y = 1; $y <= $gewinn['anzahl']; $y++) {$prozent += $gewinn['pplatz'.$y];echo 'Y ist '.$y.' und Prozent für den Platz ist '.$gewinn['pplatz'.$y].' und Summe '.$prozent ?><br><?;}


    Dabei kommt dann dieses raus:
    fehler_prozent.jpg


    Er berechnet richtig, aber Platz 4 wird als 0 genommen....
    Gehst Du aber jetzt hin und gibt in der gewinne.inc.php anstatt 08 als Wert nur 8 ein:

    PHP
    1. $gewinn['pplatz3'] = 15; # Prozentsatz der Gewinnaufteilung für Platz 3
    2. $gewinn['pplatz4'] = 8; # Prozentsatz der Gewinnaufteilung für Platz 4
    3. $gewinn['pplatz5'] = 07; # Prozentsatz der Gewinnaufteilung für Platz 5


    Dann klappt es einwandfrei!


    Frag mich aber bitte nicht, warum er es macht, das it mir ein absolutes Rätsel !!!

  • tugsi


    mit deiner neu hochgeladenen gewinne.php zieht er mir den Admin nochmal zusätzlich ab, obwohl ich die Option "aktiv, tippt aber nicht" gewählt habe...


    Ich vermute eher, dass da vielleicht irgendwo ein Rundungsfehler ist. Solange ich nur 5er oder 10er Prozente angebe, funzt es. Bei "krummen" Prozenten wie 6 oder 7 summiert er falsch!?

  • tugsi


    mit deiner neu hochgeladenen gewinne.php zieht er mir den Admin nochmal zusätzlich ab, obwohl ich die Option "aktiv, tippt aber nicht" gewählt habe...


    Ich vermute eher, dass da vielleicht irgendwo ein Rundungsfehler ist. Solange ich nur 5er oder 10er Prozente angebe, funzt es. Bei "krummen" Prozenten wie 6 oder 7 summiert er falsch!?



    Ohje, den Fehler mit dem Admin hatte ich gestern auch, nicht das ich auversehen ne falsche Datei genommen hab ;)
    Bin nämlich gerad auf der Arbeit und zwischen den Welten :D
    Welche Einstellung hast Du denn mit der Option $gewinn['tipper'] ?


    EDIT: War ne falsche gewinne.php mit dem Admin-Bug noch drin, sorry. Wurde gefixt


    Rundungsfehler ist das nicht, siehe auch meinen Beitrag über Deinen.
    Gerundet wird erst bei den Beträgen und bis dahin kommst ja gar nicht.

  • Ich habe die Option


    $gewinn['tipper'] = 1;


    weil 2 Tipper aus letzter Saison nicht mehr mitmachen und er mir die bei der Variante "0" dazuzählt.


    Hier jetzt nochmal den Fehler im Bild. Bei der Version 1 mit den 5%-Schritten funktioniert es. Bei der Version 2 mit einemal 9% statt 10% und einmal 6% statt 5% zeigt er mir dann "Summe der Prozentzahlen 91%" an. Grübel grübel...

  • Zitat

    weil 2 Tipper aus letzter Saison nicht mehr mitmachen und er mir die bei der Variante "0" dazuzählt.


    Dann sind die beiden Tipper noch als aktiv im System gemeldet.
    Die Option 0 schaut nach allen aktiven Tippern!
    Solltest Du noch "Leichen" haben, dann könntest die auch inaktiv setzen.
    Aber die Option 1 nimmt die Tabelle saison_ranking und dort landen nur Leute, die tippen ;)


    So ich konnte den Fehler eingrenzen.
    Die Berechnung hat ein Problem, wenn die Variable für die Plätze den Wert "08" oder "09" hat.
    Bei 01-07 wiederum nicht.
    Aber Ich verstehe es nicht, denn im Grunde ist es eine einfache Aufsummierung, wie man sieht.

    Code
    1. $prozent += $gewinn['pplatz'.$y];


    Dies heisst: Variable Prozent wird immer aufaddiert mit dem Wert der Variable $gewinn['pplatz'.$y], wobei Y in der Schleife immer um einen Wert erhöht wird, bis Deine vorgegebene Gesmtzahl erreicht ist.
    Warum er 01-07 einwandfrei aufaddieren kann und bei 08 und 09 nicht kann ich nicht nachvollziehen.

  • tugsi:


    Ja, ist sehr seltsam, aber auch nicht weiter tragisch. Das beschriebene Phänomen kann ich durch zwischenzeitliches Rumprobieren bestätigen.


    Die Option 1 ist für mich die passende Variante, weil ich die 2 nicht tippenden Tipper nicht auf inaktiv setzen will. Sind keine Tippleichen, tippen halt nur diese Saison nicht mit.


    Dank und Gruß

  • Uff, Fehler gefunden, aber neues Problem entdeckt!


    Der Fehler war ein falsches Dezimaltrennzeichen ( , statt . - weil es so auch im Beispieltext stand).


    Neues Problem: Ich habe einen recht krummen Einsatzbetrag. Ein Tipper ist später eingestiegen und hat daher weniger bezahlt.


    Der durchschnittliche Einsatz pro Tipper beträgt so 19.61538 €. Bei der Rückrechnung der Festsumme gibt es eine Differenz von 0.00006 Euro, die leider zu einem Fehler führt.


    Kann man eine Rundung einstellen?


    Gesendet mit meinem Samsung Galaxy S und tapatalk

  • So, jetzt habe ich es mal mit Prozenten hingebogen. Sieht zwar blöd aus (wegen der vielen Nachkommastellen), aber es geht.


    Fast: Spieltagessieger werden keine angezeigt und kalkuliert. Die sql-Tabelle ist auch nach wie vor leer. Es steht aber da, dass jeder Sieg 5 € bringt.


    Ich benutze übrigens inzwischen die von buffuchs modifizierte gewinne.php mit dem Zusatzfeld in der users-Tabelle.


    Gesendet mit meinem Samsung Galaxy S und tapatalk

    -------------
    Trommler
    Hamburg

    Einmal editiert, zuletzt von Trommler ()

  • So sieht's in der Testumgebung aus. Die schrägen Beträge entstehen durch einen nachträglich eingestiegenen Tipper. Kann man das runden? Notfalls lasse ich es so.


    Vor allem aber werden keine Spieltagessieger kalkuliert. Die sql-Tabelle ist auch leer.

  • da die tab leer ist geht es auch nicht mit den spieltagssiegern.
    wir hatte auf seite 5 oder 6 auch so ein fall wo nichts eingetragen wird. ich würde dich bitte mal einfach die gewinn.php testweise auszutauschen und die von tugsi aus dem aller ersten beitrag zu nehmen.

  • Hallo,


    Danke, das habe ich probiert - leider ohne Erfolg.


    Die Beträge sind anders (weil jetzt alle Tipper gezählt werden), aber Spieltagessieger werden nicht angezeigt.


    Gesendet mit meinem Samsung Galaxy S und tapatalk

    -------------
    Trommler
    Hamburg

    Einmal editiert, zuletzt von Trommler ()

  • Aua. Ich Vollpfosten!


    Jetzt habe ich den Fehler gefunden und er lag natürlich bei mir.


    Die neue Tabelle war nicht in der database.inc eingetragen! Ich hatte das zwar geändert und auch übertragen, aber unsere Firmenfirewall blockt das oft und ich hätte das noch einmal prüfen müssen.


    Es ist und bleibt so: Meistens sitzt der Fehler vor dem Gerät.


    Sorry für die Verwirrung und Danke für den Support und die tolle Arbeit!!!


    :thumbup:


    Gesendet mit meinem Samsung Galaxy S und tapatalk

  • Kann man hier auch die Gewinnsumme des Spieltagsieges Prozentual ausgeben?


    Hintergrund:
    Jeder User zahlt 17EURO für die Hinrunde. Dieses teilt sich auf die Spieltagsiege und den Gesamtsieg auf.
    Somit bleibt 8,50 EURO für die Spieltagsiege, d.h. 0,50 CENT pro Spieltag. Jetzt hängt die Gesamtsumme des Spieltags von der Anzahl der User aus. Bei mir bekommt der, der die meisten Punkte am Spieltag erspielt hat, den Spieltagpott. Ich möchte aber keine Grenze von z.B. 5 EURO setzen, sondern alles ausschütten.

  • Hallo tugsi,


    ich nutze bereits deinen Zahl-Mod und bin auch von diesem begeistert. Letzte Saison konnte ich den leider nicht nicht nutzen, da nicht alle mitgezockt haben und das war ja nicht abbildbar.


    Diese Saison möchte ich ihn aber unbedingt nutzen, allerdings rechnet er bei mir falsch:


    Der Betrag für die 5 Ränge von 107 € ist zwar korrekt, die Summe der fünf Ränge ergibt aber 122 €.


    Sind das die 15 €, die für den höchsten Spieltagessieg gedacht sind?

    Dateien

    • Gewinn-Mod.png

      (12,1 kB, 63 Mal heruntergeladen, zuletzt: )

    -------------
    Trommler
    Hamburg

  • Nein da stimmt was nicht.
    Die 15€ für Spieltagssieg sind in der anderen Summe mit drin (34 Spieltag á 7€ plus 15€)


    Hast Du in der config prozentuale Verteilung eingestellt?


    Ich selber nutze diesen Mod momentan nicht, daher kann ich gerade nicht schauen.


    Würde aber im Zweifelsfall umstellen auf feste Werte und die 107€ einfach auf die 5 Ränge verteilen, dann kannst auch glatte Summen machen.
    Dies aber nur, wenn alle Stricke reissen, denn das andere sollte auch gehen.


    Ich muss mal schauen, ob ich da noch schaffe mal draufzuschauen, aber wird eng und natürlich hab ich passend zum Saisonstart zwei Wochen Urlaub ausserhalb der EU, also auch nicht gerade Internet :( (schlecht geplant ;) )

  • Hier eine kleine Änderung, um die prozentuale Berechnung dynamisch zu erzeugen.
    Was bringt das? Ich hatte das Problem, dass ich als Anzahl für Gewinner zu beginn 25 Eingetragen habe. Es waren aber nur 2 Leute angemeldet. Also stimmte die Berechnung nicht, denn wenn es zwei bleiben würden, müssten die Prozente der übrigen 23 Plätze auf die ersten zwei aufgeteilt werden. Also habe ich dies getan. Die Prozente werden immer gleich berechnet. Hier ein paar Beispiele wie die Werte berechnet werden:


    5 Gewinner

    PHP
    1. $gewinn['pplatz1'] = 33;$gewinn['pplatz2'] = 27;$gewinn['pplatz3'] = 20;$gewinn['pplatz4'] = 13;$gewinn['pplatz5'] = 7;


    12 Gewinner


    PHP
    1. $gewinn['pplatz1'] = 15;$gewinn['pplatz2'] = 14;$gewinn['pplatz3'] = 13;$gewinn['pplatz4'] = 12;$gewinn['pplatz5'] = 10;$gewinn['pplatz6'] = 9;$gewinn['pplatz7'] = 8;$gewinn['pplatz8'] = 6;$gewinn['pplatz9'] = 5;$gewinn['pplatz10'] = 4;$gewinn['pplatz11'] = 3;$gewinn['pplatz12'] = 1;


    Was muss dafür getan werden?
    Ändere in der gewinne.inc.php die Zeile 62:

    PHP
    1. $gewinn['anzahl'] = 7; # Anzahl der Gewinnränge (z.B. 6 = Platz 1-6 gewinnen)


    in

    PHP
    1. $sql = mysql_query("SELECT user FROM ".$tbl['user']." WHERE aktiv=1"); $gewinn['anzahl'] = mysql_num_rows($sql);$gewinn['anzahl_max'] = 25; # Anzahl der Gewinnränge (z.B. 6 = Platz 1-6 gewinnen)if($gewinn['anzahl'] > $gewinn['anzahl_max']){ $gewinn['anzahl'] = $gewinn['anzahl_max'];}


    Und Zeile 93 bis 102

    PHP
    1. $gewinn['pplatz1'] = 30; # Prozentsatz der Gewinnaufteilung für Platz 1$gewinn['pplatz2'] = 22; # Prozentsatz der Gewinnaufteilung für Platz 2$gewinn['pplatz3'] = 16; # Prozentsatz der Gewinnaufteilung für Platz 3$gewinn['pplatz4'] = 10; # Prozentsatz der Gewinnaufteilung für Platz 4$gewinn['pplatz5'] = 10; # Prozentsatz der Gewinnaufteilung für Platz 5$gewinn['pplatz6'] = 10; # Prozentsatz der Gewinnaufteilung für Platz 6$gewinn['pplatz7'] = 2; # Prozentsatz der Gewinnaufteilung für Platz 7$gewinn['pplatz8'] = 3; # Prozentsatz der Gewinnaufteilung für Platz 8$gewinn['pplatz9'] = 2; # Prozentsatz der Gewinnaufteilung für Platz 9$gewinn['pplatz10'] = 2; # Prozentsatz der Gewinnaufteilung für Platz 10


    in

    PHP
    1. for($i=1; $i <= $gewinn['anzahl']; $i++){
    2. $summe = 0;
    3. for($s=1; $s <= $gewinn['anzahl']; $s++){
    4. $summe = $summe + $s;
    5. }
    6. $gewinn['pplatz'.$i] = round(100*(($gewinn['anzahl']+1)-$i)/$summe, 0);
    7. }


    Wahrscheinlich brauchen es die wenigsten, dennoch wollte ich es euch nicht vorenthalten.

  • Hatte das gleiche Problem wie Trommler.
    Auch bei mir stimmte die Summe der prozentualen Platzierungsgewinne nicht mit der oben genannten richtigen Summe, die zur Ausschüttung auf die Plätze zur Verfügung steht, überein.


    Die Summe für die Gewinnverteilung im Detail ("Auf die Platzierungen 1 - x entfallen am Ende der Saison insgesamt xxx Euro") wird in der gewinne.php in Zeile 189 ermittelt:

    Code
    1. <li>Auf die Platzierungen 1 - <?=$gewinn['anzahl']?> entfallen am Ende der Saison insgesamt <strong><?=$ergeb-($spieltag+$hspieltag)?> Euro</strong></li><br>


    Hier wird die Summe, die in der gewinne.inc.php für den höchsten Spieltagssieg angegeben wurde, mit abgezogen.
    Weiter unten im Code, bei der Berechnung der prozentualen Anteile je Platz, ist dies jedoch nicht der Fall.


    Lösung:
    gewinne.php Zeile 231:

    Code
    1. if ($gewinn['berechnung'] == 0) $platzgewinn = ($ergeb-$spieltag)*$gewinn['pplatz'.$y]/100;


    ändern in:

    Code
    1. if ($gewinn['berechnung'] == 0) $platzgewinn = ($ergeb-$spieltag-$hspieltag)*$gewinn['pplatz'.$y]/100;


    Zeilen 314 und 448:

    Code
    1. if ($gewinn['berechnung'] == 0) $gewinn_platz = ((($ergeb-$spieltag)*$gewinngesamt/100)/$anzahl_gewinne);


    beide ändern in:

    Code
    1. if ($gewinn['berechnung'] == 0) $gewinn_platz = ((($ergeb-$spieltag-$hspieltag)*$gewinngesamt/100)/$anzahl_gewinne);


    So sollte es dann stimmen...


    Grüße aus Leipzig
    P@ulchen

    Wenn ich Du wäre, wäre ich lieber ich...

    Einmal editiert, zuletzt von P@ulchen ()