###検索結果のパラメータ(クエリ)を保存したままページネーションを実装したい
いつもお世話になっております。
今回も、もし宜しければよろしくお願い致します。
検索結果をページネーションしたいのですが、日付の検索結果を上手くひきつづことができません。
どうかご教授いただけますと幸いです。
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で
こちらがページネーションを押した際のURLになりますが、変数が消えてしまっておりまして、これがなぜだか分かりません。
どなたか、ご教授いただけますと幸いです。
何卒、よろしくお願い致します。
あなたの回答
tips
プレビュー