티스토리 뷰

*데이터의 흐름

php -> jquery -> mysql -> jquery -> php

이전글

좋아요 구현 (2) 테이블 추가, 데이터 불러오기>>

 

PHP - 좋아요 구현 (2) 테이블 셋팅, 데이터 불러오기

테이블 셋팅하기 <?php include "../connect/connect.php"; // 데이터 베이스 연결 $sql = "CREATE TABLE blogLike ("; $sql .= "likeID int(10) unsigned auto_increment,"; $sql .= "memberID int(10) NOT NULL..

ohcodingoh.tistory.com

 

1. blogLike() 함수 정의(jQuery)

jQuery로 blogLike()함수 정의하기

*함수개요

--> 1) php 코드의 변수를 받아옴

--> 2) 변수를 POST 형식으로 likeCheck.php 파일로 전달함

--> 3) likeCheck.php는 받아온 변수로 테이블을 조작하고 반영된 blogLike값을 반환함

--> 4) blogLike()함수는 반환된 blogLike값을 php코드에 반영함

--> 5) youlikeCheck 상태에 따라 3가지 동작(like+1, like-1, 로그인안내)

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
    var youlikeCheck = "<? echo $youlikeCheck;?>" //php변수(youlikeCheck) 불러옴
    function blogLike(){
        var blogID = "<? echo $blogID;?>"
        if(youlikeCheck == false){	//좋아요를 안눌렀으면
            $.ajax({
            type : "POST",	//post형식으로 데이터를 보낸다.  
            url : "likeCheck.php",	//likeCheck.php로
            data : {"blogID": blogID, "check": 1},	//blogID,check변수에 각 데이터를 넣고 전달
            dataType : "json",
            success : function(data){ //위 코드가 성공하면
                $("#like").text("좋아요 : "+data.result); //ID가 like인 태그에 text삽입(위 코드의 결과값 반영)
                youlikeCheck = true;	//youlikeCheck를 true로 변경해서 좋아요 여부 반영
            },
            error : function(request, status, error){ //에러코드
                console.log("request" + request);
                console.log("status" + status);
                console.log("error" + error);
            }
            });
        } else if(youlikeCheck == true){	//좋아요를 눌렀으면
            $.ajax({
            type : "POST",
            url : "likeCheck.php",
            data : {"blogID": blogID, "check": 2},
            dataType : "json",
            success : function(data){ 
                $("#like").text("좋아요 : "+data.result);
                youlikeCheck = false;
            },
            error : function(request, status, error){
                console.log("request" + request);
                console.log("status" + status);
                console.log("error" + error);
            }
            });
        } else if(youlikeCheck == 'logout'){	//로그아웃 상태라면
            alert("로그인을 해야 좋아요를 누를 수 있습니다.");
        } 
    }
</script>

2. likeCheck.php 추가

<?php
    include "../connect/connect.php";	//DB연결
    include "../connect/session.php";	//세션연결

    //변수 설정
    $check = $_POST['check'];	//1: 좋아요 안누름, 2: 좋아요 누름
    $blogID = $_POST['blogID'];	//blogID 저장
    $memberID = $_SESSION['memberID'];	//session에서 회원의 ID 저장

    if($check == 1){	//좋아요 안눌렀으면
    	//해당 글의 blogLike 데이터 업데이트 (좋아요 +1)
        $sql = "UPDATE myBlog SET blogLike = blogLike + 1 WHERE blogID = {$blogID}";
        $connect -> query($sql);

		//blogLike 테이블에 데이터 추가
        $sql = "INSERT INTO blogLike(memberID, blogID) VALUES('$memberID', '$blogID')";
        $connect -> query($sql);
    } else {	//좋아요를 눌렀으면
        //해당 글의 blogLike 데이트 업데이트 (좋아요 -1)
        $sql = "UPDATE myBlog SET blogLike = blogLike - 1 WHERE blogID = {$blogID}";
        $connect -> query($sql);
		
        //blogLike 테이블에 데이터 삭제
        $sql = "DELETE FROM blogLike WHERE memberID = {$memberID} AND blogID = {$blogID}";
        $connect -> query($sql);
    }

	//게시글의 bloglike 데이터 불러오기
    $sql = "SELECT blogLike FROM myBlog WHERE blogID = {$blogID}";
    $result = $connect -> query($sql);
    $bloglike = $result -> fetch_array(MYSQLI_ASSOC);
    $bloglike = $bloglike['blogLike'];

	//결과값으로 bloglike데이터 전달
    echo json_encode(array("result" => $bloglike));
?>

~이상 얕은 지식으로 게시글 좋아요 구현하기 였습니다~

댓글
© 2018 webstoryboy