php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.01.2011, 15:35  
Neuer Benutzer
 
Registriert seit: 15.01.2011
Beiträge: 17
PHP-Kenntnisse:
Anfänger
thombhitz befindet sich auf einem aufstrebenden Ast
thombhitz eine Nachricht über MSN schicken
Standard Rangliste: korrekte Berechnung?

Hallo,

Ich bin dabei für ein mmorpg eine Ligatabelle zu überarbeiten.

Die Teams werden nach Punktestand in absteigender ( sowie nach Anzahl Spielen in aufsteigender) Reihenfolge sortiert.
Dieser Code besteht und funktioniert so auch.

Nun besteht folgendes Problem:
Der Rang wird auf jeder neuen Zeile um 1 erhöht. 1.Rang, 2.Rang, 3.Rang usw. Leider ist es allerdings so, dass oft mehrere Teams den gleichen Punktestand aufweisen, und somit logischerweise auch den selben Rang belegen. Belegen zwei Teams den ersten Rang, so hat das Team mit dem nächstkleineren Punktestand logischerweise den dritten Rang inne. Anhand des folgenden Beispiels sollte deutlich werden, was gemeint ist.

Beispiel:
1.Rang -- Clan8 -- 6 Punkte
1.Rang -- Clan6 -- 6 Punkte
3.Rang -- Clan1 -- 4 Punkte
4.Rang -- Clan3 -- 3 Punkte
5.Rang -- Clan5 -- 2 Punkte
5.Rang -- Clan4 -- 2 Punkte
5.Rang -- Clan2 -- 2 Punkte
8.Rang -- Clan7 -- 1 Punkte

Mit der Variablen $i wird der Rang berechnet und ausgegeben. Das war ja auch gut so, bisher. Am Ende jedes Durchgangs der while Schleife wird die $i folgendermassen erhöht: $i++.

Meine vage Idee wie im neuen System die Ränge berechnet werden könnten, ist folgende:
Wenn mehr als ein Clan einen bestimmten Punktestand hat wird nach der Schleife $i nicht erhöht.
Erst beim Clan mit dem nächsttieferen Punktestand wird $i um die Anzahl vorhergehender Clans/Ränge mit dem selben Punktestand erhöht.

Beispiel:
1.Rang -- Clan8 -- 6 Punkte
------ (der nächste Clan hat denselben Punktestand, also wird $i nicht erhöht)
1.Rang -- Clan6 -- 6 Punkte (2 Clans sind auf dem 1. Rang)
------ $i wird um 2 erhöht (1 + 2 = 3, folglich ist der nächste Rang der dritte Rang.)
3.Rang -- Clan1 -- 4 Punkte
------ $i++
4.Rang -- Clan3 -- 3 Punkte
------ $i++
5.Rang -- Clan5 -- 2 Punkte
------ (der nächste Clan hat denselben Punktestand, also wird $i nicht erhöht)
5.Rang -- Clan4 -- 2 Punkte
-----(der nächste Clan hat denselben Punktestand, also wird $i nicht erhöht)
5.Rang -- Clan2 -- 2 Punkte (3 Clans sind auf dem 5. Rang)
------ $i wird um 3 erhöht (5 + 3 = 8, folglich ist der nächste Rang der achte Rang.)
8.Rang -- Clan7 -- 1 Punkte

Seht ihr eine Möglichkeit, wie diese Schleife hier angepasst werden könnte, um das neue Rangsystem korrekt zu berechnen?

Damit ihr euch ein Bild davon machen könnt, wie die Berechnung aktuell durchgeführt wird:

PHP-Code:
          $i = 1;
          while ($row = mysql_fetch_assoc($result)) {
            $ClanId = $row['clan_id'];
            $division = $row['division_id'];

            NewerthConnect();
                      
            //show the divison (EU, USA, HvH)
            $query = "SELECT * FROM sl_division WHERE division_id = '$division'";
            $result2 = mysql_query($query) OR print(mysql_error()."<br />");
            $row2 = mysql_fetch_assoc($result2);
            $division = $row2['division_name'];

            $query = "SELECT * FROM sl_match WHERE (winner_id = '$ClanId' AND date_season = '$CurrentSeason')";
            $result2 = mysql_query($query) OR print(mysql_error()."<br />");
            $Wins = mysql_numrows($result2);
            $query = "SELECT * FROM sl_match WHERE (winner_id != '$ClanId' AND date_season = '$CurrentSeason') AND (clan_id1 = '$ClanId' OR clan_id2 = '$ClanId') AND (winner_id > 0)";
            $result2 = mysql_query($query) OR print(mysql_error()."<br />");
            $Losses = mysql_numrows($result2);
            $query = "SELECT * FROM sl_match WHERE (winner_id = '-1' AND date_season = '$CurrentSeason') AND (clan_id1 = '$ClanId' OR clan_id2 = '$ClanId')";
            $result2 = mysql_query($query) OR print(mysql_error()."<br />");
            $Ties = mysql_numrows($result2);

            ?>
            <tr>
              <td>
                #<? echo $i?>
              </td>
              <td>
                <? echo ClanFormat($ClanId); ?>
              </td>
              <td>
                <? echo $Wins?>
              </td>
              <td>
                <? echo $Ties?>
              </td>
              <td>
                <? echo $Losses?>
              </td>
              <td>
                <? if ($row['clan_matches']) { echo $row['clan_points']; } else { echo "N/A"; } ?>
              </td>
              <td>
                <? echo $division?>
              </td>
            </tr>
            <?
            $i
++;
          }
          
?>
Bin gespannt auf eure Vorschläge!
thombhitz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.01.2011, 15:55  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.164
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Ich habe deinen Code nicht vollständig gelesen. Aber hier sehr straight forward:

PHP-Code:
$clans = array(
    array(
        
'name' => 'Clan 1',
        
'punkte' => 12,
        
'member' => 10
    
),
    
    array(
        
'name' => 'Clan 4',
        
'punkte' => 12,
        
'member' => 10
    
),
    
    array(
        
'name' => 'Clan 2',
        
'punkte' => 10,
        
'member' => 10
    
),
    
    array(
        
'name' => 'Clan 3',
        
'punkte' => 10,
        
'member' => 12
    
),
    
    array(
        
'name' => 'Clan 5',
        
'punkte' => 8,
        
'member' => 5
    
),
);


$pos 1;
$displayPos 1;
$last null;

echo 
"<ul>";
foreach ( 
$clans as $clan ) {
    echo 
"<li>";
    
    if ( 
null !== $last && $last['punkte'] == $clan['punkte'] && $last['member'] == $clan['member'] ) {
        
$displayPos $lastDisplayPos;
    } else {
        
$displayPos $pos;
    }
    
    echo 
$displayPos ' :: ' $clan['name'];
    
    
    
$last $clan;
    
$lastDisplayPos $displayPos;
    
$pos++;
    echo 
"</li>";
}
echo 
"<ul>"
Das nur so als Anregung!
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Berechnung von JS nach PHP Alexy PHP Tipps 2010 7 08.10.2010 14:20
Berechnung von Block-based-Checksums / File-Patching G.Schuster PHP-Fortgeschrittene 8 29.01.2010 19:57
Rangliste erstellen mit vorheriger Summenbildung aaaalex Datenbanken 12 28.06.2009 11:50
Ergebnis einer PHP Berechnung in selben Datei anzeigen Mecke PHP Tipps 2009 10 30.01.2009 16:01
[Erledigt] [MySql] Order by Berechnung PatrickK PHP Tipps 2008 4 22.10.2008 18:43
Berechnung über mehrere Abfragen aus mysql Slappi PHP Tipps 2008 2 18.12.2007 14:22
Probleme bei berechnung in einer abfrage Fraylman PHP Tipps 2007 18 14.03.2007 16:36
[Erledigt] Berechnung nicht ganz korrekt PHP Tipps 2005-2 6 20.06.2005 16:42
berechnung im select für eine andere berechnung benutzen Datenbanken 4 13.05.2005 11:29
Komplizierte Berechnung - HILFE! djma PHP Tipps 2005 8 25.04.2005 21:38
Rangliste etc... PHP Tipps 2004-2 3 10.12.2004 10:12
Probleme Mit der Rangliste die ich gebuat habe PHP-Fortgeschrittene 1 02.11.2004 08:42
Berechnung mit 2 Variablen PHP Tipps 2004 3 06.09.2004 22:00
HH:MM --&amp;gt; Javascript berechnung HTML, Usability und Barrierefreiheit 1 23.07.2004 16:27
Paradox, Fehler bei Berechnung in MySQL MrNiceGuy Datenbanken 0 23.06.2004 16:09

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php rangliste berechnen, berechnung rangliste, rangliste berechnung, php rangliste, rangliste mehrere, br rangfolge berechnen, clan ränge nach punkten, exel rangbeispiele, punkten und rangfolge errechnen, wie wird weltrangliste berechnet, php while rangplatz nach punkten ermitteln, ranglisteberechnung, php ranking berechnen, php userrang berechnen, ranking berechnen php, team rangliste berechnung, rangliste berechnen code, rangliste berechnen, php code punkte berechnen, berechnung der ligatabelle

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum