PHP从数据库中检索新图像

时间:2014-02-06 01:06:36

标签: javascript php mysql ajax

为NOOB问题道歉,但我还在学习。

首先,我不是要求有人为我编写以下问题或者给我代码。我只是在寻找逻辑上的一些帮助和一些建议。

我想做什么

这只是一个例子,我想要做的是不同但会使用相同的逻辑:我试图在我的网站上显示电影海报,用户可以评价该电影在0到5星之间,他/她的评级将记录在数据库中,以及其他用户的评分。当他/她完成他/她的评级时,需要显示一个新的电影海报,他/她可以再次对海报进行评级,直到他/她厌倦评级电影为止。

逻辑

  • 我在假设我需要在这里使用PHP来存储和检索数据
  • 将创建一个表格,其中包含与该电影评级相对应的不同图像和评级,以及评估该电影以计算总评分平均值的用户数量

问题

  • 如果用户对图像进行评分,如何更改图像?

  • 是否可以像使用Javascript一样使用PHP更改图像src?

  • 如果是这样,我该怎么办?我可能需要在这里使用PHP和Javascript的组合吗?

非常感谢任何帮助或建议。提前谢谢。

1 个答案:

答案 0 :(得分:3)

你肯定需要同时使用javascript和PHP来实现这一目标。

我会这样做:

a)使用jQuery javascript库使javascript变得更容易。

b)写一些响应用户选择评级的javascript。您可能需要绑定到评级按钮的onClick事件。

c)单击评级按钮时,javascript函数应使用jQuery.ajax通过HTTP POST将选定的评级发送到服务器。发送到服务器的数据可能需要包含用于标识电影的ID,用于表示用户的ID(因此您可以阻止人们对同一部电影进行多次投票)以及他们选择的评级。

d)在服务器端,您可以编写PHP脚本来处理投票提交。它将检查电影和用户ID(存储在PHP的$ _POST变量中),然后将评级保存到某个数据库。然后它还可以将响应发送回客户端,该响应包含下一个电影ID和下一个海报。我建议你使用json_encode以一种易于javascript解释的方式存储这些信息。

e)最后,回到客户端,你的javascript代码可以对PHP发回的数据作出反应,发出一条消息,比如“谢谢你的投票”,然后在屏幕上更改电影细节以替换它们用新的。

您的客户端代码看起来有点像这样:

<img id="movie-poster" src="movie poster src" />
<ul>
  <li class="rating-button">1</li>
  <li class="rating-button">2</li>
  <li class="rating-button">3</li>
  <li class="rating-button">4</li>
  <li class="rating-button">5</li>
</ul>
<script>
var currentUserId;
var currentMovieId;
$('.rating-button').on('click',function() {
  $.ajax({
    url: "URL of PHP script here",
    type: 'post',
    data: {'movieId':currentMovieId, 'userId':currentUserId, 'rating':$(this).text()},
    dataType: 'json',
    success: function(response) {
      // this runs after your PHP script has responded
      // update your page with the new movie here
      alert('thanks for voting');
      currentMovieId = response.newMovieId;
      $('#movie-poster').attr('src',response.newMoviePosterSrc);
    }
  });
}
</script>

您的PHP脚本看起来有点像这样(您必须自己弄清楚所有数据库和用户身份验证位)

<?php

$user_id = $_POST['userId'];
$movie_id = $_POST['movieId'];
$rating = $_POST['rating'];

// check that the user is allowed to vote - possibly examine cookie for this
// check that rating is between 0 and 5
// check that the movie exists
// store results of vote in database

// load up another random movie from the database and send it back (in JSON format)
// assume details of new movie are in $new_movie = 

header('Content-type: application/json');
echo json_encode(array('newMovieId'=> new movie id here, 'newMoviePosterSrc' => URL of new poster here));
exit;

您还应该为该代码添加一些错误处理。 EG,如果出现连接问题,或者无法识别电影ID或其他内容,则显示消息。

此页面提供了有关如何从数据库中选择随机行的更多信息 - IE可随机选择要显示的下一张海报: How to randomly select rows in SQL?

希望这足以让你开始。