@Web-Building

Результат кнопок Like / DisLike выводятся на страницу, только после её обновления и страницы БД обновления. Почему??

Привет всем! Вопрос в заголовке. Т. е. чтобы появился последний суммарный результат, нужно обновить страницу БД (и тогда в БД увижу новый результат) и саму страницу кнопки like (и здесь появится последний суммарный результат: +1 к предыдущему, т. е. каждый клик по кнопке). Ведь результат должен появляться без перезагрузки страницы сайта и страницы БД. Помогите, кто может?! :)

Привожу пример для кнопки: Like.

index.php

// Счётчик кликов с сохранением в БД
require_once('counter.php');    // обработчик кнопок Like / DisLike

$dsn = "mysql:host=localhost;port=3306;dbname=название БД;charset=utf8";
$pdo = new PDO($dsn, 'имя пользователя БД', 'password', $опционально);

  $statement = $pdo->query("SELECT `value` FROM counterLike WHERE `idLike` = 1");
  $like = (int)$statement->fetchColumn();


Дальше форма HTML ................. не существенно, т.к. не в ней проблема.

main.js

// Клик по кнопке Like
    $(document).ready(function() {

        var linklike = $("#btnLike"),
            counterlike = $("#like_count"),
            countlike = 0;

        // Блок - Лайк ( Like )
        linklike.on('click', function(e) {
            e.preventDefault();

            var ajax = $.ajax({
                method: 'post',
                url: 'https://site.php/counter.php',
                dataType: 'text',
                data: {
                    'countlike': 1
                }
            });
            ajax.done(function(data) {
                data = JSON.parse(data);
                counterlike.html(parseInt(data));
            });
        });
    });


counter.php

declare(strict_types=1);
  error_reporting(E_ALL);

  // конфигурация БД
$servername = 'localhost';
$dbname = 'название БД';   
$database = 'имя пользователя БД';   
$password = 'password';    

$dsn = "mysql:host=localhost;port=3306;dbname=название БД;charset=utf8"; 
  
try {  
      $pdo = new PDO($dsn, 'имя пользователя БД', 'password', $опционально);
        // Для таблице counterLike
    if (isset($_POST['countlike']) && (int)$_POST['countlike'] === 1) {
        $stmt = $pdo->query("SELECT `value` FROM counterLike WHERE `idLike` = 1");  // Для Like
        $like = (int)$stmt->fetchColumn();
        $like++;
   $paramsLike = [
     ':id' => 1,
     ':value' => $like  
   ];
   $query = "UPDATE `counterLike` SET `value` = :value WHERE `idLike` = :id";
   $stmt = $pdo->prepare($query);
   $stmt->execute($paramsLike); 
     echo json_encode($like);  
    }

} catch (Exception $e) {
  echo $e->getMessage();
 }


И вот последний результат SQL-таблицы "counterLike" в БД:
600b3b04e915f555251387.png

SoS! Help!
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы