質問編集履歴

1

文章の変更、質問事項の明確化(また修正します。とりいそぎ。)

2020/10/06 16:53

投稿

unkochon
unkochon

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,38 +1,20 @@
1
1
  初心者で、掲示板を作っています。
2
2
 
3
- paginationを組み込みたく、コードを入れましたが、現在のコードとの兼ね合いがわかりません
3
+ paginationを組み込みたく、コードを入れました。
4
4
 
5
- SQLに保存しデータを取り出すコードがあり、これをリミットで10ページずつにしたいのですが、どう組み込んでいいか分かりません。
5
+ 存のコードでも、SQLに保存しデータを取り出すコード
6
6
 
7
+ ```PHP
7
8
 
8
-
9
- 教えてもらえたら幸いです。
10
-
11
-
12
-
13
-
14
-
15
- ```php
16
-
17
-
18
-
19
- // DB接続
9
+ //一行ずつデータを取り出して配列に入れる
20
-
21
- $pdo = new PDO(DSN, DB_USER, DB_PASS);
22
-
23
- $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
24
-
25
- $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
26
-
27
-
28
10
 
29
11
  // SQL実行
30
12
 
31
- $sql = "SELECT * FROM board.user_completeinfo where Email = ?";
13
+ $sql = "select * from board.message AS M INNER JOIN board.User_CompleteInfo AS UCI ON M.userid = UCI.User_ID WHERE M.parentmessageid is null";
32
14
 
33
15
  $stmt = $pdo->prepare($sql);
34
16
 
35
- $stmt->execute([$_SESSION['Email']]);
17
+ $stmt->execute();
36
18
 
37
19
 
38
20
 
@@ -40,117 +22,13 @@
40
22
 
41
23
  $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
42
24
 
43
- //var_dump($result);
44
-
45
- } catch (Exception $e) {
46
-
47
- echo "<p>DB接続エラー</p>";
48
-
49
- echo $e->getMessage();
50
-
51
- exit();
52
-
53
- }
54
-
55
- ?>
25
+ ```
56
26
 
57
27
 
58
28
 
59
- <!--最初の表示部分-->
29
+ paginationでも、SQLに保存しデータを取り出すコード
60
30
 
61
- <?php foreach ($result as $row) {?>
62
-
63
-
64
-
65
- <td><?php echo $row['Username']; ?></td>
66
-
67
- <td><?php echo ';'; ?></td>
68
-
69
- <td><?php echo '<img src="data:image/png;base64,'.base64_encode( $row['User_Genderimg'] ).'" width=20px />'; ?></td>
70
-
71
- <td><?php echo '<img src="data:image/png;base64,'.base64_encode( $row['User_Countryimg'] ).'" width=30px />'; ?></td>
72
-
73
- <td><?php echo '×'; ?></td>
74
-
75
- <td><?php echo '<img src="data:image/png;base64,'.base64_encode( $row['Partner_Genderimg'] ).'" width=20px />'; ?></td>
76
-
77
- <td><?php echo '<img src="data:image/png;base64,'.base64_encode( $row['Partner_Countryimg'] ).'" width=30px />'; ?></td>
78
-
79
- <td><?php echo '<img src="data:image/png;base64,'.base64_encode( $row['User_DistanceImg'] ).'" width=70px />'; ?></td>
80
-
81
- <td><?php /*echo $row['User_LivingName']; */?></td>
82
-
83
-
84
-
85
- <input type="hidden" name="userid" value="<?php echo $row['User_ID']; ?>">
86
-
87
- <?php } ?><br />
88
-
89
- <textarea name="title" class="title" placeholder="タイトル"></textarea> <br />
90
-
91
- <textarea name="message" class="message"></textarea><br />
92
-
93
- <input type="submit" name="send_message" value="投稿" class="submit">
94
-
95
- </form>
96
-
97
-
98
-
99
- <?php
31
+ ```PHP
100
-
101
- //エスケープする関数
102
-
103
- function h($s){
104
-
105
- return htmlspecialchars($s,ENT_QUOTES,'UTF-8');
106
-
107
- }
108
-
109
-
110
-
111
- //name="send_message"のPOST送信があった時
112
-
113
- if(isset($_POST["send_message"])){
114
-
115
- //送信されたname="message"とname="user_name"の値を取得する
116
-
117
- $message = trim($_POST['message']);
118
-
119
- $title = trim($_POST['title']);
120
-
121
-
122
-
123
- //messageが空じゃなかったら
124
-
125
- if(!empty($message)){
126
-
127
- //My sql
128
-
129
- $stmt = $pdo->prepare("insert into message(bbsid,userid,title,message) values(?, ?, ?, ?)");
130
-
131
- $stmt->execute([1, $_POST['userid'], $title , $message]);
132
-
133
- }
134
-
135
-
136
-
137
- //pagination
138
-
139
- if (isset($_GET['pageno'])) {
140
-
141
- $pageno = $_GET['pageno'];
142
-
143
- } else {
144
-
145
- $pageno = 1;
146
-
147
- }
148
-
149
- $no_of_records_per_page = 10;
150
-
151
- $offset = ($pageno-1) * $no_of_records_per_page;
152
-
153
-
154
32
 
155
33
  $total_pages_sql = "SELECT COUNT(*) FROM board.message";
156
34
 
@@ -168,36 +46,14 @@
168
46
 
169
47
  while($row = mysqli_fetch_array($res_data)){
170
48
 
171
- //here goes the data
172
-
173
- }
49
+ ```
174
-
175
- mysqli_close($conn);
176
50
 
177
51
 
178
52
 
179
- }
53
+ が混在しているため、機能しないものと思われます。
180
54
 
181
55
 
182
56
 
57
+ 既存のコードにLIMITをつける構成なのか、
183
58
 
184
-
185
- //一行ずつデータを取り出して配列に入れる
59
+ paginationはこれだけでSQLからデータを取り出すべきか分かりません。
186
-
187
- // SQL実行
188
-
189
- $sql = "select * from board.message AS M INNER JOIN board.User_CompleteInfo AS UCI ON M.userid = UCI.User_ID WHERE M.parentmessageid is null";
190
-
191
- $stmt = $pdo->prepare($sql);
192
-
193
- $stmt->execute();
194
-
195
-
196
-
197
- // 結果の取得
198
-
199
- $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
200
-
201
- ?>
202
-
203
- ```