为NOOB问题道歉,但我还在学习。
首先,我不是要求有人为我编写以下问题或者给我代码。我只是在寻找逻辑上的一些帮助和一些建议。
我想做什么
这只是一个例子,我想要做的是不同但会使用相同的逻辑:我试图在我的网站上显示电影海报,用户可以评价该电影在0到5星之间,他/她的评级将记录在数据库中,以及其他用户的评分。当他/她完成他/她的评级时,需要显示一个新的电影海报,他/她可以再次对海报进行评级,直到他/她厌倦评级电影为止。
逻辑
问题
如果用户对图像进行评分,如何更改图像?
是否可以像使用Javascript一样使用PHP更改图像src?
如果是这样,我该怎么办?我可能需要在这里使用PHP和Javascript的组合吗?
非常感谢任何帮助或建议。提前谢谢。
答案 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?
希望这足以让你开始。