質問編集履歴
2
いいね機能部分のファイルの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -193,4 +193,80 @@
|
|
193
193
|
<?php } ?>
|
194
194
|
</section>
|
195
195
|
</div>
|
196
|
+
```
|
197
|
+
|
198
|
+
### ajax.php
|
199
|
+
```
|
200
|
+
<?php
|
201
|
+
session_start();
|
202
|
+
|
203
|
+
require_once 'function.php';
|
204
|
+
|
205
|
+
// postがある場合
|
206
|
+
if(isset($_POST['postId'])){
|
207
|
+
$p_id = $_POST['postId'];
|
208
|
+
|
209
|
+
try{
|
210
|
+
//DB接続
|
211
|
+
$dbh = dbConnect();
|
212
|
+
// Likesテーブルから投稿IDとユーザーIDが一致したレコードを取得するSQL文
|
213
|
+
$sql = 'SELECT * FROM Likes WHERE post_id = :p_id AND member_id = :u_id';
|
214
|
+
$data = array(':p_id' => $p_id, 'u_id' => $_SESSION['member_id']);
|
215
|
+
// クエリ実行
|
216
|
+
$stmt = queryPost($dbh, $sql, $data);
|
217
|
+
$resultCount = $stmt->rowCount();
|
218
|
+
// レコードが1件でもある場合
|
219
|
+
if(!empty($resultCount)){
|
220
|
+
// レコードを削除する
|
221
|
+
$sql = 'DELETE FROM Likes WHERE post_id = :p_id AND member_id = :u_id';
|
222
|
+
$data = array(':p_id' => $p_id, ':u_id' => $_SESSION['member_id']);
|
223
|
+
// クエリ実行
|
224
|
+
$stmt = queryPost($dbh, $sql, $data);
|
225
|
+
echo count(getGood($p_id));
|
226
|
+
}else{
|
227
|
+
// レコードを挿入する
|
228
|
+
$sql = 'INSERT INTO Likes (post_id, member_id, like_created_at) VALUES (:p_id, :u_id, :date)';
|
229
|
+
$data = array(':p_id' => $p_id, ':u_id' => $_SESSION['member_id'], ':date' => date('Y-m-d H:i:s'));
|
230
|
+
// クエリ実行
|
231
|
+
$stmt = queryPost($dbh, $sql, $data);
|
232
|
+
echo count(getGood($p_id));
|
233
|
+
var_dump(count(getGood($p_id)));
|
234
|
+
}
|
235
|
+
}catch(Exception $e){
|
236
|
+
error_log('エラー発生:'.$e->getMessage());
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
240
|
+
?>
|
241
|
+
```
|
242
|
+
### likes_test.js
|
243
|
+
```
|
244
|
+
$(function(){
|
245
|
+
var $good = $('.btn-good'), //いいねボタンセレクタ
|
246
|
+
goodPostId; //投稿ID
|
247
|
+
$good.on('click',function(e){
|
248
|
+
e.stopPropagation();
|
249
|
+
var $this = $(this);
|
250
|
+
//カスタム属性(postid)に格納された投稿ID取得
|
251
|
+
goodPostId = $this.parents('.post').data('postid');
|
252
|
+
$.ajax({
|
253
|
+
type: 'POST',
|
254
|
+
url: 'Likes/ajax.php', //post送信を受けとるphpファイル
|
255
|
+
data: { postId: goodPostId} //{キー:投稿ID}
|
256
|
+
}).done(function(data){
|
257
|
+
console.log('Ajax Success');
|
258
|
+
|
259
|
+
// いいねの総数を表示
|
260
|
+
$this.children('span').html(data);
|
261
|
+
// いいね取り消しのスタイル
|
262
|
+
$this.children('i').toggleClass('far'); //空洞ハート
|
263
|
+
// いいね押した時のスタイル
|
264
|
+
$this.children('i').toggleClass('fas'); //塗りつぶしハート
|
265
|
+
$this.children('i').toggleClass('active');
|
266
|
+
$this.toggleClass('active');
|
267
|
+
}).fail(function(msg) {
|
268
|
+
console.log('Ajax Error');
|
269
|
+
});
|
270
|
+
});
|
271
|
+
});
|
196
272
|
```
|
1
データベースの表示をマークダウン記法にしました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,6 +29,7 @@
|
|
29
29
|
###テーブル構造とカラム
|
30
30
|
テーブル構造
|
31
31
|
テーブル Members
|
32
|
+
```
|
32
33
|
+-------------------+--------------+------+-----+-------------------+-----------------------------------------------+
|
33
34
|
| Field | Type | Null | Key | Default | Extra |
|
34
35
|
+-------------------+--------------+------+-----+-------------------+-----------------------------------------------+
|
@@ -40,8 +41,10 @@
|
|
40
41
|
| member_created_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
|
41
42
|
| member_update_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
|
42
43
|
+-------------------+--------------+------+-----+-------------------+-----------------------------------------------+
|
44
|
+
```
|
43
45
|
|
44
46
|
テーブル Post
|
47
|
+
```
|
45
48
|
+-----------+--------------+------+-----+-------------------+-------------------+
|
46
49
|
| Field | Type | Null | Key | Default | Extra |
|
47
50
|
+-----------+--------------+------+-----+-------------------+-------------------+
|
@@ -51,7 +54,9 @@
|
|
51
54
|
| post_date | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
|
52
55
|
+-----------+--------------+------+-----+-------------------+-------------------+
|
53
56
|
|
57
|
+
```
|
54
58
|
テーブル Likes
|
59
|
+
```
|
55
60
|
|
56
61
|
+-----------------+----------+------+-----+-------------------+-----------------------------------------------+
|
57
62
|
| Field | Type | Null | Key | Default | Extra |
|
@@ -62,7 +67,7 @@
|
|
62
67
|
| like_created_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
|
63
68
|
| like_update_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
|
64
69
|
+-----------------+----------+------+-----+-------------------+-----------------------------------------------+
|
65
|
-
|
70
|
+
```
|
66
71
|
|
67
72
|
|
68
73
|
|