2017-07-12 39 views
2

ページングが変更されました。これは、最初/前と次/最後のナビゲーション機能がバージョンにはないためです。ページネーションが壊れているLEFT JOIN

私がそれを変更したのは、ページの下部に30個以上の番号のリンクがあり、醜く見慣れないと思われたからです。

ページ設定は、Webサイト上の2つのセクションを除いて、すべてのマイページで機能します。奇妙なことに、これらの2つのページには、以下のサンプルと同様にLEFT JOINがありますが、違いはデータを表示するためにそれぞれのcategoryIDの選択に依存していることです。以下は

Working Pagination

PHP & MySQL用の新しいコードとコードのためのHTMLのサンプルです。

WORKING PHP & MySQLの

//PAGINATION 
try { 
    $totalPages = $DB->query(" SELECT COUNT(id) as rows 
           FROM art_categories LEFT JOIN articles 
           ON articles.categoryID=art_categories.categoryID 
           WHERE articles.categoryID=art_categories.categoryID 
           AND art_categories.categoryID NOT IN 
            (SELECT categoryID 
            FROM art_categories 
            WHERE categoryID=8) 
           AND articles.publishDate >= DATE_ADD(NOW() , INTERVAL -2 MONTH) 
           AND state = 1") 
       ->fetch(PDO::FETCH_OBJ); 

    $posts = $totalPages->rows; 
    $pages = ceil($posts/$perpage); 

    # default 
    $get_pages = isset($_GET['page']) ? $_GET['page'] : 1; 

    $data = array(

     'options' => array(
      'default' => 1, 
      'min_range' => 1, 
      'max_range' => $pages 
      ) 
    ); 

    $number = trim($get_pages); 
    $number = filter_var($number, FILTER_VALIDATE_INT, $data); 
    $range = $perpage * ($number - 1); 

    $prev = $number - 1; 
    $next = $number + 1; 

    $stmt = $DB->prepare("SELECT * FROM articles WHERE publishDate >= DATE_ADD(NOW() , INTERVAL -2 MONTH) LIMIT :limit, :perpage"); 
    $stmt->bindParam(':perpage', $perpage, PDO::PARAM_INT); 
    $stmt->bindParam(':limit', $range, PDO::PARAM_INT); 
    $stmt->execute(); 

    $result = $stmt->fetchAll(); 

} catch(PDOException $e) { 
    $error = $e->getMessage(); 
} 

WORKING HTML

<ul class="pagination"> 
    <?php 

      if($result && count($result) > 0) 
      { ?> 
      <li <?php if($_GET['page'] >= 2) { echo('class=""'); } else { echo('class="disabled"'); } ?> > 
       <a href="<?php if($_GET['page']==1 || $_GET['page']==0) { echo('#');} else { echo ('index.php?page=1'); } ?>">FIRST</a> 
      </li> 
      <li <?php if(!empty($_GET['page']) && $_GET['page']==1 || $_GET['page']==0) { echo('class="disabled"');} ?>> 
       <a <?php if($_GET['page']==1 || $_GET['page']==0) { echo('class="disabled"');} ?> href="<?php if($_GET['page']==1 || $_GET['page']==0) { echo('#');} else { echo ('index.php?page='. $prev); } ?>">&laquo; PREVIOUS</a> 
      </li> 
      <li class="active"> 
       <a href="index.php?page=<?php echo $get_pages; ?>"><?php echo $get_pages; ?></a> 
      </li> 
      <li <?php if($_GET['page']==$pages) { echo('class="disabled"');} ?>> 
       <a href="<?php if($_GET['page']==$pages) { echo('#');} else { echo ('index.php?page='. $next); } ?>">NEXT &raquo;</a> 
      </li> 
      <li <?php if($_GET['page']==$pages) { echo('class="disabled"');} ?>> 
       <a href="<?php if($_GET['page']==$pages) { echo('#');} else { echo ('index.php?page='. $pages); } ?>">LAST</a> 
      </li> 

    <?php } ?> 
</ul> 

今、すべてはここまでで結構です。カテゴリーと広告主のために他のページで左のLEFT JOINを実行しようとすると、ページネーションは機能しません。

私は次のエラーコードを取得する:

注意:未定義の変数:結果Cで:ライン上の\ wamp64 \ WWW \ Bushvelderの\ categories.php 15

これは、コードの行15であります:私は、これは私も広告主のページのページネーションを修正することができますソート得ればと考えているよう

if($result && count($result) > 0) 

私は、カテゴリーページについては、以下のコードが含まれます。

壊れPHP & MySQLの

$catID = $_GET['categoryID']; 

//PAGINATION 
try { 
    $totalPages = $DB->query(" SELECT COUNT(id) as rows 
           FROM art_categories LEFT JOIN articles 
           ON articles.categoryID=art_categories.categoryID 
           WHERE articles.categoryID={$catID} 
           AND articles.publishDate >= DATE_ADD(NOW() , INTERVAL -2 MONTH) 
           AND state = Publish") 
       ->fetch(PDO::FETCH_OBJ); 

    $posts = $totalPages->rows; 
    $pages = ceil($posts/$perpage); 

    # default 
    $get_pages = isset($_GET['page']) ? $_GET['page'] : 1; 

    $data = array(

     'options' => array(
      'default' => 1, 
      'min_range' => 1, 
      'max_range' => $pages 
      ) 
    ); 

    $number = trim($get_pages); 
    $number = filter_var($number, FILTER_VALIDATE_INT, $data); 
    $range = $perpage * ($number - 1); 

    $prev = $number - 1; 
    $next = $number + 1; 

    $stmt = $DB->prepare(" SELECT * 
          FROM art_categories LEFT JOIN articles 
          ON articles.categoryID=art_categories.categoryID 
          WHERE articles.categoryID={$catID} 
          AND articles.publishDate >= DATE_ADD(NOW() , INTERVAL -2 MONTH) 
          AND state = Publish 
          ORDER BY articles.publishDate DESC LIMIT :limit, :perpage"); 
    $stmt->bindParam(':perpage', $perpage, PDO::PARAM_INT); 
    $stmt->bindParam(':limit', $range, PDO::PARAM_INT); 
    $stmt->execute(); 

    $result = $stmt->fetchAll(); 

} catch(PDOException $e) { 
    $error = $e->getMessage(); 
} 

HTMLコード

<ul class="pagination"> 
    <?php 

     if($result && count($result) > 0) 
     { ?> 
      <li <?php if($_GET['page'] >= 2) { echo('class=""'); } else { echo('class="disabled"'); } ?> > 
       <a href="<?php if($_GET['page']==1 || $_GET['page']==0) { echo('#');} else { echo ('categories.php?categoryID='. $article['categoryID'] . '&amp;page=1'); } ?>">FIRST</a> 
      </li> 
      <li <?php if(!empty($_GET['page']) && $_GET['page']==1 || $_GET['page']==0) { echo('class="disabled"');} ?>> 
       <a <?php if($_GET['page']==1 || $_GET['page']==0) { echo('class="disabled"');} ?> href="<?php if($_GET['page']==1 || $_GET['page']==0) { echo('#');} else { echo ('categories.php?'. $article['categoryID'] . '&amp;page='. $prev); } ?>">&laquo; PREVIOUS</a> 
      </li> 
      <li class="active"> 
       <a href="categories.php?categoryID=<?php echo $article['categoryID']; ?>&amp;page=<?php echo $get_pages; ?>"><?php echo $get_pages; ?></a> 
      </li> 
      <li <?php if($_GET['page']==$pages) { echo('class="disabled"');} ?>> 
       <a href="<?php if($_GET['page']==$pages) { echo('#');} else { echo ('categories.php?'. $article['categoryID'] . '&amp;page='. $next); } ?>">NEXT &raquo;</a> 
      </li> 
      <li <?php if($_GET['page']==$pages) { echo('class="disabled"');} ?>> 
       <a href="<?php if($_GET['page']==$pages) { echo('#');} else { echo ('categories.php?'. $article['categoryID'] . '&amp;page='. $pages); } ?>">LAST</a> 
      </li> 

    <?php } ?> 
</ul> 

私は強く、私は私のMySQLを台無し疑うが、私はどこここから行くするかわかりません。どんな支援も大歓迎です。

これに答える前に私が理解していれば、私は自分の所見を掲載します。


EDIT

わかりましたので、私はLIMITでミスを修正:制限、:perpageが、前述したように、私はまだ15行目でエラーが発生します。

+1

私はあなたがLIMITに何かをバインドしていないと思われます。変数をbindparamに渡す –

+0

LIMITのようなパラメータを渡す必要があります:perpage:limit –

答えて