質問編集履歴

1

コード内容修正しました。

2018/05/31 11:28

投稿

torinoto7
torinoto7

スコア19

test CHANGED
@@ -1 +1 @@
1
- コメントに評価機能を追加したい
1
+ <追記しました>コメントに評価項目を追加したが表示されな
test CHANGED
@@ -1,26 +1,18 @@
1
- XAMPPのMysql利用してDBを作成し、コメント機能を追加したのですが、
1
+ PHPの教科書見ながらコメント機能をつけてみたのですが、
2
-
2
+
3
- 評価項目も追加しようと思い、どのように追加したら良いのか分かりません
3
+ 評価項目も追加しようと思い、手探りで行ってみました。
4
+
4
-
5
+ テーブルに評価のカラムを追加してPHPもカラム名を追記したのですが、
6
+
5
- 教えて頂きた。宜しくお願いし
7
+ うま表示されせん
8
+
6
-
9
+ 関数についてもよく分かっていない状態なので詳細教えて下さい。
7
-
8
-
10
+
11
+
12
+
9
- DB内容】
13
+ テーブル内容】
10
-
11
- CREATE TABLE bbs(
14
+
12
-
13
- id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
15
+ ![イメージ説明](3183d87a4d589fe1f5d5211e9c772951.png)
14
-
15
- name VARCHAR(255) NOT NULL,
16
-
17
- title VARCHAR(255),
18
-
19
- body TEXT NOT NULL,
20
-
21
- date DATETIME NOT NULL
22
-
23
- )DEFAULT CHARACTER SET=utf8;
24
16
 
25
17
 
26
18
 
@@ -30,7 +22,9 @@
30
22
 
31
23
 
32
24
 
25
+ ```
26
+
33
- ```<?php
27
+ <?php
34
28
 
35
29
 
36
30
 
@@ -48,6 +42,8 @@
48
42
 
49
43
  $title = $_POST['title'];
50
44
 
45
+ $star = $_POST['star'];
46
+
51
47
  $body = $_POST['body'];
52
48
 
53
49
 
@@ -82,9 +78,9 @@
82
78
 
83
79
  $stmt = $db->prepare("
84
80
 
85
- INSERT INTO bbs (name, title, body, date )
81
+ INSERT INTO bbs (name, title, star, body, date )
86
-
82
+
87
- VALUES (:name, :title, :body, now() )"
83
+ VALUES (:name, :title, :star, :body, now() )"
88
84
 
89
85
  );
90
86
 
@@ -98,6 +94,8 @@
98
94
 
99
95
  $stmt->bindParam(':title', $title, PDO::PARAM_STR);
100
96
 
97
+ $stmt->bindParam(':star', $star, PDO::PARAM_STR);
98
+
101
99
  $stmt->bindParam(':body', $body, PDO::PARAM_STR);
102
100
 
103
101
 
@@ -122,94 +120,84 @@
122
120
 
123
121
  ?>
124
122
 
125
- コード
126
-
127
- ```
123
+ ```
128
-
129
-
130
124
 
131
125
  【HTML記載内容】
132
126
 
127
+
128
+
133
- ```<!doctype html>
129
+ ```
134
-
135
-
136
130
 
137
131
  <?php
138
132
 
139
- // 1ページに表示されるコメントの数
140
-
141
- $num = 3;
142
-
143
-
144
-
145
- //データベースに接続
146
-
147
- $dsn = 'mysql:host=localhost;dbname=tabe1;charset=utf8';
148
-
149
- $user = 'tabe1user';
133
+ while ($row = $stmt->fetch()):
150
-
151
- $password = '1111'; //DBパスワード
134
+
152
-
153
-
154
-
155
- //ページ数が指定されているとき
156
-
157
- $page = 0;
158
-
159
- if (isset($_GET['page']) && $_GET['page'] > 0) {
135
+ $title = $row['title'] ? $row['title'] : '(無題)';
160
-
161
- $page = intval($_GET['page']) -1;
162
-
163
- }
164
-
165
-
166
-
167
- try {
168
-
169
- $db = new PDO($dsn, $user, $password);
170
-
171
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
172
-
173
- //プリペアドステートメントを作成
174
-
175
- $stmt = $db->prepare(
176
-
177
- "SELECT * FROM bbs ORDER BY date DESC LIMIT
178
-
179
- :page, :num"
180
-
181
- );
182
-
183
- //パラメータを割り当て
184
-
185
- $page = $page * $num;
186
-
187
- $stmt->bindParam(':page', $page, PDO::PARAM_INT);
188
-
189
- $stmt->bindParam(':num', $num, PDO::PARAM_INT);
190
-
191
- //クエリの実行
192
-
193
- $stmt->execute();
194
-
195
- } catch(PDOException $e){
196
-
197
- echo "エラー:" . $e->getMessage();
198
-
199
- }
200
-
201
-
202
136
 
203
137
  ?>
204
138
 
139
+ <p>名前:<?php echo $row['name'] ?></p>
140
+
141
+ <p>タイトル:<?php echo $title ?></p>
142
+
143
+ <p>評価:<?php echo $row['star'] ?></p>
144
+
145
+ <p><?php echo nl2br($row['body'], false) ?></p>
146
+
147
+ <p><?php echo $row['date'] ?></p>
148
+
149
+ <?php
150
+
151
+ endwhile;
152
+
153
+
154
+
155
+ //ページ数の表示
156
+
205
- コード
157
+ try {
158
+
206
-
159
+ //プリペアドステートメント作成
160
+
161
+ $stmt = $db->prepare("SELECT COUNT(*) FROM bbs");
162
+
163
+ //クエリ
164
+
165
+ $stmt->execute();
166
+
167
+ } catch (PDOException $e){
168
+
169
+ echo "エラー:" . $e->getMessage();
170
+
171
+ }
172
+
173
+
174
+
175
+ //コメントの件数を取得
176
+
177
+ $comments = $stmt->fetchColumn();
178
+
179
+ //ページ数を計算
180
+
181
+ $max_page = ceil($comments / $num);
182
+
183
+ echo '<p>';
184
+
185
+ for ($i = 1; $i <= $max_page; $i++){
186
+
187
+ echo '<a href="CSS41.php?page=' . $i . '">' . $i .
188
+
189
+ '</a>&nbsp;';
190
+
191
+ }
192
+
193
+ echo '</p>';
194
+
195
+ ?>
196
+
207
- ```
197
+ ```
198
+
208
-
199
+ 【WEB画面】
209
-
210
-
211
-
212
-
213
-
214
-
200
+
201
+
202
+
215
- ![イメージ説明](3ebef31ebe949cb4977e19ee3f021dfc.png)
203
+ ![イメージ説明](a569065a0b8ec25e1e81a0ccdd8609a9.png)