Сортировка таблицы php на основе только одного конкретного поля - PullRequest
0 голосов
/ 06 января 2012

Привет. Я пытаюсь отсортировать эту таблицу на основе $ fratio.Тот, кто имеет наибольшее соотношение $, будет указан как номер 1 в таблице.Вот код, который я работал до сих пор -

// MySQL connection.
$connection = mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database. Be sure the databasename exists and online is.");
$query="SELECT `UserID`,`Playername`,`Kills`,`Deaths` FROM users LIMIT 0,50"; 
$query = mysql_query($query);

echo('<table width="300" border="2" cellspacing="3" cellpadding="3">
<tr>
    <td style="min-width:150px;">Playername:</td>
    <td style="width:100px">Kills:</td>
    <td style="width:100px">Deaths:</td>
    <td style="width:100px">Ratio:</td>
</tr>');
while($row = mysql_fetch_assoc($query))
{
$id = $row['UserID'];
$playername = $row['Playername'];
$kills = $row['Kills'];
$deaths = $row['Deaths'];
$ratio = ($kills/$deaths);
$fratio = ceil($ratio); 

echo('
  <tr>
    <td style="min-width:150px;"><a href="stats.php?id='.$id.'">'.$playername.'</a></td>
    <td style="width:100px">'.$kills.'</td>
    <td style="width:100px">'.$deaths.'</td>
    <td style="width:100px">'.$fratio.'</td>
  </tr>');
  }
  echo('</table>');

  mysql_close($connection);
  ?>

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Вы можете попробовать использовать

ORDER BY kills / deaths DESC

Таким образом, полный запрос будет выглядеть как

SELECT `UserID`,`Playername`,`Kills`,`Deaths` FROM users ORDER BY kills / deaths DESC LIMIT 0,50

И полный код будет выглядеть так:

// MySQL connection.
$connection = mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database. Be sure the databasename exists and online is.");
$query="SELECT `UserID`,`Playername`,`Kills`,`Deaths` FROM users ORDER BY kills / deaths LIMIT 0,50"; 
$query = mysql_query($query);

echo('<table width="300" border="2" cellspacing="3" cellpadding="3">
<tr>
    <td style="min-width:150px;">Playername:</td>
    <td style="width:100px">Kills:</td>
    <td style="width:100px">Deaths:</td>
    <td style="width:100px">Ratio:</td>
</tr>');
while($row = mysql_fetch_assoc($query))
{
$id = $row['UserID'];
$playername = $row['Playername'];
$kills = $row['Kills'];
$deaths = $row['Deaths'];
$ratio = ($kills/$deaths);
$fratio = ceil($ratio); 

echo('
  <tr>
    <td style="min-width:150px;"><a href="stats.php?id='.$id.'">'.$playername.'</a></td>
    <td style="width:100px">'.$kills.'</td>
    <td style="width:100px">'.$deaths.'</td>
    <td style="width:100px">'.$fratio.'</td>
  </tr>');
  }
  echo('</table>');

  mysql_close($connection);
  ?>

Вот пример «ЗАКАЗАТЬ ПО». Вы должны действительно рассмотреть чтение по крайней мере это, чтобы получить основную идею этого.

http://www.w3schools.com/php/php_mysql_order_by.asp

0 голосов
/ 06 января 2012

Вы сделаете соотношение в MySQL как:

ORDER BY CEILING( kills / deaths ) DESC
...