Fehler bei Berechnung

Sven4972

Mitglied
Hallo,

ich wollte mir mit folgendem Code, den Gewinn der ersten 5 berechnen lassen.

PHP:
          <?php
            include ('config.php');
            $result = mysql_query("SELECT SUM(startgeld) AS startgeld FROM teilnehmer");
            $row=mysql_fetch_object($result);
            $summe = $row->startgeld;
            $prozent = 35
          ?>
          <table id="anmeldetabelle">
	        <thead>
	        	<tr>
              <th colspan="3"><h3>Preisverteilung</h3></th>
            </tr>
          </thead>
          <tbody>
          	<tr>
          		<td class="links">Platz</td>
              <td class="mitte">Nickname</td>
              <td class="rechts">Gewinn</td>
            </tr>
          <?php
            $abfrage = "SELECT nickname, SUM(ergebnis) AS gesamt FROM ergebnisse 
                        GROUP BY nickname ORDER BY gesamt DESC LIMIT 5";
            $ergebnis = mysql_query($abfrage);
            $platz = 0;
              while($row = mysql_fetch_object($ergebnis))
                {
                	echo "<tr><td class='links'>";
                	echo $platz = $platz + 1;
                	echo "</td><td class='mitte'>";
                	echo $row ->nickname;
                	echo "</td><td class='rechts'>";
                	echo $summe = $summe / 100 * ($prozent - 5);
                	echo "</td></tr>";
                }          
          ?>            
          </tbody>
        </table>

Es soll so sein, das der

1. 30% das wären 12
2. 25% das wären 10
3. 20% das wären 8
4. 15% das wären 6
5. 10% das wären 4

bekommt.

Aber wenn ich das Script durchlaufen lasse, kommt folgendes raus

1. 12
2. 3.6
3. 1.08
4. 0.324
5. 0.0972

Es scheint ein Fehler mit der Variable $summe zu sein, da er immer vom letzten Wert auszugehen scheint.

Wie bekomme ich es hin, das der Wert in jeder Schleife von der Ausgangsvariable berechnet wird?


LG Sven
 
PHP:
                    echo $summe = $summe / 100 * ($prozent - 5);
Hier überschreibst du deine Summe.
Es reicht:
PHP:
                    echo $summe / 100 * ($prozent - 5);

Kann das bitte jamnd ins PHP-Forum verschieben?
 
Ist logisch.
$summe nimmst du aus dem ersten Query und $prozent setzt du fix auf 35. Die Felder aus dem 2ten Query brauchst du für die Berechnung nicht.
Ich glaube, du willst $row->gesamt nocht irgendwie in deine Rechnung schrieben....
 
Hallo,

den 1. Query benötige ich um das eingezahlte Startgeld zu ermitteln.
Den 2. Query um zu ermitteln wer 1. bis 5. ist, daher das gesamt.

Daher weiß ich nicht warum ich da jetzt $row->gesamt mit einbeziehen sollte,
da ja das nur die Punkte des 1. bis 5. sind, und danach sortiert wird.

Berechnet soll ja vom eingezahlten Startgeld aus.


LG Sven
 
$sume ist die Summe aus dem ersten Query und sollte ja immer gleich bleiben. oder?
$prozent ist bei dir der Wert 35.

Bei deinem ersten Versuch rechnest du die $summe immer neu aus der $summe und $prozent.
Bei meiner Variante berchnest du das Ausgabe Feld immer mit derselben $summe und demselben $prozent. Darum kommt immer das gleiche dabei heraus.

Wüsste ich was sich hinter deinen Feldern in der Datenbanjk verstckt und wie du deine Rechnung machen willst, könnte ich dir ggf helfen. Solange ich aber nur Aussagen in der Art "ich habe a, b und c. Das Resulat soll 12 sein" habe, kann ich dir wirklich nicht helfen wie deine Rechnung aussehen soll.
 
Die Frage ist aber, was du genau berechnen möchtest? Wenn du pauschal immer von der Summe 35% berechnest, hat nun mal am Ende jeder den gleichen "Preis" => Summe * 35%. Meiner Meinung nach handelt es sich hier um keinen Programmfehler sondern einen Fehler in der Logik.

Grüße BN
 
Hallo,

im ersten Beitrag habe ich das doch aufgeschlüsselt.

1. 30%
2. 25%
3. 20%
4. 15%
5. 10%

Das sind insgesamt 100%.

In der Tabelle teilnehmer, aus dem 1. Query sind die Teilnehmer und das eingezahlte Startgeld gespeichert.
Im Moment sind es 8 Teilnehmer mit je 5 Euro Startgeld, gesamt also 40 Euro.

In der Tabelle, aus dem 2. Query sind die Teilnehmer und ihre erziehlten Punkte gespeichert.
Daher hole ich mir also den 1. bis 5. Platz, um das Startgeld als Gewinn, auf diese 5 aufzuteilen.

Die $prozent = 35; habe ich genommen, um eben immer genau 5% abzuziehen.

Ich hoffe nun ist es ausführlich genug erklärt.


LG Sven
 
Dann müsstest du von $prozent immer 5% mehr abziehen, denke ich.
Code:
echo $summe /( 100 * ($prozent - (5 * $platz)));
 
Dann solltest du nicht $summe überschreiben sondern $prozent.
Hab mal auf die Schnelle ein Test geschrieben
PHP:
<?php
$summe = 40;
$prozent = 30;
for($i=0; $i<5; $i++){
    echo $prozent." | ";
    echo $summe / 100 * $prozent;
    echo "<br />";  
    $prozent = ($prozent - 5);
}
?>

Das Resultat:
Code:
30 | 12
25 | 10
20 | 8
15 | 6
10 | 4
 

Neue Beiträge

Zurück