前提・実現したいこと
検索フォームに入力した文字と一致するデータをDBから出力し、表示するページを作成しています。
検索を行い一致したデータが5件以上だった場合、
複数ページに分けた表示をを行いたいと思っています。
自力調べ途中まで実行してみたのですが、
上手くいかないのでアドバイスいただきたいと思っています。
<現在の状況>
検索ワードを入力するとデータから5件を抽出して表示し表示することはできています。
<これから実施したいこと>
次へ・前へなどのページ送りを作成し、データを5件づつ表示
次に何をすればよいのか、具体的にどのような処理が足りないのか、教えていただきたいです。
php初心者で手探りで実施している状態なので、わかりやすく教えていただければと思います。
DBはpostgreSQLを使用しています。
※コードは全体だと非常に長いので、関係のありそうな場所だけ抜粋しています。
該当のソースコード
PHP
1//php部分 2session_start(); 3$connect = "host=$P_IP port=$P_PORT dbname=$P_DBNAME user=$P_DBUSER password=$P_DBPASS"; 4 5if (! $con = pg_connect( $connect ) ){ 6 die( 'Postgres接続失敗' ); 7 } 8$KEY = $_POST['word']; 9$KEY1 = $_POST['word1']; 10$KEY2 = $_POST['word2']; 11$KEY3 = $_POST['word3']; 12 13if($_SERVER["REQUEST_METHOD"] === "POST"){ 14 $_SESSION['word'] = $_POST['word']; 15 $_SESSION['word1'] = $_POST['word1']; 16 $_SESSION['word2'] = $_POST['word2']; 17 $_SESSION['word3'] = $_POST['word3']; 18} 19 20 21 22$word3 = ""; 23if(array_key_exists("word3",$_SESSION) && !empty($_SESSION["word3"])){ 24 $word3 = $_SESSION['word3']; 25} 26$where = ""; 27if(count($where_list) > 0){ 28 $where = " where ".implode(" and ",$where_list); 29} 30$sql = "SELECT * FROM theme ".$where; 31$result = pg_query($con,$sql); 32 33if (!isset($_GET['page'])) { 34 $page = 1; // 最初のアクセス 35} else { 36 $page = intval($_GET['page']); // ページ指定でのアクセス 37 if ($page == 0 ) { die('page no error'); } 38} 39 40$offset = ($page-1) * 5; 41 42$result = pg_query($con, "SELECT * FROM theme WHERE(theme_ans LIKE '%{$KEY3}%') OR (theme_que LIKE '%{$KEY3}%')limit 5 offset $offset"); 43 44 45 //html部分 46 47 <form method="post" action='<?= $PHP_SELF ?>'> 48 <p1>製品種別</p1> 49 <select class="soft_select" name="word1"> 50 <option value="0" name="word1" >0.全て</option> 51 <option value="1" name="word1" >1.</option> 52 <option value="2" name="word1" > 2.</option> 53 <option value="3" name="word1" >3.</option> 54 <option value="3" name="word1" >4.</option> 55 56 </select> 57 <p1>質問種別</p1> 58 <select class="type_select" name="word2"> 59 <option value="0" name="word2" >0.全て</option> 60 <option value="1" name="word2" >1.</option> 61 <option value="2" name="word2" > 2.</option> 62 <option value="3" name="word2" >3.</option> 63 <option value="4" name="word2" >4.</option> 64 <option value="5" name="word2" >5.</option> 65 </select> <p1>ワード</p1> 66 67 68 <input type="text" name="word3" id=""> 69 <input type="submit" value="検索"> 70 </form> 71 <p><a href="user669.php?page=<?php echo ($page + 1); ?>&<?php echo $word3;?>"action='<?= $PHP_SELF ?>';>next</a></p> 72 <p><a href="user669.php?page=<?php echo ($page - 1); ?>&<?php echo $word3;?>">back</a></p> 73 </div> 74 75 76 77<table> 78 <tr> 79 <th class="type_q">製品種別</th> 80 <th class="contents">質問種別</th> 81 <th class="question">問い合わせ内容</th> 82 <th class="answer">回答</th> 83 </tr> 84 85 <?php 86 if (empty($KEY3)) { } else { 87 for ($i = 0 ; $i < pg_num_rows($result) ; $i++){ 88 $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC); 89 print '<tr>'; 90 print'<th class="type_q">'.($rows['type_que']).'</th>'; 91 print'<th class="contents">'.($rows['theme_id']).'</th>'; 92 print'<th class="question">'.($rows['theme_que']).'</th>'; 93 print'<th>'.($rows['theme_ans']).'</th>'; 94 print '</tr>'; 95 } 96 } 97?></table> 98
回答2件
あなたの回答
tips
プレビュー