2017-05-26 9 views
0

私は昇順と降順のソートを持っています。リンクをクリックすると、テーブルは昇順にソートされ、別のソートdescの後にソートされます。一般的にコードは機能していますが、データベースの最初と最後のフィールドは返されません。並べ替えdescが最後に戻って来なかったり、ascのときに最初のフィールドを返さないとき。私はここにコードの一部が来るでしょう。助ける誰か?ありがとう。sort asc desc php、mysql

これは、私は、印刷データとなりました完全なコードをポストする要求

echo "<th>ID 
     <a href='sort_user.php?sortItemsId&order=" . (isset($_GET['order'])?!$_GET['order']: 1) . "'> 
      <i class='fa fa-sort' aria-hidden='true'></i> 
     </a> 
     </th>"; 

if (isset($_REQUEST["sortItemsId"])) { 
      $isAsc = isset($_GET['order'])? (bool) !$_GET['order']: 1; 
      $sql = "SELECT id, name, number, email, recovery_email, address  FROM users ORDER BY id " .($isAsc?"ASC":"DESC").";"; 
      $query = mysqli_query($db, $sql); 

..... 
} 
+0

SQLが正常に見えます。私はあなたの問題は、データを印刷するコードにあると思います。 – Jens

+0

データベースから行を取得していませんか?結果をどこかに表示している間にループに何か問題があるのでしょうか? – ElChupacabra

答えて

0

ためのリンクです。私は結果を得たが、降順のソート時に最後のフィールドを取得しないと、ASC

 if (isset($_REQUEST["sortItemsId"])) { 
     $isAsc = isset($_GET['order'])? (bool) !$_GET['order']: 1; 
     $sql = "SELECT id, CRMContact, CRMOrganization, username, recovery_email, status FROM tb_users ORDER BY id " .($isAsc?"ASC":"DESC").";"; 
     $query = mysqli_query($db, $sql); 

     if (mysqli_num_rows($query) > 0) { 
      while($row = mysqli_fetch_object($query)) { 
       echo "<div class='container'><table class='table table-striped'><thead>"; 
       echo " <tr><th>ID 
       <a href='existing_user.php?sortItemsId&order=" . (isset($_GET['order'])?!$_GET['order']: 1) . "'> 
        <i class='fa fa-sort' aria-hidden='true'></i> 
       </a> 
       </th> <th>CRM Contact</th><th>CRM Organization</th>"; 
       echo "<th>Username</th><th>Recovery email</th><th>Status</th><th>Actions</th></tr></thead>"; 
       $i = 0; 
       while ($row = mysqli_fetch_object($query)) { 
       $i++; 
       $id = $row->id;   
       echo "<tbody> 
          <tr> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'>$row->id</td> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'>$row->CRMContact</td> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'>$row->CRMOrganization</td> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'><a href='edit_user.php?idEdit=$row->id'>$row->username</a></td> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'>$row->recovery_email</td> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'>$row->status</td> 
          <td style='background-color:" . (($i % 2 == 0) ? '#fff' : '#f9f9f9') . "'> 
           <div class='btn-group'> 
            <button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false' style='background-color: #4076BC; color: #fff;'> 
            <i class='fa fa-fire' aria-hidden='true'></i> 

            Action <span class='caret'></span> 
            </button> 
            <ul class='dropdown-menu'> 
            <li><a href='view_user.php?viewId=$row->id'>View</a></li> 
            <li><a href=''>Edit</a></li> 
            <li><a href='existing_user.php?deleteUser=$row->id'>Delete</a></li>"; 
            ?> 
            <?php 
            if ($row->deactivated == 1) { 
             echo "<li><a href='existing_user.php?deactivateUserAcc=activate&id=$id'>Activate</a></li>"; 
            } else { 
             echo "<li><a href='existing_user.php?deactivateUserAcc=deactivate&id=$id'>Deactivate</a></li>"; 
            } 
            "</ul> 
           </div> 
          </td> 
          </tr> 
         </tbody>"; 
       } 
       echo "</table></div>"; 
      } 
     } else if (mysqli_num_rows($query) == 0) { 
      echo "<script type='text/javascript'>alert('Database is empty.');</script>"; 
     } else { 
      echo "<script type='text/javascript'>alert('Something went wrong.');</script>"; 
     } 
    } 
+0

while($ row = mysqli_fetch_object($ query))をネストしました。ネストされたループは、既存の$行をオーバーライドしています。 – ElChupacabra

+0

@ElChupacabraのように、最初のwhile($ row = mysqli_fetch_object($ query))ループを削除して、既存の行 – nacho

+0

をオーバーライドする必要があります。 –

1

をソートするときに、あなたのコード内でループしているときは、ネストされている最初のフィールドを得ることはありません:

while($row = mysqli_fetch_object($query)) { 
    //some code 
    //$row is first object 
    while($row = mysqli_fetch_object($query)) { 
     //printing data 
     //$row is replaced by second object and so on 
    } 
} 
関連する問題