Rank in database opslaan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jens

Jens

14/09/2007 23:04:00
Quote Anchor link
Goedenavond,

Ik heb een script waarbij ik alle gebruikers rangschik op 'punten'. Degene met het meeste punten staat uiteraard op de eerste plaats. Ik werk met een lus, er staan zoveel gebruikers in de rangschikking als dat er gebruikers zijn. Ik gebruik $i ++ om de #posities weer te geven (1,2,3) enz.

Nu is mijn vraag, hoe kan ik bij alle personen hun rank in de database zetten, zodat ik wanneer ik bv zijn profiel bekijk, ik zie staan: Rank: 34.

Practisch voorbeeldje:

Mark heeft 100 punten en staat aan de leiding. In de rangschikking heeft hij dus rank 1. Hoe kan ik er nu voor zorgen dat in de database van mark zijn rank geupdate word, zodat ik ten allen tijden zijn rank uit de database kan halen zonder eerst alle gebruikers te rangschikken en de hele rambam..

Dank.
 
PHP hulp

PHP hulp

24/11/2024 11:25:42
 

14/09/2007 23:07:00
Quote Anchor link
Als ik het goed begrijp rangschik je dus alles op punten en wil je het positie nummer als rank gebruiken dus zo:

punten rand
200 1
198 2
190 3
100 4

En dit via een script dat je op de x tijd aanroept.
 
Jens

Jens

14/09/2007 23:21:00
Quote Anchor link
Je hebt het juist.

Ik wil dus inderdaad het positienummer opslaan als rank.
Het rangschik script kan iedereen oproepen wanneer hij wil, en VOORLOPIG wordt dus iedere keer die rank geupdate in database.
 

14/09/2007 23:26:00
Quote Anchor link
Je zal zo iets kunnen doen maar behalve dat dit 'zwaar' voor de server is is het ook niet echt netjes.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    $sql
= "SELECT * FROM tabel ORDER BY punten DESC";
    $res = mysqli_query($con, $sql);
    $i = 0;
    while ($row = mysqli_fetch_assoc($res))
    {

        $i ++;
        $sql = "UPDATE tabel SET rank = " . $i . " WHERE id = " . $row['id'];
        mysqli_query($con, $sql);
    }

?>

Eigenlijk zou je alles in één query moeten updaten maar hoe dat precies moet weet ik eigenlijk niet. pgFrank kom er eens in...
 
Jens

Jens

14/09/2007 23:32:00
Quote Anchor link
Nu, dat enkel ik en men mede programmeur online zijn, kan ik dit nog, later pas ik dat wel aan zodat dat niet meer zwaar is voor de server.
 
Gerben Jacobs

Gerben Jacobs

15/09/2007 00:47:00
Quote Anchor link
Misschien begrijp ik het verkeerd, maar je wilt niet de rank in de tabel opslaan.
Sla alleen het puntenaantal op en bereken dan de ranks.
 
Jens

Jens

15/09/2007 00:55:00
Quote Anchor link
Je begrijpt het verkeerd, ik heb de puntenaantallen opgeslagen en ik bereken dan de ranks, en ook die sla ik op, zodat ik ze makkelijk kan opvragen.

Oplossing is al gevonden ;)
 

15/09/2007 09:24:00
Quote Anchor link
Hoe heb je het dan opgelost?
 
Jens

Jens

16/09/2007 16:53:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?

$sql
= "UPDATE tabel SET rank = " . $i . " WHERE id = " . $row['id'];

?>


Zo en klaar is kees.
 
Toine vd P

Toine vd P

16/09/2007 18:25:00
Quote Anchor link
Misschien kun je beter het aantal punten opslaan en de rank berekenen en in een session variabel stoppen, anders heb je onnodige informatie in he database, beetje zonde.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.