AjaxとPHPでいいね機能を作りたい
現在、Ajax,PHP,SQLでいいね機能を作っています。jQueryからいいねボタンが押されるのを検知するところまで完成したのですが、情報をPHPに投げて、DBに登録する部分が上手くいきませんでした。ご教授いただければ幸いです。
試したこと
Ajaxの使い方を複数調べ、適用してみた。
jQueryのdata部分の挙動を調べ、検証してみた
postsテーブル の例(id は auto_increment)
id | post_name | like |
---|---|---|
1 | Tom | 0 |
2 | Bob | 0 |
- 投稿内容などは省略
- divというハートマーク(button等ではなくdiv)
- 今回はいいねを消す機能はなく、ただ押したらDBをUPDATEするのみ(likeに1を足す)
- 結果的に、いいね数の表示は不要でDBをUPDATEしたい
- セキュリティ対策は省略しています
indexPHP
1<?php foreach($posts as $row): ?> 2<!--投稿内容などは省略--> 3<div class= "like-button" 4 data-id= "<?php echo $row['id']; ?>" 5 data-like= "<?php echo $row['like']; ?>" > 6</div> 7<?php endforeach; ?>
JavaScript
1//いいねをするAjax 2$(function(){ 3 ボタンを押したとき 4 $('.like-button').on('click',function(){ 5 console.log('ボタンが押されました'); 6 const id = $(this).data('id'); 7 const like = $(this).data('like'); 8 $.ajax({ 9 type: 'POST', 10 url: 'like.php', //post送信を受けとるphpファイル 11 data: {'id':id, 'like':like} 12 }); 13 }); 14});
likePHP
1<?php 2 3if(isset($_SESSION['member'])){ 4 if(isset($_POST['id'], $_POST['like'])){ 5 //投稿テーブルのlikeに1を足す 6 $post=$pdo->prepare('update posts set like=? where id=?'); 7 $post->execute([$_POST['like']+1, $_POST['id']]); 8 } 9}else{ 10 echo 'ログインしてください'; 11}
回答3件
あなたの回答
tips
プレビュー