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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

0回答

1349閲覧

検索結果のページネーションの実装について

tech_first

総合スコア13

PDO

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2020/04/30 12:08

編集2022/01/12 10:55

###検索結果のパラメータ(クエリ)を保存したままページネーションを実装したい

いつもお世話になっております。
今回も、もし宜しければよろしくお願い致します。

検索結果をページネーションしたいのですが、日付の検索結果を上手くひきつづことができません。
どうかご教授いただけますと幸いです。

phpバージョン 7.3.9
DB mariadb

###できていること

・titleカラム(テキスト)での検索とページネーション
・日付の検索結果の表示(ページネーションのリンク先だけができない)

###該当のソースコード

php

1 2<?php 3 4 define('MAX', '10'); 5 6 $db = new PDO('mysql:dbname=test_db;host=localhost', 'root', ''); 7 8 if($_GET['name'] ) { 9 $stmt = $db->prepare(" 10 SELECT id, title , day 11 FROM news 12 WHERE title LIKE ? 13 ORDER BY id DESC 14 "); 15 $stmt->bindValue(1,"%".$_GET['name']."%"); 16     //検索条件で条件分岐させています。 17 }elseif($_GET['dayStart'] && $_GET['dayEnd']){ 18 $stmt = $db->prepare(" 19 SELECT id, title , day 20 FROM news 21 WHERE day BETWEEN ? AND ? 22 ORDER BY id DESC 23 "); 24 $stmt->bindValue(1, $_GET['dayStart'], PDO::PARAM_STR); 25 $stmt->bindValue(2, $_GET['dayEnd'], PDO::PARAM_STR); 26 27 } else { 28 $stmt = $db->prepare(" 29 SELECT id, title , day 30 FROM news 31 ORDER BY id DESC"); 32 } 33 34 $stmt->execute(); 35 $news = $stmt->fetchAll(PDO::FETCH_ASSOC); 36 37 // トータルデータ件数を取得 38 $news_num = count($news); 39 $max_page = ceil($news_num / MAX); 40 41 if(!isset($_GET['page_id'])){ // 42 $now = 1; // 43 }else{ 44 $now = $_GET['page_id']; 45 } 46 47 $start_no = ($now - 1) * MAX; // 48 49 $disp_data = array_slice($news, $start_no, MAX, true); 50 ?> 51 <div id="result"> 52 <table> 53 <tr> 54 <th>ID</th> <th>タイトル</th> <th>表示時間</th> <th>編集</th> <th>削除</th> 55 </tr> 56 <?php foreach ($disp_data as $value) {?> 57 <tr> 58 <td><?php echo $value['id'] ?></td> 59 <td><?php echo $value['title'] ?></td> 60 <td><?php echo date('Y年m月d日', strtotime($value['day'])) ?></td> 61 <td><a href="http://iwaki.icoma.jp/edit_news.php?id=<?php echo $value['id'] ?>">編集<a></td> 62 <td><a href="http://iwaki.icoma.jp/delete_news.php?id=<?php echo $value['id'] ?>">削除<a></td> 63 </tr> 64 <?php } ?> 65 </table> 66 <?php $name = $_GET["name"]; ?> 67 <?php $year1 = $_GET["year1"]; ?> 68 <?php $month1 = $_GET["month1"]; ?> 69 <?php $date1 = $_GET["date1"]; ?> 70 <?php $year = $_GET["year"]; ?> 71 <?php $month = $_GET["month"]; ?> 72 <?php $date = $_GET["date"]; ?> 73 <?php $dayStart = $_GET['year1'].'-'. $_GET['month1'].'-'. $_GET['date1']; ?> 74 <?php $dayEnd = $_GET['year'].'-'. $_GET['month'].'-'. $_GET['date']; ?> 75 76 <?php 77 if($now > 1){ //こららのURLが上手く実装できずに困っております。 78 echo '<a href=/build_news.php?page_id='.($now - 1).'&name='.$name.'&year1='.$year1.'&month1='.$month1.'&date1='.$date1.'&year='.$year.'&month='.$month.'&date='.$date.'$dayStart='.$dayStart.'&dayEnd='.$dayEnd.'>前へ</a>'. ' '; 79 80 } else { 81 echo '前へ'. ' '; 82 } 83 84 for($i = 1; $i <= $max_page; $i++){ 85 if ($i == $now) { 86 echo $now. ' '; 87 } else { 88 echo '<a href=/build_news.php?page_id='. $i.'&name='.$name.'&year1='.$year1.'&month1='.$month1.'&date1='.$date1.'&year='.$year.'&month='.$month.'&date='.$date.'$dayStart='.$dayStart.'&dayEnd'.$dayEnd.'>'. $i. '</a>'. ' '; 89 } 90 } 91 92 if($now < $max_page){ 93 echo '<a href=/build_news.php?page_id='.($now + 1).'&name='.$name.'&year1='.$year1.'&month1='.$month1.'&date1='.$date1.'&year='.$year.'&month='.$month.'&date='.$date.'$dayStart='.$dayStart.'&dayEnd'.$dayEnd.'>次へ</a>'; 94 } else { 95 echo '次へ'; 96 } 97 ?> 98 </div>

###細かく説明いたします

結論から言うと

php

1 echo '<a href=/build_news.php?page_id='. $i.'&name='.$name.'&year1='.$year1.'&month1='.$month1.'&date1='.$date1.'&year='.$year.'&month='.$month.'&date='.$date.'$dayStart='.$dayStart.'&dayEnd'.$dayEnd.'>'. $i. '</a>'. ' '; 2

このリンク先が上手く遷移せずに困っています。

http:/URL/build_news.php?year1=&month1=&date1=&year=&month=&date=&name=&dayStart=1920-01-01&dayEnd=1922-02-02

こちらが検索した後のURLで

http://URL/build_news.php?page_id=2&name=&year1=&month1=&date1=&year=&month=&date=$dayStart=--&dayEnd--

こちらがページネーションを押した際のURLになりますが、変数が消えてしまっておりまして、これがなぜだか分かりません。

どなたか、ご教授いただけますと幸いです。
何卒、よろしくお願い致します。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問