Оценка изображений из базы данных
Я пытаюсь создать систему рейтинга с моей галереей. Я могу заставить все изображения появляться на странице с помощью кнопки с надписью "как это изображение". Цель состоит в том, чтобы пользователь мог только понравиться изображение один раз, и как только он нажмет кнопку "Нравится", значение 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);";