質問編集履歴

3

質問の内容修正

2017/11/05 08:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,28 +1,16 @@
1
- ◆実現したこと
1
+ 検索結果のページング、2ページ以降ができずに悩んでます。
2
2
 
3
- 掲示板で検索機能設けて、投稿された 名前と投稿文 のどちらか検索たワード
3
+ 現状、index.phpで検索した内容search.phpPOSTて表示しています。
4
-
5
- があれば、検索結果に表示させたいです。
6
4
 
7
5
 
8
6
 
9
- ◆現状
7
+ search.phpの2ページ目以降POSTしていないため、
10
8
 
11
- 2ヶ所うまかず悩んでいます。
9
+ 下記のよなエラーが起きてしまいます。
10
+
11
+ どのようにすればエラーが起きずに、実装出来る方法があるのでしょうか?
12
12
 
13
13
 
14
-
15
- ①SQL文の設定
16
-
17
- 検索自体は、問題なく実装出来ていますが、現状入力されたキーワードに
18
-
19
- 一致する名前のみヒットする形になっており、名前と投稿文両方からの検索が出来ていない状況です。
20
-
21
-
22
-
23
- ②検索結果の2ページ目以降のエラー
24
-
25
- 検索結果が、2ページ目以降エラーが出力される
26
14
 
27
15
  ```php
28
16
 
@@ -34,7 +22,11 @@
34
22
 
35
23
  宜しくお願いします!
36
24
 
25
+
26
+
37
27
  ```php
28
+
29
+ //config.php
38
30
 
39
31
  <?php
40
32
 
@@ -50,7 +42,13 @@
50
42
 
51
43
  ```php
52
44
 
45
+
46
+
53
47
  <?php
48
+
49
+ //search.php
50
+
51
+ $key=htmlspecialchars($_POST['key']);
54
52
 
55
53
  require_once('./config.php');
56
54
 
@@ -59,6 +57,8 @@
59
57
  $dbh = new PDO(DSN, USER, PASSWORD);
60
58
 
61
59
  $dbh->query('SET NAMES utf8');
60
+
61
+
62
62
 
63
63
 
64
64
 
@@ -76,11 +76,9 @@
76
76
 
77
77
  $offset = NAME_PER_PAGE * ($page - 1);
78
78
 
79
- $key=htmlspecialchars($_POST['key']);
80
79
 
81
80
 
82
-
83
- $sql = "SELECT * FROM user Where id LIKE '%{$key}%' order by time desc limit ".$offset.",".NAME_PER_PAGE;
81
+ $sql = "SELECT * FROM user Where id LIKE '%{$key}%' or comment LIKE '%{$key}%' order by time desc limit ".$offset.",".NAME_PER_PAGE;
84
82
 
85
83
  $stmt = $dbh->query($sql);
86
84
 
@@ -88,7 +86,7 @@
88
86
 
89
87
 
90
88
 
91
- $total = $dbh->query("select count(*) from user")->fetchColumn();
89
+ $total = $dbh->query("select count(*) from user Where id LIKE '%{$key}%' ")->fetchColumn();
92
90
 
93
91
  $totalPages = ceil($total / NAME_PER_PAGE);
94
92
 
@@ -96,4 +94,40 @@
96
94
 
97
95
 
98
96
 
97
+ //検索結果表示
98
+
99
+
100
+
101
+
102
+
103
+ //前へ 次へ
104
+
105
+ <?php if($page > 1) : ?>
106
+
107
+ <li><a href="?page=<?php echo $page-1; ?>">前へ<span aria-hidden="true">≪</span></a></li>
108
+
109
+ <?php endif; ?>
110
+
111
+
112
+
113
+ <?php for($i = 1; $i <= $totalPages; $i++) : ?>
114
+
115
+ <?php if ($page == $i) : ?>
116
+
117
+ <li class="active"><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li>
118
+
119
+ <?php else: ?>
120
+
121
+ <li><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li>
122
+
123
+ <?php endif; ?>
124
+
125
+ <?php endfor; ?>
126
+
127
+ <?php if($page < $totalPages) : ?>
128
+
129
+ <li><a href="?page=<?php echo $page+1; ?>">次へ<span aria-hidden="true">≫</span></a></li>
130
+
131
+ <?php endif; ?>
132
+
99
133
  ```

2

文章誤字

2017/11/05 08:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ◆現状
10
10
 
11
- ヶ所うまくいかず悩んでいます。
11
+ ヶ所うまくいかず悩んでいます。
12
12
 
13
13
 
14
14
 
@@ -29,14 +29,6 @@
29
29
  Notice: Undefined index: key in C:\xampp\htdocs\bbs\search.php on line 12
30
30
 
31
31
  ```
32
-
33
-
34
-
35
- ③検索結果のページング
36
-
37
- 検索レコードが48件(1ページ16件ずつ表示)あり、検索結果が2件の場合
38
-
39
- 2件だけ正しく表示されるのですが、ページングのページ数が1から3ページまで表示されてしまいます。
40
32
 
41
33
 
42
34
 

1

プログラムの抜けている部分を記述

2017/11/04 07:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  $offset = NAME_PER_PAGE * ($page - 1);
86
86
 
87
-
87
+ $key=htmlspecialchars($_POST['key']);
88
88
 
89
89
 
90
90