Оценка изображений из базы данных

Я пытаюсь создать систему рейтинга с моей галереей. Я могу заставить все изображения появляться на странице с помощью кнопки с надписью "как это изображение". Цель состоит в том, чтобы пользователь мог только понравиться изображение один раз, и как только он нажмет кнопку "Нравится", значение 1 будет добавлено к изображению в базе данных. У меня есть таблица базы данных с именем ImageID, изображением и рейтингом. Начальное значение рейтинга равно нулю, когда кто-то загружает изображение. Вот код, который я использовал, чтобы получить изображения из таблицы базы данных, чтобы они отображались с кнопкой:

<?php
        mysql_connect("localhost","root","");
        mysql_select_db("pardeepsandhu");


        $res= mysql_query("select * from images");
        $row=mysql_fetch_array($res);
?>
<?php

?>
<div id="w">
  <div id="content">
      <div id="images"><?php while ($row=mysql_fetch_array($res)){?>
        <div id="pic" style="display:inline-block">
        <a href="<?php echo $row["Image"]; ?>"><img src="<?php echo $row["Image"]; ?>" height="135" width="135" border="5" alt="turntable" /></a>
        <form id="form1" name="form1" method="post" action="">
        <input type="submit" name="rate" id="rate" value="Like this image"/>
        </form>
        </div>
<?php } ?>
</div>
  </div>
</div>
<script type="text/javascript">
$(function() {
    $('#images a').lightBox();
});
</script>

Я знаю, что сначала мне понадобится if(isset($_POST['rate'])){}, чтобы начать игру, но я не знаю, как это сделать. Если пользователь нажимает кнопку под изображением, столбец оценки в базе данных увеличивается на единицу, и пользователь может сделать это только один раз для изображения. Может кто-нибудь помочь? Спасибо!

1 ответ

Я рекомендую немного другой подход. Чтобы отслеживать, кто оценил какие изображения, создайте новую таблицу БД со столбцами userID а также imageID, Чтобы получить оценку изображения, вы можете просто посчитать количество строк, где imageID является идентификатором текущего изображения, и чтобы проверить, оценил ли пользователь изображение, проверьте, существует ли строка так, чтобы imageID = текущее изображение и userID = текущий пользователь.

Получение рейтинга изображения

// $curID is the current image ID
$query = "SELECT * FROM `ratings` WHERE `imageID` = $curID";
// use mysqli->num_rows

Проверка, оценил ли пользователь текущее изображение

// $curUser, $curID are current user ID, current image ID
$query = "SELECT * FROM `ratings` WHERE `imageID` = $curID AND `userID` = $curUser;";
// check if mysqli->num_rows > 0

Вставка рейтинга

$query = "INSERT INTO `ratings` (`userID`, `imageID`) VALUES ($curID, $curUser);";
Другие вопросы по тегам