Name aus Liste auswählen

Anacondi

Erfahrenes Mitglied
Hallo an alle zusammen.
Ich bin dabei, ein kleines Game zu programmieren. Jetzt hänge ich an folgendwer stelle fest, wäre nett, wenn mir da jemand weiter helfen könnte.
Ich rufe eine Liste aller User aus der Datenbank ab, die rangmässig in meiner höhe sind. Der Code:
PHP:
<?php
  include("dbconnect.php");
  ?>

<?php

$abfrage = "SELECT `username` ,`punkte` , `dmark` 
FROM `login`
ORDER BY `punkte` DESC LIMIT 0, 20";

$ergebnis=mysql_query($abfrage);

?>
<br><br><p align="center" class="headline">Rangliste nach Erfahrungspunkten</p><br>
<table width="300" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
    <th align="left"  class="table_label">Rang</th>
    <th align="left"  class="table_label">User</th>
    <th align="left"  class="table_label">Erfahrung</th>
   </tr>

<?php

$i = 1;

  while($row=mysql_fetch_object($ergebnis)){
    echo '<tr>'."\r\n";

    echo '<td class="text">'.$i++.'</td>'."\r\n";
    echo '<td class="text">'.$row->username.'</td>'."\r\n";
    echo '<td class="text">'.$row->punkte.'</td>'."\r\n";
      echo '<tr>'."\r\n";
  }

?>
</table>

Zu meiner ersten Frage: wie kann ich die SQL abfrage machen, damit nicht, wie hier die ersten 20 User dargestellt werden, sondern die 20 User, die Rangmässig über mir sind.

Zu meiner 2. Frage: wie stelle ich es jetzt an, das ich aus der liste den User anklicken kann, um ihn heraus zu fordern.
 
Zu 1. Du musst eine WHERE-Bedingung anhängen:

SQL:
SELECT `username` ,`punkte` , `dmark` 
FROM `login`
WHERE `punkte` > $meine_punkte
ORDER BY `punkte` ASC LIMIT 0, 20

Zur zweiten Frage:

Über ein Formular: Du fügst in deine HTML-Tabelle noch eine Spalte für einen Radio-Input ein und gibst ihm den Wert der User-ID. Dazu müsstest du die HTML-Tabelle in ein Formular einbetten.

Über einen Link: Du fügst in deine HTML-Tabelle eine weitere Spalte für einen Link ein, der z.B. diese Adresse verwendet: http://www.meineseite.de/herausfordern.php?user=$userid. Beispiel:

PHP:
  while($row=mysql_fetch_object($ergebnis)){
    echo '<tr>'."\r\n";

    echo '<td class="text">'.$i++.'</td>'."\r\n";
    echo '<td class="text">'.$row->username.'</td>'."\r\n";
    echo '<td class="text">'.$row->punkte.'</td>'."\r\n";
    echo '<td class="text"><a href="/herausfordern.php?user=' . $userid . '">Herausfordern</a></td>' . "\r\n";
      echo '<tr>'."\r\n";
  }

Wie du an die User-Id kommst, kann ich dir aber nicht sagen, da ich die Tabellenstruktur nicht kenne.
 
Die id 's sind in der gleichen tabelle 'login' unter id
brauch ich da nur statt der $userid $id einsetzen? dann nimmt er aber meine id,
 
danke für die hilfe. habs so probiert, aber er kämpft dann immer nur gegen mich selber. da er immer meine eigene id nimmt. Er gibt mir bei allen usern die gleiche id,
 
ich habs jetzt so gelöst
PHP:
echo '<td class="text"><a href="herausfordern.php?user=' . $row->username . '">kämpfen</a></td>' . "\r\n";

das problem was ich jetzt habe, wie übergebe ich den usernamen des gegners jetzt an die neue seite herausfordern.php

Oder anders gefragt, in dem neuen fenster steht ja jetzt zum beispiel : http://127.0.0.1/tests/start/herausfordern.php?user=Anacondi

wie kann ich jetzt aus der eingabeleiste den user Anacondi auslesen und übergeben.
 
Zuletzt bearbeitet:
Hi,

du übergibst doch bereits per ?user=... den Benutzernamen an herausfordern.php!
Und dann kannst du in dieser Datei den Benutzernamen per $_GET['user'] auslesen.
Oder wie meinst du das genau?
 
Aber klar,,,,hab da nicht weiter gedacht. danke.
aber noch eine frage zu der sql abfrage oben. wen ich nun auf rang 1 bin, zeigt er mir in der liste natürlich keinen gegner an. wie kann ich die abfrage umstellen, das, z.b. 10 leute über mir und 10 leute unter mir rangmässig angezeigt werden?
 
Das müsstest du auf 2 Abfragen aufteilen, sonst wird es ungenau. Statt dem Größer-Als-Zeichen > müsstest du dann halt ein Kleiner-Als-Zeichen < verwenden.
 
Zurück