пост в javascript для системы нравится / не нравится php - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь создать систему «нравится / не нравится» для видео, где пользователь может проголосовать только один раз.Я недавно внедрил 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');
}

Ниже приведен код, с которым у меня возникают проблемы.

<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>

Ниже приведен пример 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
);

1 Ответ

0 голосов
/ 04 марта 2019

Мне кажется, у вас нет кода для фактической операции UPDATE.

SQL должен выглядеть примерно так: "ОБНОВЛЕНИЕ видео SET SET likes = likes + 1 WHERE v_id =?".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...