【概要】
会員登録なしでもお気に入り機能を実装したい
【現状】
お気に入りに追加するボタンを押すことで、お気に入りへの追加はできる。
また、リロード後にもう一度押すとお気に入りから削除もできる。
【問題点】
・お気に入りに追加後、リロードせずにもう一度同じボタンを押すと、
「お気に入りの削除」ではなく、再度「お気に入りへの追加」が起こってしまう。
・お気に入りの削除も同様。
【実現したいこと】
・ページ遷移やリロードせずにお気に入りの追加・削除ができるようにしたい。
【現在のコード】
index.php
(headや細かい点は省略)
php
1<?php 2 session_start(); 3 require_once("config.php"); 4 5 $favorite = explode("/",$_COOKIE["favorite"]); 6?> 7 8<script> 9$(".favborite_btn").find("a").click(function(){ 10 if($(this).hasClass('add_fav')) { 11 $(this).text("お気に入りに追加"); 12 $(this).removeClass('add_fav'); 13 $(this).unbind("click"); 14 } else { 15 $(this).text("お気に入り"); 16 $(this).addClass('add_fav'); 17 $(this).unbind("click"); 18 } 19 }); 20</script> 21 22<div class="favorite_btn"> 23 <?php if(!in_array(1, $favorite)): ?> 24 <a onClick="add_fav(1); ?>); return false;">お気に入りに追加</a> 25 <?php else: ?> 26 <a onClick="remove_fav(1); return false;" class="add_fav">お気に入り</a> 27 <?php endif; ?> 28</div>
javascript
1function add_fav(id){ 2 $.ajax({ 3 type: "POST", 4 url: "add_favorite.php", 5 data: { 6 "id" : id 7 }, 8 success: function(data){ 9 alert("お気に入りに追加しました"); 10 } 11 }); 12} 13function remove_fav(id){ 14 $.ajax({ 15 type: "POST", 16 url: "remove_favorite.php", 17 data: { 18 "id" : id 19 }, 20 success: function(data){ 21 alert("お気に入り削除"); 22 } 23 }); 24}
add_favorite.php
php
1<?php 2require_once("config.php"); 3 4 $favorite = ""; 5 if ( isset($_COOKIE["favorite"]) && isset($_POST["id"]) ) { 6 $favorite .= $_COOKIE["favorite"]; 7 $favorite .= "/" . $_POST["id"]; 8 } else if ( isset($_POST["id"]) ) { 9 $favorite .= $_POST["id"]; 10 } 11 12 setcookie("favorite", $favorite, time() + 60*60*24); 13 14?>
remove_favorite.php
php
1<?php 2session_start(); 3 4 $favorite = explode("/",$_COOKIE["favorite"]); 5 if (count($favorite) > 0) { 6 $idx = 0; 7 foreach ($favorite as $val) { 8 if ($val == $_POST["id"]) { 9 unset($favorite[$idx]); 10 } 11 $idx++; 12 } 13 } 14 $favorite_str = implode("/", $favorite); 15 setcookie("favorite", $favorite_str, time() + 60*60*24); 16 17 18?>
希望する機能を実装するためのコード等をご教授いただけますと幸いです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/19 06:40
2017/09/19 06:52
2017/09/19 06:56
2017/09/19 06:58
2017/09/19 07:01
2017/09/19 07:56
2017/09/19 08:19
2017/09/19 08:23
2017/09/20 12:32