Code und Ausgabeproblemchen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Code und Ausgabeproblemchen

    Ich habe eine Tabelle in der Datenbank in der ich verschiedene Resultate sammel. Nun wollte ich aus dieser Datenbank ein Ranking erstellen.

    Hier sollten NUR die ersten Plätze pro User gezählt und angezeigt werden.

    Nach der Anzahl der zusammengezählten ersten Plätze sollte dann das Ranking geordnet sein.



    Mein Code sieht bisher so aus:

    PHP-Code:

    <?php include('db.php');

     
    $dateiname "erfolge.php";

    $sql "SELECT Vorname FROM `user`" or die("$sql<hr />" .mysql_error());

    $result mysql_query($sql);

    while (
    $row mysql_fetch_array($result)) 

    $name"$row[Vorname]";

    $platz_1 mysql_query("SELECT `id` FROM `turniere` 

    WHERE (`Platz` = '1') AND (`Reiter` = '
    $name') ");

    $platz_1 mysql_num_rows($platz_1); 

    for(
    $i 1$i 4$i++)  



    echo  
    "<tr>

             <td>
    $i.</td>"

    echo 
    " <td>$name</td>

             <td>
    $platz_1</td>

             </tr>

             <tr>"
    ;}} ?>

             </table>


    Es ist aber so, dass mir jeder Name, der aber nur einmal vorkommen soll jeweils mit 1., 2., 3. ausgegeben wird.

    Meine Frage ist nun zum einen wie man es hinbekommen kann, dass der Name nur einmal ausgegeben wird und das Ranking nach der Anzahl der Siege geordnet ausgegeben wird.

  • #2
    Ziemlich sicher falsches Forum! Das kannst du am Besten mittels einer SQL Abfrage erledigen --> **move** nach MySql
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Könntest du noch deine Tabellenstruktur etc. posten, ich konnte das Problem so wie es beschrieben war nicht ganz erfassen, allerdings denke ich, dass man das alles in einem Query erzielen kann, ohne vorher die Namen zu selektieren und diese zu durchlaufen, weil dadurch ergibt sich ja auch eine immens große Anzahl an Queries (angenommen du hast 1000 User , dann wird für jeden ein Query ausgeführt) <= natürlich vorausgesetzt, ich habe es richtig verstanden.
      Codestreamer.de - ein Platz für Coder

      Kommentar


      • #4
        Code:
        SELECT sum( `rank` ) AS 'AnzErsterPlatz', name
        FROM ranking
        WHERE rank =1
        GROUP BY (name)
        ORDER BY 'AnzErsterPlatz' DESC
        So kriegst du alles mit einer Abfrage raus und musst nicht, so wie du es jetzt machst, pro User eine Abfrage ausführen
        Zuletzt geändert von jahlives; 18.08.2008, 10:43.
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Mit folgendem Code sollte das gehen:
          PHP-Code:
          <?php 
          include('db.php');

          $sql "
              SELECT 
                  u.vorname,
                  COUNT(t.id) anz
              FROM
                  user u
              INNER JOIN
                  turniere t ON u.vorname = t.reiter
              GROUP BY
                  vorname
              WHERE
                  t.platz = 1
              ORDER BY
                  anz DESC"
          ;
          $result mysql_query($sql) or die("$sql<hr />" mysql_error());
          $i 1;
          echo 
          "<table>\n";
          while (
          $row mysql_fetch_assoc($result)) { 
              
          $name $row['vorname'];
              echo  
          "<tr>
                      <td>
          $i.</td>
                      <td>
          $name</td>
                      <td>" 
          $row['anz'] . "</td>
                  </tr>\n"
          ;
              
          $i ++;

          echo 
          "</table>\\n";
          Gruss
          H2O

          Kommentar

          Lädt...
          X