我正在做一个教程,您可以将图像和图像信息上传到网站。 图像将保存到文件夹,而信息将存储在数据库中。
它还有一个功能,它还可以创建每个上传图像的缩略图。在此缩略图旁边,您可以找到存储在数据库中的上传图像信息。
现在我想提高它并添加一个评级系统。 我已经创建了一个发送数字(1-5)的评级系统,具体取决于所点击的星形图像,并将其存储在txt文件中。
所以我的问题是,将评级与每张图片连接起来的最简单方法是什么? 我希望评级显示在缩略图旁边,就像图像信息一样。
编辑: 图片上传:
<div id="uploadform">
<form action="laddaupp.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<label for="file"><strong>Filename:</strong></label>
<input type="file" name="file" id="file" />
<input type="text" name="uppladdare" placeholder="Uploader:" title="What's your name?"/>
<input type="text" name="titel" placeholder="Title" title="Give a title to your piece of work"/>
<input type="text" name="history" placeholder="History" title="Tell us the story behind your image. Where is it taken, etc."/>
<input type="submit" name="submit" value="Upload" />
</form>
//Send data to database
if(isset($_POST['submit']))
{
$dbcon = mysqli_connect("localhost","user1","test1","tutorial");
$stored_file = $_FILES["file"]["name"];
$file = "";
$query="INSERT INTO mountains (filname, uppladdare, titel, History)
VALUES ('$stored_file','$_POST[uppladdare]','$_POST[titel]','$_POST[history]')";
if(!mysqli_query($dbcon ,$query));
}
星级评分:
<form name="rating" id="rating">
<div id="rating-area" class="shadow">
<img src="stjärna.png" id="thumb1" data-value="1" />
<img src="stjärna.png" id="thumb2" data-value="2" />
<img src="stjärna.png" id="thumb3" data-value="3" />
<img src="stjärna.png" id="thumb4" data-value="4" />
<img src="stjärna.png" id="thumb5" data-value="5" />
</div>
</form>
<!--Skickar information till textfilen när man klickar på en stjärna-->
<script>
jQuery('div#rating-area img').click(function(e){
var val = jQuery(this).data('value') ;
console.log(val) ;
jQuery.post('post.php',{ rating : val },function(data,status){
console.log('data:'+data+'/status'+status) ;
}) ;
}) ;
</script>
答案 0 :(得分:1)
您可以在数据库上创建与当前(我猜)Image
表相关的另一个表。让我们说ImageRate
由于你以1-5的速率发送价值,你可以这样建立你的表
表格ImageRate
ID Rate ImageID (FK)
1 3 50
2 5 50
3 2 50
每个投票/费率都是ImageRate
的一行,其中包含自动增量ID
,Rate
值和ImageID
作为外键,这是主要的表Image
的关键。
因此,当用户评价图像时,您必须以这种方式插入此表:
INSERT INTO ImageRate(ID, RATE, ImageID) VALUES(null, ?, ?);
其中第一个?
将是费率值,第二个?
是已评级的图片ID。
然后获得图像的有效率,你可以简单地做
SELECT AVG(rate) from imagerate where ImageID = 50
注意强>
这是一种非常基本的方式来做你需要的。但是,这个表可以扩展为几个更有用的列,例如时间戳,User
id,以防止用户可以投票两次,等等...你需要考虑所有这些事情视具体情况而定。
答案 1 :(得分:0)
最简单的方法是将投票存储在数据库中。您可以通过图像的ID将它们连接到图像。
你必须考虑以下几点:
我个人不建议将投票存储在文本文件中!要解决的问题太多(例如,确定性)。