2017-04-15 1 views
0

테이블의 데이터베이스에있는 데이터를 테이블에 표시하는 페이지 매김 기능이 있습니다. 이것은 정상적으로 작동하고 있었고 관리자 만 볼 수있는 버튼을 추가하려고했습니다. 사용자가 관리자가 아니면이 버튼이 표시되지 않습니다. 이 기능은 작동하지만 한 번만 수행하면 페이지 당 최대 10 개에 비하면 한 페이지의 데이터 행 만 표시됩니다. 관리자 용 단추를 추가 한 후 페이지 매김이 제대로 작동하지 않습니다.

내 코드입니다 :

  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