Рейтинг / Лестница - PullRequest
       3

Рейтинг / Лестница

0 голосов
/ 20 ноября 2011

Я пытаюсь создать систему ранжирования / рэддера, где кланы с наивысшим рангом (1) должны быть наверху, а клан с рангом 2 следующим и так далее. Но я не могу заставить это работать ... Я пробовал разные способы этого:

PHP:

$sql = mysql_query("SELECT * FROM clans ORDER BY rating DESC");
while($row=mysql_fetch_array($sql))
{
   $totalclans = $row['id']; 
}

$clans = 1;
$clansnumber = $totalclans;

while($clans <= $totalclans)
{
   $sql2 = mysql_query("SELECT * FROM clans WHERE id='$clansnumber'"); 
   while($row=mysql_fetch_array($sql2))
   {
      $name = $row['name'];
   }

   $sql2 = mysql_query("SELECT COUNT(*) AS totalmembers FROM members WHERE clan='$name'"); 
   while($row=mysql_fetch_array($sql2))
   {
      $totalmembers = $row['totalmembers'];
   }

   $sql2 = mysql_query("SELECT * FROM clans WHERE id='$clansnumber'");
   while($row=mysql_fetch_array($sql2))
   {
      echo "<div class='newestmemberusername'><a href='clan.php?clan=" . $row['name'] . "'>" . $row['name'] . ":</a></div>";
      echo "<table class='profileinfo' cellpadding='5' cellspacing='0' border='0'>";
      echo "<tr><td rowspan='4' style='border:none;'><div class='rankbox'>" . $row['rating'] . "</div></td></tr>";
      echo "<tr><td style='" . $firstrowleft . " width: 200px;'>Members:</td><td class='profileinfosecondrow' style='" . $firstrowright . "'>" . $totalmembers . "</td></tr>";
      echo "<tr><td style='" . $color2 . " width: 200px;'>Victories:</td><td class='profileinfosecondrow' style='" . $color2 . "'>" . $row['victories'] . "</td></tr>";
      echo "<tr><td style='" . $lastrowleft1 . " width: 200px;'>Losses:</td><td class='profileinfosecondrow' style='" . $lastrowright1 . "'>" . $row['losses'] . "</td></tr>";
      echo "</table>";

      $clans ++;
      $clansnumber --;
   }
}

echo "</div>";
echo "<div class='contentboxbodybottom'></div>";
}

К сожалению, он просто показывает все кланы, а не упорядочивает их по рангу. Я попытался изменить идентификатор на ранг и изменить его так, чтобы он сначала проверял ранг 1, затем ранг 2 и до ранг 10 (максимальный ранг), но затем он все равно просто показывает все кланы в порядке, который я не делаю. Я не хочу этого.

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Вы можете объяснить причину, по которой вы используете много операторов while

попробуйте это

 $sql = mysql_query("SELECT * FROM clans ORDER BY rating DESC");
                while($row=mysql_fetch_array($sql)) {
                    $totalclans = $row['id'];  
                    $name = $row['name'];

            echo $id.'<br/>'.$name;


  }

Дайте мне знать, если у вас возникнут какие-либо проблемы, а затем попытайтесь уточнить, что на самом деле вы пытаетесь получить из базы данных

0 голосов
/ 20 ноября 2011
$sql2 = mysql_query("SELECT * FROM clans WHERE id='$clansnumber' ORDER BY rating DESC LIMIT 0, 10");
...