Ben bir değerlendirme sistemi yapıyorum ve benim index.php sayfasında aşağıdaki jQuery kodu var:
<script type="text/javascript">
$(document).ready(function() {
$("[id^=rating_]").hover(function() {
var rid = $(this).attr("id").split("_")[1];
$("#rating_"+rid).children("[class^=star_]").children('img').hover(function() {
$("#rating_"+rid).children("[class^=star_]").children('img').removeClass("hover");
/* The hovered item number */
var hovered = $(this).parent().attr("class").split("_")[1];
var hovered2 = $(this).parent().attr("class").split("_")[1];
while(hovered > 0) {
$("#rating_"+rid).children(".star_"+hovered).children('img').addClass("hover");
hovered--;
}
$("#rating_"+rid).children("[class^=star_]").click(function() {
var current_star = $(this).attr("class").split("_")[1];
$.post("send.php", {rating: current_star, id: rid});
});
});
});
});
</script>
Temelde bir hover efekti gidecekseniz ve daha sonra yıldıza tıkladığınızda, bu derece bilgi ile, send.php için bir post isteği göndermek olacak tıkladım ve elemanın kimliği. Bu komut Aşağıda bu gibi görünüyor bazı PHP var:
<?php
$query = mysql_query("SELECT * FROM test");
while($row = mysql_fetch_array($query)) {
$rating = (int)$row[rating];
?>
<div id="rating_<?php echo $row[id]; ?>">
<span class="star_1"><img src="star_blank.png" alt="" <?php if($rating > 0) { echo"class='hover'"; } ?> /></span>
<span class="star_2"><img src="star_blank.png" alt="" <?php if($rating > 1.5) { echo"class='hover'"; } ?> /></span>
<span class="star_3"><img src="star_blank.png" alt="" <?php if($rating > 2.5) { echo"class='hover'"; } ?> /></span>
<span class="star_4"><img src="star_blank.png" alt="" <?php if($rating > 3.5) { echo"class='hover'"; } ?> /></span>
<span class="star_5"><img src="star_blank.png" alt="" <?php if($rating > 4.5) { echo"class='hover'"; } ?> /></span>
<div class="clearleft"> </div>
</div>
<br />
<?php
}
?>
Ve sonra tabii ki güzel görünmesi için bazı CSS var.
Send.php dosyası gibi görünüyor:
<?php
mysql_connect("localhost", "admin", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$rating = (int)$_POST['rating'];
$id = (int)$_POST['rid'];
$query = mysql_query("SELECT * FROM test WHERE id = '".$id."'") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
if($rating > 5 || $rating < 1) {
echo"Rating can't be below 1 or more than 5";
}
else {
$total_ratings = $row['total_ratings'];
$total_rating = $row['total_rating'];
$current_rating = $row['rating'];
$new_total_rating = $total_rating + $rating;
$new_total_ratings = $total_ratings + 1;
$new_rating = $new_total_rating / $new_total_ratings;
// Lets run the queries.
mysql_query("UPDATE test SET total_rating = '".$new_total_rating."' WHERE id = '".$id."'") or die(mysql_error());
mysql_query("UPDATE test SET rating = '".$new_rating."' WHERE id = '".$id."'") or die(mysql_error());
mysql_query("UPDATE test SET total_ratings = '".$new_total_ratings."' WHERE id = '".$id."'") or die(mysql_error());
}
}
?>
There are 3 rating columns in the database table; total_rating: total ratings (all the ratings added together). rating: the current rating total_ratings: the amount of ratings.
Bu sorun ben $ _POST ['notunu'] değiştirirseniz, ve $ _POST $ _GET için ['kurtulmak'] ve id = 1 & değerlendirme = 4? Send.php, örneğin, url int o bilgileri koymak çalışır ve veritabanı güncellenir. Ben yıldızlı bastığınızda Ancak, güncellenen veritabanı değil. Komut ile karıştırmasını sonra sonrası 0 olarak, ancak id döner çalışma gerektiğini fark etti.
Bunu test etmek için daha ben tıklama işlevi bu koymak:
document.write(current_star+rid);
Iade edildi ne olduğunu görmek için. Sorun döndürülür sayısı I elemanları vurgulamadığınız kez miktarı ile çarpılır bu gibi görünüyor. Ben üzerinde belki gezdirin Yani, yıldızlı 6, daha sonra current_star ve kimlik 6 kez tekrarlanır.
Ben iş için bu almak için bu kadar yakın olduğum gibi herkes ne onunla kalmış bir fikrin var, hissediyorum? Şimdiden teşekkürler.