質問編集履歴
1
コード内容修正しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
コメントに評価
|
1
|
+
<追記しました>コメントに評価項目を追加したが表示されない
|
body
CHANGED
@@ -1,20 +1,17 @@
|
|
1
|
-
|
1
|
+
PHPの教科書を見ながらコメント機能をつけてみたのですが、
|
2
|
-
評価項目も追加しようと思い、
|
2
|
+
評価項目も追加しようと思い、手探りで行ってみました。
|
3
|
+
テーブルに評価のカラムを追加してPHPもカラム名を追記したのですが、
|
3
|
-
|
4
|
+
うまく表示されません。
|
5
|
+
関数についてもよく分かっていない状態なので詳細教えて下さい。
|
4
6
|
|
5
|
-
【
|
7
|
+
【テーブル内容】
|
6
|
-
CREATE TABLE bbs(
|
7
|
-
|
8
|
+

|
8
|
-
name VARCHAR(255) NOT NULL,
|
9
|
-
title VARCHAR(255),
|
10
|
-
body TEXT NOT NULL,
|
11
|
-
date DATETIME NOT NULL
|
12
|
-
)DEFAULT CHARACTER SET=utf8;
|
13
9
|
|
14
10
|
|
15
11
|
【PHP記載内容】
|
16
12
|
|
13
|
+
```
|
17
|
-
|
14
|
+
<?php
|
18
15
|
|
19
16
|
// エラー表示
|
20
17
|
error_reporting(E_ALL);
|
@@ -23,6 +20,7 @@
|
|
23
20
|
// データの受け取り
|
24
21
|
$name = $_POST['name'];
|
25
22
|
$title = $_POST['title'];
|
23
|
+
$star = $_POST['star'];
|
26
24
|
$body = $_POST['body'];
|
27
25
|
|
28
26
|
//必須項目チェック(名前か本文が空ではないか?)
|
@@ -40,14 +38,15 @@
|
|
40
38
|
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
|
41
39
|
//プリペアドステートメント作成
|
42
40
|
$stmt = $db->prepare("
|
43
|
-
INSERT INTO bbs (name, title, body, date )
|
41
|
+
INSERT INTO bbs (name, title, star, body, date )
|
44
|
-
VALUES (:name, :title, :body, now() )"
|
42
|
+
VALUES (:name, :title, :star, :body, now() )"
|
45
43
|
);
|
46
44
|
print_r($db->errorInfo());
|
47
45
|
|
48
46
|
//パラメータを割り当て
|
49
47
|
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
|
50
48
|
$stmt->bindParam(':title', $title, PDO::PARAM_STR);
|
49
|
+
$stmt->bindParam(':star', $star, PDO::PARAM_STR);
|
51
50
|
$stmt->bindParam(':body', $body, PDO::PARAM_STR);
|
52
51
|
|
53
52
|
//クエリの実行
|
@@ -60,49 +59,44 @@
|
|
60
59
|
die ('エラー:' . $e->getMessage());
|
61
60
|
}
|
62
61
|
?>
|
63
|
-
コード
|
64
62
|
```
|
65
|
-
|
66
63
|
【HTML記載内容】
|
67
|
-
```<!doctype html>
|
68
64
|
|
65
|
+
```
|
69
66
|
<?php
|
70
|
-
// 1ページに表示されるコメントの数
|
71
|
-
$num = 3;
|
72
|
-
|
73
|
-
//データベースに接続
|
74
|
-
$dsn = 'mysql:host=localhost;dbname=tabe1;charset=utf8';
|
75
|
-
|
67
|
+
while ($row = $stmt->fetch()):
|
76
|
-
$password = '1111'; //DBパスワード
|
77
|
-
|
78
|
-
//ページ数が指定されているとき
|
79
|
-
$page = 0;
|
80
|
-
|
68
|
+
$title = $row['title'] ? $row['title'] : '(無題)';
|
81
|
-
$page = intval($_GET['page']) -1;
|
82
|
-
}
|
83
|
-
|
84
|
-
try {
|
85
|
-
$db = new PDO($dsn, $user, $password);
|
86
|
-
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
|
87
|
-
//プリペアドステートメントを作成
|
88
|
-
$stmt = $db->prepare(
|
89
|
-
"SELECT * FROM bbs ORDER BY date DESC LIMIT
|
90
|
-
:page, :num"
|
91
|
-
);
|
92
|
-
//パラメータを割り当て
|
93
|
-
$page = $page * $num;
|
94
|
-
$stmt->bindParam(':page', $page, PDO::PARAM_INT);
|
95
|
-
$stmt->bindParam(':num', $num, PDO::PARAM_INT);
|
96
|
-
//クエリの実行
|
97
|
-
$stmt->execute();
|
98
|
-
} catch(PDOException $e){
|
99
|
-
echo "エラー:" . $e->getMessage();
|
100
|
-
}
|
101
|
-
|
102
69
|
?>
|
70
|
+
<p>名前:<?php echo $row['name'] ?></p>
|
71
|
+
<p>タイトル:<?php echo $title ?></p>
|
72
|
+
<p>評価:<?php echo $row['star'] ?></p>
|
73
|
+
<p><?php echo nl2br($row['body'], false) ?></p>
|
74
|
+
<p><?php echo $row['date'] ?></p>
|
75
|
+
<?php
|
76
|
+
endwhile;
|
77
|
+
|
78
|
+
//ページ数の表示
|
103
|
-
|
79
|
+
try {
|
80
|
+
//プリペアドステートメント作成
|
81
|
+
$stmt = $db->prepare("SELECT COUNT(*) FROM bbs");
|
82
|
+
//クエリ
|
83
|
+
$stmt->execute();
|
84
|
+
} catch (PDOException $e){
|
85
|
+
echo "エラー:" . $e->getMessage();
|
86
|
+
}
|
87
|
+
|
88
|
+
//コメントの件数を取得
|
89
|
+
$comments = $stmt->fetchColumn();
|
90
|
+
//ページ数を計算
|
91
|
+
$max_page = ceil($comments / $num);
|
92
|
+
echo '<p>';
|
93
|
+
for ($i = 1; $i <= $max_page; $i++){
|
94
|
+
echo '<a href="CSS41.php?page=' . $i . '">' . $i .
|
95
|
+
'</a> ';
|
96
|
+
}
|
97
|
+
echo '</p>';
|
98
|
+
?>
|
104
99
|
```
|
100
|
+
【WEB画面】
|
105
101
|
|
106
|
-
|
107
|
-
|
108
|
-

|