>

사용자가 동영상을 평가할 수 있도록 좋아요/싫어요 시스템을 만들려고합니다. 그러나 한동안 문제가 발생했습니다. 클릭하면 like 버튼이 MySQL 테이블을 업데이트하지 않습니다.

<?php
session_start();
include "config.php";
if( !empty( $_GET['$v_id'] ) ){
    $vid = $_SESSION['v_id'] = $_GET['$v_id'];
 $sql='SELECT video_name FROM video WHERE v_id=?';
    $stmt=$link->prepare( $sql );
    $stmt->bind_param('i', $vid );
    $res=$stmt->execute();
    if( $res ){
        $stmt->store_result();
        $stmt->bind_result( $videoname );
        $stmt->fetch();
        printf('
            <video width="70%%" height="70%%" style="background-color:#585858; border: 4px solid darkorange; border-radius:20px;" controls>
                <source src="uploads/%s" type="video/mp4" id="vid">
            </video>
        ', $videoname );
    }
} else {
    exit('missing ID');
}
$likeQuery = mysqli_query($link, "SELECT likes FROM video WHERE v_id='$vid'");
$likeCount = 0;
$func = <<<EOD
<script type="text/javascript">
function like(event){
alert( '$likeCount' = 1 );
}
function dislike(event){
    alert( '$likeCount' = -1 );
}
</script>
EOD;
if($likeCount == 1){
 mysqli_query($link, "UPDATE video SET likes = likes + 1 
            WHERE (v_id = '$vid')");} elseif($likeCount == -1){
mysqli_query($link, "UPDATE video SET likes = likes - 1 
            WHERE (v_id = '$vid')");}
?>

<br>
<a href="#" onclick="like(event)"><img src="imageStoring/like.png" style="height:30px;" /></a>
<img src="imageStoring/dislike.png" style="height:30px;"/>

문제를 일으키는 지 확실하지 않기 때문에 동영상을 표시하는 코드를 추가했습니다.

아래는 mySQL 코드입니다.

CREATE TABLE video(
v_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
video_name VARCHAR(225) NOT NULL,
id INT NOT NULL,
FOREIGN KEY user_id(id)
REFERENCES users(id)
ON DELETE CASCADE,
n_views INT,
likes INT,
dislikes INT,
image_name VARCHAR(225) NOT NILL
);

이전에 사용하여 편집을 시도했습니다

href="<?php echo $_SERVER['PHP_SELF'] ?>"

그러나 계속 '누락 된 ID'를 받고 있습니다.


  • 답변 # 1

    좋아요 버튼을 클릭하면 이미 클라이언트 브라우저에로드 된 자바 스크립트를 통해 발생합니다.

    PHP 구문 분석은 서버 측에서 클라이언트 브라우저에 도달하기 전에 발생합니다.

    필요한 등록 된 사용자로부터 유효한 요청을 수신하기 위해 PHP 서버에 경로가 있어야합니다.

    POST localhost/api/video/rating/:vote
    
    

    "vote"매개 변수가 정수 값인 경우

    해당 경로의 PHP 측에서 매개 변수 값을 구문 분석하고 테이블에 연결 한 다음 동영상의 총 투표를 업데이트하고 성공 상태를 반환합니다.

    자바 스크립트의 프론트 엔드에서 코드를 다음과 같이 변경하십시오.

    function postAjax(url, data, success) {
            var params = typeof data == 'string' ? data : Object.keys(data).map(
                    function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) }
                ).join('&');
            var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
            xhr.open('POST', url);
            xhr.onreadystatechange = function() {
                if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); }
            };
            xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.send(params);
            return xhr;
        }
        // example upvote request
        postAjax('localhost/api/video/rating', 'vote=1', function(data){ console.log(data); });
        // example downvote request
        postAjax('localhost/api/video/rating', 'vote=-1', function(data){ console.log(data); });
    
    

    업 보트 및 다운 보트 버튼을 각각의 예로 교체

관련 자료

  • 이전 arrays - 원격 서버에서 BASH 실행 명령
  • 다음 Show Dynamic image data to the img html element - img html 요소에 동적 이미지 데이터를 표시하십시오라 라벨, 집단