在javascript中发布喜欢/不喜欢系统php

在javascript中发布喜欢/不喜欢系统php,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,我正在尝试为一个用户只能投票一次的视频制作一个喜欢/不喜欢的系统。在对web进行了一些研究之后,我最近在代码中实现了Ajax(我对Ajax的了解有限)。当我单击“喜欢”或“不喜欢”时,页面会刷新,但不会更改mySQL中“喜欢/不喜欢”列中的任何内容。下面是上传视频的代码 <?php session_start(); include "config.php"; if( !empty( $_GET['$v_id'] ) ){ $vid = $_SESSION['v_id'] = $

我正在尝试为一个用户只能投票一次的视频制作一个喜欢/不喜欢的系统。在对web进行了一些研究之后,我最近在代码中实现了Ajax(我对Ajax的了解有限)。当我单击“喜欢”或“不喜欢”时,页面会刷新,但不会更改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');
}

在我看来,您没有任何实际更新操作的代码


SQL应该类似于“更新视频集likes=likes+1,其中v_id=?”

警告:当使用
mysqli
时,您应该使用和向查询中添加任何数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
$\u POST
$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。我不确定这是否会出现在“xhr.onreadystatechange=function(){}”或“return xhr;”下面。它不会出现在您的javascript中。xhr所做的就是向localhost/VarcFiles/watchScreen.php发送POST请求?v_id=&vid&vote=1。您必须在watchScreen.php中执行更新逻辑,这与选择要观看的视频的代码类似。我添加了“if(xhr){mysqli_query($link,“update video SET likes=likes+1 WHERE(v_id='$vid')”;}”这样的代码,但没有限制。我需要它,这样用户只能喜欢它一次。您可以使用
v\u id
user\u id
创建一个新表
VideosLikedBy
。执行类似操作时,首先检查此用户是否已经喜欢此视频
选择COUNT(*)作为VideosLikedBy中的COUNT,其中v_id=$vid和user_id=$user
。如果计数大于0,则表示用户已经喜欢,并且不应在“视频”表中增加喜欢。否则,您将增加喜欢的内容,但您还需要在
VideosLikedBy
中插入新行,很抱歉这么晚才问,但我开始注意到,当用户进入页面时,而不是当他们单击“喜欢/不喜欢”按钮时,它是喜欢的。
<br>
<script>
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;
}
</script>

<a href="" onclick="postAjax('localhost/VarcFiles/watchScreen.php?$v_id=\'$vid\'', 'vote=1', function(data){ console.log(data); });"><img src="imageStoring/like.png" style="height:30px;"/></a>
<a href="" onclick="postAjax('localhost/VarcFiles/watchScreen.php?$v_id=\'$vid\'', 'vote=-1', function(data){ console.log(data); });"><img src="imageStoring/dislike.png" style="height:30px;"/></a>
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
);