2017-04-05 6 views
0

私はPHPについてのニュービーです。 whileループのページ付けについては他のトピックを検索しましたが、満足できませんでした。whileループでのPHPでのページ分割

私のデータベースには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」は1ページに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とは何ですか?これは変数として要求しています。あなたのコードを使用する:

+0

それはあなたが提供したコードではありませんでしたので、またそのような指示がありましたが、私は非常に単純化されたページネーションを例として提供しました。 SQL文に焦点を当て、表示されるページに基づいてクエリの行を制限する方法。 –