2016-08-14 5 views
0

私はalittle混乱しています。 私はORDER BY paramater descのクエリを送信するときに、そのパラメータの最も高い番号でローの順序をロードして下位のものに表示する必要があります。クエリは、データが提示されていないSQLコードを

これは、実行中のイム私のコードです:

<?php 
     $p = 1; 
     $loadusers = mysqli_query($con, "SELECT * FROM `users` ORDER BY `gpower` DESC"); 
     $z = 0; 
     while ($me = mysqli_fetch_array($loadusers)) { 
      $z++; 
      if (($z % 20) == 0) { 
       $p += 1; 
      } 
      if ($me['id'] == $userinfo['id']) { 
       break; 
      } 
     } 
     if (isset($_GET['sp'])) { 
      $p = intval($_GET['sp']); 
     } 
     $sl = (($p * 20) - 20); 
     $el = $p * 20; 
     $loadrank = mysqli_query($con, "SELECT * FROM `users` ORDER BY `gpower` DESC LIMIT $sl,$el"); 
     if (mysqli_num_rows($loadrank) < 1) { 
      $p = 1; 
      $sl = (($p * 20) - 20); 
      $el = $p * 20; 
      $loadrank = mysqli_query($con, "SELECT * FROM `users` ORDER BY `gpower` DESC LIMIT $sl,$el"); 
     } 
     $i = $sl; 
     while ($rs = mysqli_fetch_array($loadrank)) { 
      $i++; 
      ?> 
      <tr <?php echo ($rs['id'] == $userinfo['id']) ? "style='background: #7d2222';" : ""?>> 
       <td><?php echo $i; ?></td> 
       <td><?php echo secure($rs['name']); ?></td> 
       <td><?php echo secure($rs['troops']); ?></td> 
       <td><?php echo clanName($con, $rs['name']); ?></td> 
       <td><?php echo $rs['gpower']; ?></td> 
      </tr> 
      <?php 
     } 
    ?> 

、これは私が取得していますものです:それはみんなが起こったんなぜ Daniel should be the first one that ranked but for some reason he is the 7 one.

任意のアイデア?

+0

'gpower'フィールドの種類は何ですか? 'Varchar'? –

+0

@u_mulder gpower type is Binary(64) –

答えて

0

あなたは(SQL Serverでの)int型への降順ALPHA順

コンバートgpower

...Order by cast(gpower as int) Desc 
+0

私はそれを行うことはできません。私は大きな数、2以上のビヨンを格納する必要があります。 –

+0

@BillowXDその後、十進数型、浮動小数点型、十進数型のいずれかが返されます。 –

+0

ありがとう!それは働いた:D –

0

オーケーを取得し、問題は、私はgpower cloumnのバイナリ形式を使用しました。 私はそれを浮かせるように変更しました。 "ORDER BY paramater DESC"を使用している場合は、パラメータが数値型の場合にのみ機能します。

+0

実際には、あなたはまた、埋め込まれた文字列をascまたはdescで並べ替えることができます。文字列の長さが最大長をカバーするのに十分である限り。 LPAD()を見てみましょう。たとえば、25の値をパディングすると、 '000025' –

関連する問題