Hilfe bei einer rangking (online offline Player)

TheNightIsMy

Grünschnabel
Hallo tutorial

Ich brauch mal hilfe da ich nicht mehr weiter weiß :(

Ich hab mir ein Player Ranking erstellt alles geht so weit nur leider will ich das mann mir anzeigen soll wer von wen (welcher Player) online ist.

Hier der ist der php code

PHP:
<center><h3> Top 50 Players</h3></center>
<br>
<?PHP
$sql = "SELECT c.level  as level, 
			   c.name as name, 
			   c.experience as experience, 
			   c.chartype as chartype, 
			   c.type as type
               FROM characters as 
			   c LEFT JOIN users as a 
			   ON (c.account = a.id)
              WHERE a.gm < 1
			  ORDER BY c.level DESC LIMIT 0,50 ";			  
$result = @mysql_query($sql) or die(mysql_error());

$i = 0;
echo "<table border='1'>";
echo "
<tr>
  <th width=1 align='center'>Platz</th> 
  <th width=1 align='center'>Level </th>
  <th width=40% align='center'>Char. Name</th>
  <th width=30% align='center'>Erfahrung</th>
  <th width=15%>Char. Class</th>
</tr>";
while($row = mysql_fetch_array( $result )) {
$i = $i + 1;
$zF = ($x%2==0) ? "thell" : "tdunkel";

//////Hier ist das Problem////

$status = "SELECT online FROM users WHERE online < '1'";
if ($status =1){$status2="online";}
if ($status =0){$status2="offline";}

////////////////////////////////////////////////
   
echo "<tr><td align='center' bgcolor='$zF'>"; 
echo "$i $status2";
echo "</td>
  <td align='center' bgcolor=''>"; 
    echo $row['level'];
    echo "</td>
  <td align='center' bgcolor=''>"; 
    echo $row['name'];
    echo "</td>
  <td align='center' bgcolor=''>"; 
    echo $row['experience'];
    echo "</td>
  <td align='center' bgcolor=''>";
    include ('system/inc/class.php');
    include ('system/inc/type.php');
    echo "</td>
</tr>"; 
$x++;
} 
echo "</table>";
	?>

Hat einer eine Idee wie ich nun das zeigen kann wer on ist?
 
(A) Du schreibst eine Query, schickst sie aber nicht ab?
(B) Welche Zustände hat online? 0 und 1? Dann zeigt Deine Query doch eh nur jene User, die 0 sind, also offline. Wenn online INT ist, sollte der Vergleich auch ohne Anführungsstriche geschehen.
Code:
 WHERE online<1

mfg chmee
 
Ah danke das einer zeit hat ^^ ******

(A)
PHP:
$result = @mysql_query($sql) or die(mysql_error());
?
(B) Zustände 0 wen also einer on ist geht es automatisch auf 1

Also die characters sind in einer Tabelle
aber die online tabelle ist unter users wie bekomme ich das jetzt hin?
 
Hi

A: Das ist gemeint:
PHP:
$status = "SELECT online FROM users WHERE online < '1'";
if ($status =1){$status2="online";}
if ($status =0){$status2="offline";}
 
:) Ja.. Aber Du machst die zitierte Query für das erste Select. Wo in dem Sourcecode lässt Du denn SQL wissen, dass Du diese zweite Frage stellst.. Jede SQL-Anweisung muss natürlich als Query ans SQL-Subsystem raus.

Wenn Du diese Info in der ersten Query haben willst, musst Du diese dort einbinden. Sollte wohl so aussehen:
PHP:
$sql = "SELECT c.level  as level, 
               c.name as name, 
               c.experience as experience, 
               c.chartype as chartype, 
               c.type as type,
               a.online as online
               FROM characters as 
               c LEFT JOIN users as a 
               ON (c.account = a.id)
              WHERE a.gm < 1
              ORDER BY c.level DESC LIMIT 0,50 ";

$result = @mysql_query($sql) or die(mysql_error()); 
# -- while()
# -- {
if(row['online']<1){echo"offline";}
# -- }
Wobe ich mir vorstellen kann, dass Du die Tabellen auch ohne Alias ansprechen kannst, erspart diese lange Query und ändert wenig bei der Ausgabe.
PHP:
$sql = 
  "SELECT level, name, experience, chartype, type, online
   FROM characters
   LEFT JOIN users 
   ON (account =id)
   WHERE gm < 1
   ORDER BY level DESC LIMIT 0,50 ";
Aliase sind verpflichtend, wenn "Spaltennamen" in bezugnehmenden Tabellen gleich sind, zB wenn in zwei Tabellen id existiert.

mfg chmee
 
Zuletzt bearbeitet:
Wie mach ich das jetzt ohne das mir da wieder ein Fehler unterlauft?

PHP:
$status = "SELECT online FROM users WHERE online <1";
$result = @mysql_query($status) or die(mysql_error());
while($row = mysql_fetch_array( $result )) {

if ($status =1){$status2="online";}
if ($status =0){$status2="offline";}

Ist das richtig?
 
Leider kommt bei mir jetzt ein Fehler!


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a.online as online FROM characters as c LEFT JO' at line 6
 
Da fehlt ein Komma ( ist spät, da übersieht man sowas) :) Oben auch ausgebessert..

UND : Nein, man macht in einer SQL-fetch-Schleife nicht unbedingt weitere SQL-Queries. Das ist ressourcenfressend und in Deinem Kontext eh falsch bzw. unlogisch. Du nimmst diese Info gleich mit der ersten Query mit.

mfg chmee
 
Zuletzt bearbeitet:
Zurück