Rangliste berechnen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
befehl
beispiel
code
datenbank
eintrag
eintragen
ermitteln
http
level
not
null
ordern
platz
problem
rang
rangliste
set
spalte
spalten
tabelle
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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^^
-
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 -
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 -
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)
Das Script dann per cronjob alle Stunde aufgerufen sollte das Gewünschte leisten. Bin ja mal gespannt :).<?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++; } ?>
Gruß
Manni
Beitrag zuletzt geändert: 9.1.2010 22:13:35 von bandi999 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage