質問編集履歴
3
質問の内容修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,28 +1,16 @@
|
|
1
|
-
|
1
|
+
検索結果のページング、2ページ以降ができずに悩んでいます。
|
2
2
|
|
3
|
-
|
3
|
+
現状、index.phpで検索した内容をsearch.phpにPOSTして表示しています。
|
4
|
-
|
5
|
-
があれば、検索結果に表示させたいです。
|
6
4
|
|
7
5
|
|
8
6
|
|
9
|
-
|
7
|
+
search.phpの2ページ目以降POSTしていないため、
|
10
8
|
|
11
|
-
|
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
文章誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
◆現状
|
10
10
|
|
11
|
-
|
11
|
+
2ヶ所うまくいかず悩んでいます。
|
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
プログラムの抜けている部分を記述
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
|
|