2015-10-15 141 views
1

嗨我試圖在我的動態頁面上分頁。 我在腳本中使用PDO。我希望包含的分頁腳本是使用mysql,而不是使用PDO,所以我將mysql函數更改爲PDO函數。但我的問題是,與MySQL的腳本工作,並與pdo腳本沒有。如果我用PDO在腳本中單擊下一頁或第2頁,我也會獲得前10個記錄,而且我無法轉到上一頁。而在我的mysql腳本中,它工作得很好!動態頁面上的PHP分頁無法正常工作

我在Stackoverflow和互聯網上搜索了一個解決方案,但我找不到一個,所以有人知道我在做什麼錯?或者我可以如何解決這個問題?

我啓用了錯誤處理。而唯一的錯誤信息,我從與PDO劇本得到的是:

Notice: Undefined index: page on line 22

但是當我點擊下一步我再也不會收到此錯誤信息。

我的劇本與PDO:

<?php 
    include('php/loginHandlerconnect.php'); 

    $db = loginHandlerconnect(); 

    ini_set('display_errors',1); 
    ini_set('display_startup_errors',1); 
    error_reporting(-1); 

    $tableName="vacature";  
    $targetpage = "testpaging3.php"; 
    $limit = 10; 

    $query = "SELECT COUNT(vacatureID) AS num FROM $tableName"; 
    $stmt = $db->prepare($query); 
    $stmt->execute(); 
    $total_pages = $stmt->fetch(PDO::FETCH_ASSOC); 
    $total_pages = $total_pages['num']; 
    var_dump($total_pages); // output: string(2) "11" > after clicking on next: string(2) "11" string(1) "2" 

    $stages = 3; 
    var_dump($_GET['page']); // output: NULL 
    $page = (isset($_GET['page'])); 
    if($page){ 
     $start = ($page - 1) * $limit; 
    }else{ 
     $start = 0; 
    } 

    // Get page data 
    $query1 = "SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT $start, $limit"; 
    $result = $db->prepare($query1); 
    $result->execute(); 
    $results = $result->fetchAll(); 

    // Initial page num setup 
    if ($page == 0){$page = 1;} 
    $prev = $page - 1; 
    $next = $page + 1;       
    $lastpage = ceil($total_pages/$limit);  
    $LastPagem1 = $lastpage - 1;      


    $paginate = ''; 
    if($lastpage > 1) 
    { 
     $paginate .= "<div class='paginate'>"; 
     // Previous 
     if ($page > 1){ 
      $paginate.= "<a href='$targetpage?page=$prev'>previous</a>"; 
     }else{ 
      $paginate.= "<span class='disabled'>previous</span>"; } 

     // Pages  
     if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up 
     { 
      for ($counter = 1; $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page){ 
        $paginate.= "<span class='current'>$counter</span>"; 
       }else{ 
        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
      } 
     } 
     elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few? 
     { 
      // Beginning only hide later pages 
      if($page < 1 + ($stages * 2))  
      { 
       for ($counter = 1; $counter < 4 + ($stages * 2); $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
       } 
       $paginate.= "..."; 
       $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>"; 
       $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
      } 
      // Middle hide some front and some back 
      elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2)) 
      { 
       $paginate.= "<a href='$targetpage?page=1'>1</a>"; 
       $paginate.= "<a href='$targetpage?page=2'>2</a>"; 
       $paginate.= "..."; 
       for ($counter = $page - $stages; $counter <= $page + $stages; $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
       } 
       $paginate.= "..."; 
       $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>"; 
       $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
      } 
      // End only hide early pages 
      else 
      { 
       $paginate.= "<a href='$targetpage?page=1'>1</a>"; 
       $paginate.= "<a href='$targetpage?page=2'>2</a>"; 
       $paginate.= "..."; 
       for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
       } 
      } 
     } 

       // Next 
     if ($page < $counter - 1){ 
      $paginate.= "<a href='$targetpage?page=$next'>next</a>"; 
     }else{ 
      $paginate.= "<span class='disabled'>next</span>"; 
      } 

     $paginate.= "</div>";  


} 
echo $total_pages.' Results'; // output: 11 Results 



     foreach($results as $row) 
     { 
      $date = date("d-m-Y", strtotime($row['datum'])); 
      echo " 
       <div class='vacatureinfo2'> 
        <img class='userimg2' src='../../uploads/userimage/". $row['image'] ."' id='imge'/> 
        <p class='func-br-pl pull-left'>". $row['functie'] ." - ". $row['naamBedrijf'] ." - ". $row['plaats'] ."</p><p class='dtm pull-right'>". $date ."</p> 
        <div class='omschrijvingkort2'> 
         ". $row['omschrijvingKort'] ." 
        </div> 
        <p class='pull-right'><a href='reactie?id=" . $row['vacatureID'] . "'>Reageer</a> | <a href='informatie-vacature?id=" . $row['vacatureID'] . "'>Meer informatie</a></p> 
       </div> 
       <hr>"; 
     } 
// pagination 
echo $paginate; // output: previous12next (previous and 1 are not working after clicking on next or 2) 
?> 

我的腳本與MySQL:

<?php 
    include('connect.php'); 

    ini_set('display_errors',1); 
    ini_set('display_startup_errors',1); 
    error_reporting(-1); 

    $tableName="vacature";  
    $targetpage = "testpaging2.php";  
    $limit = 10; 

    $query = "SELECT COUNT(vacatureID) as num FROM $tableName"; 
    $total_pages = mysql_fetch_array(mysql_query($query)); 
    $total_pages = $total_pages['num']; 
    var_dump($total_pages); // output: string(2) "11" > after clicking on next: string(2) "11" string(1) "2" 

    $stages = 3; 
    var_dump($_GET['page']); // output: NULL 
    $page = mysql_escape_string($_GET['page']); 
    if($page){ 
     $start = ($page - 1) * $limit; 
    }else{ 
     $start = 0; 
    } 

    // Get page data 
    $query1 = "SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT $start, $limit"; 
    $result = mysql_query($query1); 

    // Initial page num setup 
    if ($page == 0){$page = 1;} 
    $prev = $page - 1; 
    $next = $page + 1;       
    $lastpage = ceil($total_pages/$limit);  
    $LastPagem1 = $lastpage - 1;      


    $paginate = ''; 
    if($lastpage > 1) 
    { 
     $paginate .= "<div class='paginate'>"; 
     // Previous 
     if ($page > 1){ 
      $paginate.= "<a href='$targetpage?page=$prev'>previous</a>"; 
     }else{ 
      $paginate.= "<span class='disabled'>previous</span>"; } 

     // Pages  
     if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up 
     { 
      for ($counter = 1; $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page){ 
        $paginate.= "<span class='current'>$counter</span>"; 
       }else{ 
        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
      } 
     } 
     elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few? 
     { 
      // Beginning only hide later pages 
      if($page < 1 + ($stages * 2))  
      { 
       for ($counter = 1; $counter < 4 + ($stages * 2); $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
       } 
       $paginate.= "..."; 
       $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>"; 
       $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
      } 
      // Middle hide some front and some back 
      elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2)) 
      { 
       $paginate.= "<a href='$targetpage?page=1'>1</a>"; 
       $paginate.= "<a href='$targetpage?page=2'>2</a>"; 
       $paginate.= "..."; 
       for ($counter = $page - $stages; $counter <= $page + $stages; $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
       } 
       $paginate.= "..."; 
       $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>"; 
       $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
      } 
      // End only hide early pages 
      else 
      { 
       $paginate.= "<a href='$targetpage?page=1'>1</a>"; 
       $paginate.= "<a href='$targetpage?page=2'>2</a>"; 
       $paginate.= "..."; 
       for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
       } 
      } 
     } 

       // Next 
     if ($page < $counter - 1){ 
      $paginate.= "<a href='$targetpage?page=$next'>next</a>"; 
     }else{ 
      $paginate.= "<span class='disabled'>next</span>"; 
      } 

     $paginate.= "</div>";  


} 
echo $total_pages.' Results'; // output: 11 Results 



     while($row = mysql_fetch_array($result)) 
     { 
     $date = date("d-m-Y", strtotime($row['datum'])); 
     echo " 
      <div class='vacatureinfo2'> 
       <img class='userimg2' src='../../uploads/userimage/". $row['image'] ."' id='imge'/> 
       <p class='func-br-pl pull-left'>". $row['functie'] ." - ". $row['naamBedrijf'] ." - ". $row['plaats'] ."</p><p class='dtm pull-right'>". $date ."</p> 
       <div class='omschrijvingkort2'> 
        ". $row['omschrijvingKort'] ." 
       </div> 
       <p class='pull-right'><a href='reactie?id=" . $row['vacatureID'] . "'>Reageer</a> | <a href='informatie-vacature?id=" . $row['vacatureID'] . "'>Meer informatie</a></p> 
      </div> 
      <hr>"; 

     } 
// pagination 
echo $paginate; // output: previous12next (previous and 1 are working after clicking on next or 2) 
?> 
+0

不幸的是,這種類型的問題是本網站的主題。 –

+0

@YourCommonSense爲什麼它關閉主題?這是一個正常的問題! – Marjolein

+0

哪行是行22,哪裏顯示錯誤? –

回答

0

更改行:

$page = (isset($_GET['page'])); 

以下幾點:

$page = $_GET['page']; 

不是腳本作品!

+2

更像'$ page = isset($ _ GET ['page'])? $ _GET ['page']:1;' – Alfwed

+0

謝謝,這也適用! – Marjolein

2

我想如果這個問題沒有被剛剛在這裏SO回答幾十次是非常驚訝。

首先,這不是一個錯誤,這只是一個通知。這意味着$ _GET數組中沒有'page'元素,但是您想在var_dump($ _ GET ['page'])函數調用中訪問它。

由於此行僅用於調試目的,因此您可以安全地將其註釋掉。如果您第一次加載頁面,那麼頁面參數將不會被設置,所以它不存在就不足爲奇了。

在嘗試在下面的行中使用它之前,應該使用isset()檢查它的存在。

+0

感謝您的關注!但是我找到了解決方案:)(見上面的答案) – Marjolein