anpera.net
https://anpera.dyndns.org/phpbb3/

Anzeige geht nicht
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=3590
Seite 1 von 1

Autor:  Sylver [ Mi 18 Apr, 2007 19:34 ]
Betreff des Beitrags:  Anzeige geht nicht

Hallo habe das moderatoren add on von Hadriel und habe es ein wenig erweitert, aber meine user werden nicht angezeigt, bei den anderen wie Priester, Götter usw funktioniert es.
Könntet ihr euch das mal anschauen, wäre sehr dankbar!

[php]$sql="SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid,superuser,prayer FROM accounts WHERE superuser<4 AND locked=0 AND loggedin=1 AND laston AND prayer=0>'".date("Y-m-d H:i:s",strtotime(date("r")."-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY level AND dragonkills DESC";

$result = db_query($sql) or die(sql_error($sql));

$count = db_num_rows($result);

$ret.=appoencode("`b`2$count Bewohner anwesend:`b`n");

for ($i=0;$i<db_num_rows($result);$i++){

$row = db_fetch_assoc($result);

$ret.=appoencode("`&$row[name]`n");

$onlinecount++;



}

//Moderator Addon by Hadriel @ anaras.ch

if ($onlinecount==0) $ret.=appoencode("`i`&Es sind keine Bewohner Online!`n`i");



$sql="SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid,superuser,prayer FROM accounts WHERE prayer=1 AND loggedin=1 AND laston>'".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY superuser DESC";

$result = db_query($sql) or die(sql_error($sql));

$count3 = db_num_rows($result);

$ret.=appoencode("`n`V`b$count3 Priester Online:`n`b");

for ($i=0;$i<db_num_rows($result);$i++){

$row = db_fetch_assoc($result);

$ret.=appoencode("`&$row[name]`n");

$onlinecount3++;

}

//Administrator Addon by Hadriel @ anaras.ch

if ($onlinecount3==0) $ret.=appoencode("`i`&Es sind keine Priester Online!`n`i");



$sql="SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid,superuser,prayer FROM accounts WHERE prayer=2 AND loggedin=1 AND laston>'".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY superuser DESC";

$result = db_query($sql) or die(sql_error($sql));

$count2 = db_num_rows($result);

$ret.=appoencode("`n`%`b$count2 Hohepriester Online:`b`n");

for ($i=0;$i<db_num_rows($result);$i++){

$row = db_fetch_assoc($result);

$ret.=appoencode("`&$row[name]`n");

$onlinecount2++;

}

if ($onlinecount2==0) $ret.=appoencode("`i`&Es sind keine Hohepriester Online!`n`i");


$sql="SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid,superuser,prayer FROM accounts WHERE superuser=3 AND loggedin=1 AND laston>'".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY superuser DESC";

$result = db_query($sql) or die(sql_error($sql));

$count4 = db_num_rows($result);

$ret.=appoencode("`n`^`b$count4 Halbgötter Online:`b`n");

for ($i=0;$i<db_num_rows($result);$i++){

$row = db_fetch_assoc($result);

$ret.=appoencode("`&$row[name]`n");

$onlinecount4++;

}

if ($onlinecount4==0) $ret.=appoencode("`i`&Es sind keine Halbgötter Online!`n`i");


$sql="SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid,superuser,prayer FROM accounts WHERE superuser=4 AND loggedin=1 AND laston>'".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY superuser DESC";

$result = db_query($sql) or die(sql_error($sql));

$count5 = db_num_rows($result);

$ret.=appoencode("`n`6`b$count5 Götter Online:`b`n");

for ($i=0;$i<db_num_rows($result);$i++){

$row = db_fetch_assoc($result);

$ret.=appoencode("`&$row[name]`n");

$onlinecount5++;

}

if ($onlinecount5==0) $ret.=appoencode("`i`&Es sind keine Götter Online!`n`i");

$ret.=grafbar(getsetting("maxonline",10),(getsetting("maxonline",10)-$onlinecount-$onlinecount2-$onlinecount3-$onlinecount4-$onlinecount5),"100%");

//db_free_result($result);

return $ret;

}

}[/php]

Autor:  Bill Tür [ Do 19 Apr, 2007 08:51 ]
Betreff des Beitrags: 

Der Fehler liegt gleich in der ersten Zeile.

Guckst du:

[php]AND laston AND prayer=0>'".date("Y-m-d H:i:s",strtotime(date("r")."-".getsetting("LOGINTIMEOUT",900)." seconds"))."'[/php]

muss heißen

[php]AND prayer=0 AND laston>'".date("Y-m-d H:i:s",strtotime(date("r")."-".getsetting("LOGINTIMEOUT",900)." seconds"))."'[/php]

Autor:  Sylver [ Do 19 Apr, 2007 17:39 ]
Betreff des Beitrags: 

vielen Dank, aber war leider nicht der fehler, ist auch nicht so wichtig, das ich es haben muss.

LG
Sylver

Autor:  Naria [ Do 19 Apr, 2007 18:45 ]
Betreff des Beitrags:  Re: Anzeige geht nicht

Vielleicht einfach in der ersten Zeile superuser<4 durch superuser=0 ersetzten...
wäre die einzige idee, die mir jetzt spontan einfällt...

Autor:  Drazaar [ Do 19 Apr, 2007 22:20 ]
Betreff des Beitrags: 

Nein, superuser<4 schließt superuser=0 mit ein. Aber Bills Kommentar ist schon einmal richtig.

Glücklicherweise hast du auch einen Link zu deiner Source da, damit man sich das im ganzen Script(teil) angucken kann.
No Source no help

Autor:  Bill Tür [ Fr 20 Apr, 2007 08:45 ]
Betreff des Beitrags: 

hm... mir is da grad noch was aufgefallen, doch durch Mangel an PHP-Kenntnis weiß ich nicht, ob das was mit deinem Prob zu tun hat.

Bei den Bürgern: '".date("Y-m-d H:i:s",strtotime(date("r")."-".getsetting("LOGINTIMEOUT",900)." seconds"))."'

Bei den anderen: '".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."'

kann mir ma jmd aus meiner Unwissenheit helfen, was diese Zeilen eigtl aussagen?

Autor:  Harthas [ Fr 20 Apr, 2007 08:57 ]
Betreff des Beitrags: 

Damit wird kontrolliert, ob der automatische LogOut schon überschritten ist oder nicht.

Allerdings ist eher der obere Teil richtig, denn wie man an dem - sieht, sollte das ganze eine Subtraktion darstellen.

Mit strtotime wird die aktuelle Mikro-Zeit ermittelt, dann mit date in die Form Y-m-d H:i: gepresst und schliesslich noch kontrolliert, ob das ganze immer noch "grösser" als laston ist.

Mit freundlichen Grüssen,
Harthas

Autor:  -DoM [ Fr 20 Apr, 2007 10:18 ]
Betreff des Beitrags: 

Neee... nicht Mikro-Zeit.... microtime ist noch etwas anderes...

Es wandelt zum UNIX-Zeitstempel um. Es handelt sich dabei um die Sekunden seit dem beginn der Unix-Epoche... 1. Januar 1970 um 0 Uhr....

Autor:  Harthas [ Fr 20 Apr, 2007 11:03 ]
Betreff des Beitrags: 

Okay, sorry, hatte es wohl verwechselt. ^^

Autor:  Bill Tür [ Fr 20 Apr, 2007 11:55 ]
Betreff des Beitrags: 

ok, nun bin ich wieder etwas schlauer. Danke :)

ach noch was... (was bin ich heute wieder wissbegierig *gg* )

am Schluss der ersten Zeile:

ORDER BY level AND dragonkills DESC

funzt das tatsächlich?

wenn ja, wie sortiert er? erst nach Level, dann nach DK´s?

seh ich das richtig, dass für die Sortierung "dragonkills" nicht in die SQL-Abfrage rein muss, solang das Feld in der entsprechenden Tabelle existiert?

Autor:  -DoM [ Fr 20 Apr, 2007 12:38 ]
Betreff des Beitrags: 

Klar Funktioniert das...

Das Feld level wird als erstes zur Sortierung verwendet. Standardmässig, wenn nicht angegeben wird. Also höchste zuerst. Dann wird das 2. Argument angewendet dragonkills.

Man kann auch noch mehr Sortierkriterien angeben. Aber für jede Sortierung legt MySQL eine temporäre Tabelle an, welche je nach konfiguration entwerder im Ram, oder auf die Festplatte geaschrieben werden.

Performance technisch, könnte man korrekten Indizies eine Sortierung vermeiden, aber dabei kommt es immer auf die Art der Abfrage an. Gerade in LotGD sind diese aber zum Teil Grundverschieden, was widerrum eine gute Indizierung sehr schwer macht.

Aber das ganz ist wieder ein anderes Thema....

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/