Toon posts:

[PHP] Ranglijst maken

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig met het maken van een voetbalmanager maar ik zit nu te twijfelen hoe ik het bijhouden van de ranglijst ga maken. Ik dacht er eerst aan om na het bijwerken van de per team gescoorde punten een script uit te laten voeren dat dmv van een auto_increment de positie in een nieuwe tabel zet, dus:
PHP:
1
<?$query="SELECT punten FROM users ORDER_BY punten DESC";//dan in deze loop nog een loop:$query="INSERT INTO ranglijst (positie,punten,teamnaam) VALUES ("$positie","$punten","$teamnaam")";//en $positie is de auto_increment?>

En dan als ik de positie in de ranglijst van een user wil laten zien dan laat ik hem gewoon positie WHERE teamnaam="$teamnaam" selecten. Dit zal dus allemaal prima werken, maar is er ook een eenvoudigere manier om deze ranglijsten te schikken?

Verwijderd

De positie op de ranglijst is een gegenereerd gegeven, dus in een volledig genormaliseerde db-structuur zal je die niet opnemen. Als je echter verwacht dat het aantal mutaties van scores laag is, maar het aantal keer dat de postie van een team op de ranglijst opgevraagd wordt hoog is, is je huidige oplossing een goede.

Enjoy :)

Verwijderd

Topicstarter
Dat dacht ik ook al, kheb er net nog FF wat verder over gedacht en kwam ook tot de conclusie dat ondanks dat de query's en scripts om dit bij te werken wat groter zijn het toch niet zo veel tijd kost. En ik wou FF zkr weten of ik niet heel erg ingewikkeld aan het doen was en of het niet simpeler kon.

Verwijderd

Het enige complexe is dat je heel goed moet controleren dat je op alle plaatsen waar je een score invoegt ook de stand opnieuw genereerd.

Overigens kan je het wat efficienter oplossen met een [url="http://www.mysql.com/doc/I/N/INSERT_SELECT.html"]INSERT INTO .... SELECT ... [/url]

Succes :)

Verwijderd

Topicstarter
Thnx voor je link, maar voordat ik die zag had ik al wat anders gemaakt. Maar die wordt maar 1 keer uitgevoerd terwijl dit over 2 velden uit de tabel vm_user moet gebeuren:
PHP:
1
<?include "function.mysql.php";$mysql = New mysql('localhost','webscrip','***','***',0);$mysql->query("SELECT * FROM vm_user WHERE gebruikersnaam!=''");if ($mysql->num_rows() > 0) {    while ($mysql->movenext()) {        $gebruikersnaam=$mysql->getfield("gebruikersnaam");        $teamnaam=$mysql->getfield("teamnaam");        $budget=$mysql->getfield("budget");        $id1=$mysql->getfield("dm");        $id2=$mysql->getfield("v1");        $id3=$mysql->getfield("v2");        $id4=$mysql->getfield("v3");        $id5=$mysql->getfield("v4");        $id6=$mysql->getfield("m1");        $id7=$mysql->getfield("m2");        $id8=$mysql->getfield("m3");        $id9=$mysql->getfield("a1");        $id10=$mysql->getfield("a2");        $id11=$mysql->getfield("a3");        $mysql->query("SELECT * FROM vm_spelers WHERE id='$id1'");        if ($mysql->num_rows() > 0) {        while ($mysql->movenext()) {             $waarde1=$mysql->getfield("waarde");            $waardetot=$waardetot+$waarde1;        } }        //dit voor ieder nummer, dus tot en met 11, om de totaalwaarde van het team te berekenen                    $totaal=$waardetot+$budget;        $mysql->query("INSERT INTO vm_tussenstap (gebruikersnaam,teamnaam,totaal) values ('$gebruikersnaam','$teamnaam','$totaal')");        }}?>

Ik ben wat dit betreft verder niet dom, maar dit vat ik echt niet, want beide records uit de tabel vm_user voldoen toch aan de eerste query dus zou dit stukje toch 2 keer herhaald moeten worden? Wrom stopt ie dan maar 1 record in de tabel vm_tussenstap Dit is overigens wel de record die als eerste in de tabel vm_user staat dus hij voert hem echt maar 1 keer uit.

Verwijderd

Topicstarter
Ik edit mn tekst niet meer in een post waar ook PHP in staat, dan zet ie nml alle PHP code op 1 regel :(
Kon ik het weer allemaal onder elkaar zetten.
Maar als ik alleen de 1e query uitvoer en hem hetvolgende laat zeggen:
PHP:
1
<?include "function.mysql.php";$mysql = New mysql('localhost','webscrip','FFrob111','webscrip',0);$mysql->query("SELECT * FROM vm_user");if ($mysql->num_rows() > 0) {    while ($mysql->movenext()) {        $gebruikersnaam=$mysql->getfield("gebruikersnaam");        echo $gebruikersnaam;    }}?>

Dan loopt ie hem wel gewoon 2 keer, maar als ik er een aantal query's bij zet niet :?
Pagina: 1