javascript - PHP 从数据库中检索新图像

标签 javascript php mysql ajax

对于 NOOB 问题表示歉意,但我仍在学习。

首先,我并不是要求某人为我编写以下问题的程序或给我代码。我只是在寻找一些逻辑方面的帮助和一些建议。

我想做什么

这只是一个示例,我尝试做的是不同的,但将使用相同的逻辑:我正在尝试在我的网站上显示电影海报,用户可以为该电影评分在 0 - 5 星之间,他/她的评分将与其他用户的评分一起记录在数据库中。当他/她完成他/她的评分时,需要显示一张新的电影海报,他/她可以在他/她可以再次对海报进行评分,如此继续下去直到他/她厌倦了对电影进行评分。

逻辑

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

问题

  • 如何在用户对图像进行评分后更改图像?

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

  • 如果可以,我该怎么做?我可能需要在这里结合使用 PHP 和 Javascript 吗?

任何帮助或建议将不胜感激。提前谢谢你。

最佳答案

您肯定需要同时使用 javascript 和 PHP 来完成此操作。

我会这样处理:

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

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

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

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

e) 最后,回到客户端,您的 javascript 代码可以对 PHP 发回的数据作出 react ,通过显示“感谢您的投票”之类的消息,然后更改屏幕上的电影详细信息以替换它们与新的。

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

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

希望这足以让您入门。

关于javascript - PHP 从数据库中检索新图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592028/

相关文章:

php 正在改变我的图像

php - JSON 架构 : how to allow empty string for property with numeric type?

mysql_query() 在 php 退出后继续运行

php - 实现接口(interface)问题

javascript - 为什么我的表单在页面加载时自动提交?

javascript - 如何在react javascript中获取自定义 header ?

javascript - 向 EventSource 构造函数提供 Last-Event-Id

sql - 使用符合数据库约束的数据自动生成 SQL INSERT 语句

php - 在 Symfony 中访问数据库连接数据

javascript - 使用 JavaScript 在数组中添加数字