kostenloser Webspace werbefrei: lima-city


Rang/Nummerierung ausgeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    z*****h

    Ich habe für unsere tag/stadtmeisterschaft">Stadtmeisterschaft im Bogenschießen eine kleine Auswertung mit PHP und MySQL gemacht.
    Bisher funktioniert alles sehr gut, obwohl ich vor 3 Tagen noch kein PHP konnte.

    Was ich jetzt als Problem noch habe ist die Auswertung.
    Sie soll im Sekundentakt per Beamer ausgegeben werden, das ist nicht das Problem.

    Auch den Aufbau der Nummerierung habe ich hinbekommen.
    Jetzt ist mir aber aufgefallen, dass wenn zwei Gruppen das gleiche Ergebnis haben, sie unterschiedliche RÄNGE haben und das sollte so nicht sein. Gibt es eine alternative per PHP die ich benutzen kann oder muss ich eine StoredProcedure laufen lassen, die dann das Ranking in eine weitere Spalte aktualisiert?

    Hier der Code für die Auswertung:

    <html>
      <head>
        <meta http-equiv="refresh" content="1; url=auswertung.php">
      </head>
    <?php
    include("inc/dbconnect.php");
    $abfrage1 = mysql_query("SELECT * FROM gruppe1 ORDER BY KE DESC");
    $abfrage2 = mysql_query("SELECT * FROM gruppe2 ORDER BY KE DESC");
    $i1 = 0;
    $i2 = 0;
    echo "<table border='0'>";
    echo "<tr><td colspan='3' align='center'><h1>Betriebe</h1></td></tr>";
    while($row1 = mysql_fetch_object($abfrage1))
    {
    echo "<tr>";
    echo "<td width='40' align='center'>",$i1 += 1,".</td>";
    echo "<td width='200'>",$row1->Name,"</td>";
    echo "<td width='40' align='center'>",$row1->GE,"<br></td>";
    echo "</tr>";
    }
    echo "</table>";
    echo "<table border='0'>";
    echo "<tr><td colspan='3' align='center'><h1>Vereine & Gruppen</h1></td></tr>";
    echo "<br><br>";
    while($row2 = mysql_fetch_object($abfrage2))
    {
    echo "<tr>";
    echo "<td width='40' align='center'>",$i2++,".</td>";
    echo "<td width='200'>",$row2->Name,"</td>";
    echo "<td width='40' align='center'>",$row2->GE,"-",$row2->KE,"<br></td>";
    echo "</tr>";
    }
    echo "</table>";
    ?>
    </html>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Ich hoffe, ich habe Dich richtig verstanden. Wenn zwei gleiche Ergebnisse nacheinander aufgelistet werden, sollen sie auch den gleichen Rang bekommen. Das kannst Du mit dem folgenden Script erreichen:
    <html>
      <head>
        <meta http-equiv="refresh" content="1; url=auswertung.php">
      </head>
    <?php
    include("inc/dbconnect.php");
    $abfrage1 = mysql_query("SELECT * FROM gruppe1 ORDER BY KE DESC");
    $abfrage2 = mysql_query("SELECT * FROM gruppe2 ORDER BY KE DESC");
    $i1 = 0;
    $i2 = 0;
    echo "<table border='0'>";
    echo "<tr><td colspan='3' align='center'><h1>Betriebe</h1></td></tr>";
    $lastKE= -10000; // oder irgendein unmögliches Ergebnis ...
    while($row1 = mysql_fetch_object($abfrage1))
    {
    if ($row1->KE>$lastKE) {
      $i1++;
      $lastKE=$row1->KE;
    }
    echo "<tr>";
    echo "<td width='40' align='center'>$i1</td>";
    echo "<td width='200'>",$row1->Name,"</td>";
    echo "<td width='40' align='center'>",$row1->GE,"<br></td>";
    echo "</tr>";
    }
    echo "</table>";
    echo "<table border='0'>";
    echo "<tr><td colspan='3' align='center'><h1>Vereine & Gruppen</h1></td></tr>";
    echo "<br><br>";
    $lastKE= -10000; // oder irgendein unmögliches Ergebnis ...
    while($row2 = mysql_fetch_object($abfrage2))
    {
    if ($row2->KE>$lastKE) {
      $i2++;
      $lastKE=$row2->KE;
    }
    echo "<tr>";
    echo "<td width='40' align='center'>$i2</td>";
    echo "<td width='200'>",$row2->Name,"</td>";
    echo "<td width='40' align='center'>",$row2->GE,"-",$row2->KE,"<br></td>";
    echo "</tr>";
    }
    echo "</table>";
    ?>
    </html>


    Ich habe eine bedingte Inkrementierung
    if ($row1->KE>$lastKE) {
      $i1++;
      $lastKE=$row1->KE;
    }

    eingebaut, die den Wert $i1 bzw $2 nur dann erhöht, wenn der aktuelle KE-Wert größer als der letzte ist.

    Vor jeder Schleife muss ich den $lastKE-Wert natürlich mit
    $lastKE= -10000; // oder irgendein unmögliches Ergebnis ...

    zurücksetzen.

    Beitrag zuletzt geändert: 26.1.2010 17:22:19 von tuswb
  4. Autor dieses Themas

    z*****h

    Danke, hat alles wunderbar geklappt.
  5. 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!