teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

いいね機能部分のファイルの追加

2021/05/31 07:13

投稿

hmom
hmom

スコア3

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

データベースの表示をマークダウン記法にしました。

2021/05/31 07:13

投稿

hmom
hmom

スコア3

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
- 5 rows in set (0.01 sec)
70
+ ```
66
71
 
67
72
 
68
73