2017-04-05 125 views
0

我是關於php的newbee,試圖學習。 我已經搜索關於while循環分頁的其他主題但不滿意。使用php的while循環分頁

我在我的數據庫中有70個用戶記錄,想用html表列出它們。我使用此代碼顯示所有記錄。我怎樣才能使這些代碼簡單分頁?請幫幫我。

<table class="table"> 
    <thead> 
     <tr> 
     <th>ID</th> 
     <th>Name</th> 
     <th>Surname</th> 
     <th>Email</th> 
     <th>Password</th> 
     <th>Date</th> 
     <th>Gender</th> 
     </tr> 
    </thead> 
    <tbody> 

    <?php 
    $q = "SELECT * FROM users ORDER BY uid ASC"; 
    $r = mysqli_query($dbc,$q); 

    while($userlist = mysqli_fetch_assoc($r)){ ?> 
     <tr> 
      <td><?php echo $userlist['uid']; ?></td> 
      <td><?php echo $userlist['name']; ?></td> 
      <td><?php echo $userlist['surname']; ?></td> 
      <td><?php echo $userlist['email']; ?></td> 
      <td><?php echo $userlist['password']; ?></td> 
      <td><?php echo $userlist['date']; ?></td> 
      <td><?php echo $userlist['gender']; ?></td> 
     </tr> 
     <?php } ?>  
    </tbody> 
    </table> 
+0

使用LIMIT子句並維護要在頁面中顯示和開始記錄的數字。 –

+0

您需要在查詢中使用「LIMIT」和「OFFSET」。 OFFSET是基於當前頁面動態構建的,以及LIMIT被設置爲什麼。所以'LIMIT 3'每頁有3個項目。然後,您需要'OFFSET'爲'($ pageNumber-1)* 3',使其在查詢中爲'OFFSET($ pageNumber-1)* 3'。請記住**驗證**頁碼,因爲它們通常可以被用戶操縱 - 使用帶有佔位符的準備好的語句。 – Qirel

+0

建議:不要以明文存儲密碼,也不要向所有用戶顯示所有用戶的密碼。 – insertusernamehere

回答

2

以下提供了非常簡單的分頁作爲起點。您需要提供分頁格式等。

<table class="table"> 
    <thead> 
     <tr> 
      <th>ID</th> 
      <th>Name</th> 
      <th>Surname</th> 
      <th>Email</th> 
      <th>Password</th> 
      <th>Date</th> 
      <th>Gender</th> 
     </tr> 
    </thead> 
    <tbody> 
<?php 
    $q = "SELECT count(*) as `numrows` FROM `users` ORDER BY `uid` ASC"; 
    $c = mysqli_query($dbc,$q); 
    if($c) { 
     if($t = mysqli_fetch_assoc($c)) { 
      $numrows = $t['numrows']; 
     } 
    } 

    $numrows = 0; 
    $rowsperpage = 10; 
    $currpage = isset($_REQUEST['currpageno']) && $_REQUEST['currpageno'] != 0 ? $_REQUEST['currpageno'] : 1; 
    $numpages = ceil($numrows/$rowsperpage); 
    $startrow = ($currpage - 1) * $rowsperpage; 
    if($startrow > $numrows) { 
     $startrow = $numrows - $rowsperpage; 
    } 
    if($startrow < 0) { 
     $startrow = 0; 
    } 


    $q = "SELECT * FROM `users` ORDER BY `uid` ASC LIMIT ".$startrow.",".$rowsperpage.";"; 
    $r = mysqli_query($dbc,$q); 

    while($userlist = mysqli_fetch_assoc($r)){ 
?> 
     <tr> 
       <td><?php echo $userlist['uid']; ?></td> 
       <td><?php echo $userlist['name']; ?></td> 
       <td><?php echo $userlist['surname']; ?></td> 
       <td><?php echo $userlist['email']; ?></td> 
       <td><?php echo $userlist['password']; ?></td> 
       <td><?php echo $userlist['date']; ?></td> 
       <td><?php echo $userlist['gender']; ?></td> 
     </tr> 
     <?php } ?>  
    </tbody> 
</table> 
<div id='pagination'> 
<?php 
    for($pgno = 1;$pgno <= $numpages;$pgno++) { 
     echo "<a class='' href='?currpageno=".$pgno."'>".$pgno."</a>"; 
    } 
?> 
</div> 
+0

爲什麼選擇投票?另外,爲什麼投票沒有留下評論的原因? –

+0

解析錯誤:語法錯誤,意外的文件結尾在「給出這個錯誤信息」。「}」在我猜的地方丟失了某些地方的代碼 什麼是currpageno?請求這是一個變量。地址like index.php?page = 7? 編輯:我正在使用bootstrap分頁。使用您的代碼;

+0

由於在你提供的代碼不是,也不有任何跡象表明,我提供了一個非常簡化的分頁作爲例子。重點關注sql語句,以及如何根據要顯示的頁面限制查詢中的行。 –