kostenloser Webspace werbefrei: lima-city


Rangliste berechnen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    g***b

    Guten Morgen,

    ich bräuchte mal hilfe zur berechung einer Rangliste. Die User sollen nach Level sortiert gerankt werden., d.h. der User mit dem besten Level ist auf Platzt 1. Nun würde ich aber den rang berechnen und in die mysql eintragen und das jede stunde (mach ich mit cronjob). Aber wie berechne ich den Platz und trage ihn in die Mysqltabelle ein?

    P.S.: Ich sehe gerade, dass ich das wie bei Lima City meinte. ;)

    Beitrag zuletzt geändert: 9.1.2010 11:33:58 von gpweb
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,
    du kannst dir die Einträge einer Tabelle sortiert ausgeben lassen:
    SELECT Name FROM Tabelle ORDER BY Level DESC;

    Gibt dir die Liste nach Level absteigend geordnet aus (Spalten- und Tabellennamen natürlich an deine Tabelle anpassen).
    Wenn du den Rang unbedingt sütndlich in die Tablle eintragen willst, dann kannst du das Abfrageergebnis Datensatzweise durchlaufen, einen Zähler mitlaufen lassen und für jeden User den Zählerstand als Rang eintragen.

    Gruß
    Manni
  4. Autor dieses Themas

    g***b

    Vielen Dank, nur mein Problem ist, dass ich nicht weiß wie ich das genau durchlaufe und in die MYSQL-Datenbank eintrage. Hättest du ein Tutorial oder ein Beispiel?

    Viele Grüße
  5. Hallo erstmal!

    mit folgendem Code werden deine User in der tabelle "accounts" nach "wert1" (also bspw. nach "level") sortiert ausgegeben. falls mehrere user das selbe level haben, werden sie nach "wert2" sortiert (also bspw. nach "Gulden" oder "Name"). Der beste User (höchstes level) steht auf platz 1.

    $sql = "SELECT * FROM accounts ORDER BY wert1,wert2 DESC";


    wegen dem eintragen muss ich selber noch mal nachgucken^^

  6. nur mein Problem ist, dass ich nicht weiß wie ich das genau durchlaufe und in die MYSQL-Datenbank eintrage. Hättest du ein Tutorial oder ein Beispiel?


    Tabelle erstellen
    Beispie SQL Befehl:
    CREATE TABLE `rangliste` (
    `name` varchar(200) NOT NULL,
    `rang` int(11) NOT NULL,
    `id` int(11) NOT NULLauto_increment,
    PRIMARY KEY (`id`)
    );
    Ausgabe der Rangliste:
    <?php   
    $sql = 'SELECT  *  FROM rangliste ORDER BY rang DESC';
    
    $result = mysql_query($sql);
    while ($row = mysql_fetch_object($result)) {
           echo ' <table  border="0" cellpadding="0" cellspacing="2">';
    echo" <tr>
                 <td>$row->rang</td>
                 <td>&row->name</td>
       </tr>
                 </table>";
        }
    ?>


    Und die erstmalige Eingabe:
    <?php   //Forumlar
    echo'
    <form method="post" action="diesedatei.php">
    <table  border="1" cellpadding="0" cellspacing="2">
     <tr>
      <td>Name:</td>
      <td><input type="text" name="name"</td>
     </tr>
     <tr>
      <td>Rank</td>
      <td><input type="text" name="rang"> </td>
     </tr>
     <th><input type="submit" name="speichern"></th>
    </table>
    </form>';
    
    
    
    if (isset($_REQUEST['speichern'])) {
    //Befehl zum eintragen
    $eintrag = "INSERT INTO rangliste
    (name,rang)
    
    VALUES
    ('$_POST[name]','$_POST[rang])";
    
    $eintragen = mysql_query($eintrag);
    }?>


    Und für ändern
    //Hier noch passendes Forumlar einfügen
    $eintrag = "UPDATE rangliste SET
               rang='$_POST[rang]',
               WHERE name='$_POST[name]";
    
    $eintragen = mysql_query($eintrag);


    so sollte das ungefähr aussehen, das ist jetzt recht schlicht gehalten, am bessten du liest dir ein paar Tutorials durch

    MySQL Tutorials:
    http://tut.php-quake.net/de/mysql.html
    http://www.php-einfach.de/einf_mysql.php
    http://www.php-kurs.com/mysql---datenbank-unter-php.htm
    http://www.phpbox.de/php_tutorials/mysql1.php

    Beitrag zuletzt geändert: 9.1.2010 12:48:36 von eulenpost
  7. Autor dieses Themas

    g***b

    Hallo,

    danke für deine Sachen, die helfen mir jedoch leider nicht weiter. Ich würde das ganze so ähnlich machen wollen, wie das Ranglistensystem hier auf Lima-City. Das müsste man doch auch einfacher lösen können, google spuckt leider nicht viel dazu aus.

    Viele Grüße
  8. Hi,
    eigentlich hat dir eulenpost ja schon alles geschrieben. Ich schätze mal es geht dir aber nur um den Rang, die Ein- und Augsgaben haben dich etwas verwirrt?
    Also noch mal, aus meiner Sicht ziemlich minimal. Du hast die Tabelle von eulenpost, ergänzt mit einer Spalte level. In level stehen z.B. die Werte 4, 8, 1 ,77 und daraus willst du den Rang ermitteln, also 77 ist Platz 1, 8 ist Platz 2 und dies in die Tabelle in der Spalte Rang eintragen. Ist das soweit richtig?
    Die Tabelle heißt also "rangliste" und hat jetzt die Spalten "id", "name", "level", "rang".
    Dann sollte folgender Code den Rang ermitteln und in die Tabelle eintragen. (Ich gehe davon aus, dass die Datenbank bereits geöffent ist)
    <?php
    $zaehler = 1;
    $sql = 'SELECT  *  FROM rangliste ORDER BY level DESC';
    $result = mysql_query($sql);
    while ($row = mysql_fetch_object($result)) {
        $eintrag = "UPDATE rangliste SET rang=$zaehler WHERE name=$row->name";
        $eintragen = mysql_query($eintrag);
    $zaehler++;
    }
    ?>
    Das Script dann per cronjob alle Stunde aufgerufen sollte das Gewünschte leisten. Bin ja mal gespannt :).
    Gruß
    Manni

    Beitrag zuletzt geändert: 9.1.2010 22:13:35 von bandi999
  9. Autor dieses Themas

    g***b

    Vielen Dank, genau so wollte ich das. Habe es meinen Wünschen etwas angepasst. Danke.

    Viele Grüße

    nikic: Und da das Problem gelöst ist: Closed :)

    Beitrag zuletzt geändert: 10.1.2010 10:31:26 von nikic
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!