質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1190閲覧

PDOをページングして表示した時に、PDOから得たデータが空になります

co_cca

総合スコア8

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/11/07 13:26

編集2020/11/08 10:41

データベースに入っている画像をページャーを使って表示する時に2ページ目以降が表示されません。

もともと表示されていたのですが、wordpressの自サイトでの記事内画像のページングができないことに気づき、wordpress外でページを作ってテストしたところそこでも表示されなかったため、PHPの処理での問題ではないかと思っています。

データベースの画像はwordpressによって作られたテーブルではなく、同DB内に作った別のテーブルで管理しています。

PDOクラスを使って$sttに入れたデータが2ページ目に行くと空になってしまっています。
空にならずに2ページ目以降でもデータを表示させるためにはどのようにすれば良いでしょうか?

また、サーバやなにかのコンフィグが悪さをしてできていないということもありますでしょうか?

追記
wordpress外環境でのテストはPOSTでidを取得していたものが2ページ目に移行する際にPOSTしていなかったため、2ページ目以降が表示されていませんでした。

PHP

1<!DOCTYPE html> 2 3<head> 4 <meta charset="UTF-8"> 5</head> 6 7<body> 8 <?php 9 10 if (isset($_GET['page'])) { 11 $page = (int)$_GET['page']; 12 } else { 13 $page = 1; 14 } 15 16 if ($page > 1) { 17 $start = ($page * 33) - 33; 18 } else { 19 $start = 0; 20 } 21 22 $id = **********; 23 24 25 // PDOの接続 26 try { 27 $db = new PDO('mysql:host=localhost;*******;charset=utf8mb4', '*******', '*******'); 28 } catch (PDOException $e) { 29 die('エラーメッセージ:' . $e->getMessage()); 30 } 31 32 $stt = $db->prepare("SELECT * FROM table_name WHERE user_number_id = :user_number_id ORDER BY upload_date desc LIMIT {$start}, 33"); 33 $stt->bindValue(':user_number_id', $id, PDO::PARAM_STR); 34 $stt->execute(); 35 36 37 // 取得したデータを出力 38 foreach ($stt as $value) { 39 echo "<img src=\"" , $value["photos_url"] , ":small\">"; 40 } 41 42 43 //テーブルのpublish総データ件数を取得する 44 $page_num = $db->query("SELECT COUNT(*) FROM table_name WHERE user_number_id = $id"); 45 46 $page_num = $page_num->fetchColumn(); 47 48 //総ページの計算 49 $pagination = ceil($page_num / 33); 50 51 52 //ページネーション 53 $X = 0; 54 for ($x = $page; $x <= $pagination; ++$x) { 55 //現在のページより前の数字を表示 56 if ($page >= 2) { 57 //prevを表示 58 echo "<a href = \"?page=" , ($x - 1) , "\">"; 59 echo "Prev"; 60 echo "</a>"; 61 $i = 0; 62 for ($y = $page - 4; $y < $page; ++$y) { 63 if ($y > 0) { 64 if ($i < 2) { 65 echo "<a href = \"?page=" , $y , "\">"; 66 echo $y; 67 echo "</a>"; 68 ++$i; 69 } else { 70 echo "<a href = \"?page=" , $y , "\">"; 71 echo $y; 72 echo "</a>"; 73 } 74 } 75 } 76 } 77 //4つ次まで表示 78 if ($x <= $page + 3 && $x != 0) { 79 //現在のページ 80 if ($x == $page) { 81 echo "<div>" , $x , "</div>"; 82 $z = $x; 83 } 84 if ($x != $pagination) { 85 if ($j < 2) { 86 echo "<a href = \"?page=" , ($x + 1) , "\">"; 87 echo $x + 1; 88 echo "</a>"; 89 ++$j; 90 } else { 91 echo "<a href = \"?page=" , ($x + 1) , "\">"; 92 echo $x + 1; 93 echo "</a>"; 94 } 95 } 96 } 97 } 98 $x--; 99 //next表示 100 //LAST表示 101 if ($page != $pagination) { 102 echo "<a href = \"?page=" , ($z + 1) , "\">"; 103 echo "Next"; 104 echo "</a>"; 105 echo "<a href = \"?page=" , $x , "\">"; 106 echo "LAST"; 107 echo "</a>"; 108 } 109?> 110</body> 111 112 113</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/08 00:13

WordPress を使用しているのであれば、お作法に沿った DB 操作をする方が良いです。全体を書き直してみては?
co_cca

2020/11/08 03:50

WordPressを使用している場合のDB操作は調べたところwpdbクラスなどのようですが、これはWordPressによって作られたテーブルを操作するものですよね? 同じDB内に自分で作ったテーブルを操作する場合のやり方や作法はどのように検索すれば良いでしょうか?
m.ts10806

2020/11/08 05:21

GETとかPOSTとかもそうですけど、WordPressサイト内で提供している機能を自力で実装してしまうと、そもそもWordPressの管理外となるので整合性保てなくなるのでは。
guest

回答1

0

自己解決

WordPressの直近のアップデートと、ページングができなくなったであろう日付が近かったため、WordPressのダウングレードを行ったらページングができる様になりました。

投稿2020/11/08 11:29

co_cca

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問