[英]Simple ajax star rating with php
我試圖設置一個簡單的 5 星評級系統,並成功地徹底挫敗了自己。 我已經在使用一個來自名為“place”的表的 PHP 查詢拉取。 我有第二張標有“投票”的表格。 我對“放置”表沒有任何問題,這些元素填充得很好。 唯一的問題是讓 Ajax 請求與 PHP 一起工作,此時它正在角落里抽泣。
我一直在嘗試使用以下教程,但我似乎無法弄清楚是什么阻止了我的代碼正常執行?
http://sandbox.ronggur.com/2010/01/19/jquery-tutorial-simple-ajax-star-rating-with-php-extended/
任何幫助是極大的贊賞。
這是我的代碼
<div id="pagewrap">
<div id="widgets">
<?php
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = "SELECT * FROM place";
$data = mysqli_query($dbc, $query)
or die("Error: ".mysqli_error($dbc));
while ($row = mysqli_fetch_array($data))
{
echo '<div class="content">';
echo '<p id="type"> ' . $row['free'] . $row['paid'] . '</p>';
echo '<div id="holder">';
echo '<div id="loc_cont"><a href="site_info.php?id=' . $row['placeId'] . '"><img id="place_logo" alt="' . $row['placename'] . '" src="' . THUMBNAILS . $row['thumb'] . '" /></a>';
echo '</div>';
echo '<div class="info">';
echo '<p id="loc">' . $row['placename'] . ' - ' . $row['city'] . '</p>';
echo '</div>';
echo ' </div>';
echo '<div class="review">';
echo '<div class="rates">';
include_once('PHP/rating.php');
#$star = fetchStar();
#echo '<h2>Star Rater - '. $row['placeId'] .'</h2>';
echo '<ul class="star-rating" id="star-rating-<'. $row['placeId'] .'"';
echo '<li current-rating-<'. $row['placeId'] .'" style="width:getRating('. $row['placeId'] .')%"><!-- will show current rating --></li>';
echo '<span id="'. $row['placeId'] .'">';
echo '<li><a href="javascript:void(0)" title="1 star out of 5" class="one-star">1</a></li>';
echo '<li><a href="javascript:void(0)" title="2 stars out of 5" class="two-stars">2</a></li>';
echo '<li><a href="javascript:void(0)" title="3 stars out of 5" class="three-stars">3</a></li>';
echo '<li><a href="javascript:void(0)" title="4 stars out of 5" class="four-stars">4</a></li>';
echo '<li><a href="javascript:void(0)" title="5 stars out of 5" class="five-stars">5</a></li>';
echo '</span>';
echo '</ul>';
echo '</div>';
echo '</div>';
echo '</div>';
}
mysqli_close($dbc);
?>
</div>
</div><!--End PageWrap div-->
<?php
if($_GET['do']=='rate'){
// do rate and get id
rate($_GET['placeId']);
}else if($_GET['do']=='getrate'){
// get rating and get id
getRating($_GET['placeId']);
}
// function to retrieve
function getRating($placeId){
$sql= "select * from vote where placeId = '".$placeId."' ";
$result=@mysql_query($sql);
$rs=@mysql_fetch_array($result);
// set width of star
$rating = (@round($rs[value] / $rs[counter],1)) * 20;
echo $rating;
}
// function to insert rating
function rate($placeId){
$text = strip_tags($_GET['rating']);
$update = "UPDATE vote SET counter = counter + 1, value = value + ".$_GET['rating']." WHERE placeId = '".$placeId."' ";
$result = @mysql_query($update);
}
?>
/
/ JavaScript Document
$(document).ready(function() {
// get rating function
function getRating(id){
$.ajax({
type: "GET",
url: "../PHP/rating.php",
data: "do=getrate&placeId="+id,
cache: false,
async: false,
success: function(result) {
// apply star rating to element
$("#current-rating-"+id+"").css({ width: "" + result + "%" });
},
error: function(result) {
alert("some error occured, please try again later");
}
});
}
// link handler
$('.rates li a').click(function(){
// get the parent id
var idStar = $(this).parent().parent().attr('id');
$.ajax({
type: "GET",
url: "../PHP/rating.php",
data: "rating="+$(this).text()+"&do=rate&placeId="+idStar,
cache: false,
async: false,
success: function(result) {
// remove #ratelinks element to prevent another rate
$("#ratelinks").remove();
// get rating after click
getRating(idStar);
},
error: function(result) {
alert("some error occured, please try again later");
}
});
});
});
Nathan,我現在沒有和我一起喝咖啡,所以不能通過你的代碼撥打 go。 但是可以通過代碼提示指導您鏈接到類似內容可用的地方。
你可以試試這個http://orkans-tmp.22web.net/star_rating/index.html它很容易實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.