ページングが変更されました。これは、最初/前と次/最後のナビゲーション機能がバージョンにはないためです。ページネーションが壊れているLEFT JOIN
私がそれを変更したのは、ページの下部に30個以上の番号のリンクがあり、醜く見慣れないと思われたからです。
ページ設定は、Webサイト上の2つのセクションを除いて、すべてのマイページで機能します。奇妙なことに、これらの2つのページには、以下のサンプルと同様にLEFT JOINがありますが、違いはデータを表示するためにそれぞれのcategoryIDの選択に依存していることです。以下は
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); } ?>">« 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 »</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'] . '&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'] . '&page='. $prev); } ?>">« PREVIOUS</a>
</li>
<li class="active">
<a href="categories.php?categoryID=<?php echo $article['categoryID']; ?>&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'] . '&page='. $next); } ?>">NEXT »</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'] . '&page='. $pages); } ?>">LAST</a>
</li>
<?php } ?>
</ul>
私は強く、私は私のMySQLを台無し疑うが、私はどこここから行くするかわかりません。どんな支援も大歓迎です。
これに答える前に私が理解していれば、私は自分の所見を掲載します。
EDIT
わかりましたので、私はLIMITでミスを修正:制限、:perpageが、前述したように、私はまだ15行目でエラーが発生します。
私はあなたがLIMITに何かをバインドしていないと思われます。変数をbindparamに渡す –
LIMITのようなパラメータを渡す必要があります:perpage:limit –