2017-04-15 8 views
0

データベースのデータを表に表示するページングがあります。これは正常に動作していたので、管理者だけが見ることができるボタンを追加しようとしました。ユーザーが管理者でない場合、このボタンは表示されません。この機能は機能しますが、一度作成すると、1ページあたり最大10個のデータと比較して1ページ分のデータしか表示されません。管理者のためにボタンを追加した後にページネーションが正しく機能しない

これは私のコードです:

  public function dataview($query) 
{ 
    $stmt = $this->db->prepare($query); 
    $stmt->execute(); 

    if($stmt->rowCount()>0) // display records if there are records to display 
    { 
      while($row=$stmt->fetch(PDO::FETCH_ASSOC)) 
      { 
       $poll_id = $row['poll_id']; 
       $question = $row['question']; 
       ?> 
       <tr> 
       <td><?php echo $row['poll_id']; ?></td> 
       <td><?php echo $row['question']; ?></td> 
       <td><a href="openPoll.php?poll_id=<?php echo $poll_id; ?>">Open Poll</a></td> 
       <td><a href="openResults.php?poll_id=<?php echo $poll_id; ?>">Results</a></td> 
       <?php 
        $stmt = $this->db->prepare("SELECT * FROM users WHERE user_id=:user_id"); 
        $stmt->execute(array(':user_id'=>$_SESSION['user_session'])); 
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
        if($stmt->rowCount() > 0){ 
        $admin = $userRow['admin']; 
        if($admin == 1){ 
       ?> 
       <td><a href="deletePoll.php?poll_id=<?php echo $poll_id; ?>">Delete Poll</a></td> 
       <?php 

       ?> 

       </tr> 

       <?php 
        } 
        } 
      } 
    } 
    else 
    { 
      ?> 
      <tr> 
      <td>Nothing here...</td> 
      </tr> 
      <?php 
    } 

}

と、これはあなたがループ内$stmtような変数を再利用しているページネーション

<table align="center" border="1" width="100%" height="100%" id="data"> 
      <?php 
      $query = "SELECT * FROM polls";  
      $records_per_page=10; 
      $newquery = $paginate->paging($query,$records_per_page); 
      $paginate->dataview($newquery); 
      $paginate->paginglink($query,$records_per_page); 
      ?> 
      </table> 

答えて

1

を使用するHTMLページのコードですそれを使用します。だから、次の操作を行います。

$stmt = $this->db->prepare($query); 
$stmt->execute(); 

if($stmt->rowCount()>0) // display records if there are records to display 
{ 
     while($row=$stmt->fetch(PDO::FETCH_ASSOC)) 
     { 
      $poll_id = $row['poll_id']; 
      $question = $row['question']; 
      ?> 
      <tr> 
      <td><?php echo $row['poll_id']; ?></td> 
      <td><?php echo $row['question']; ?></td> 
      <td><a href="openPoll.php?poll_id=<?php echo $poll_id; ?>">Open Poll</a></td> 
      <td><a href="openResults.php?poll_id=<?php echo $poll_id; ?>">Results</a></td> 
      <?php 
       $stmt2 = $this->db->prepare("SELECT * FROM users WHERE user_id=:user_id"); 
       $stmt2->execute(array(':user_id'=>$_SESSION['user_session'])); 
       $userRow=$stmt2->fetch(PDO::FETCH_ASSOC); 
       if($stmt2->rowCount() > 0){ 
       $admin = $userRow['admin']; 
       if($admin == 1){ 
      ?> 
      <td><a href="deletePoll.php?poll_id=<?php echo $poll_id; ?>">Delete Poll</a></td> 
      <?php 

      ?> 

      </tr> 

      <?php 
       } 
       } 
     } 
} 
else 
{ 
     ?> 
     <tr> 
     <td>Nothing here...</td> 
     </tr> 
     <?php 
} 

私は$stmt2によってループ内$stmtを交換しています。

+0

ありがとうございました。問題を修正しました。私はこれを知っていたはずです。 – liquidtabs

関連する問題