PHP- Ajax Star Rating Bar
Bu dersimizde Ajax Star Rating Bar ‘ile videolar, resimler, user profilleri vb. içeriklere Star Rating ile oylama yapmayı ögreniyoruz. Örnegimizde ilk olarak star veri tabanındaki star tablosundaki sutunlara id, toplam puan, toplam kullanılan oy sayısı ve birden fazla oylamayı önlemek için user_ips tablo alanları oluyor. Bunlar ek proje dosyalarında yer almakta.İlk olarak veri tabanına bakıyoruz veri tabanında böyle bir id yok ise oluşturuyor ve üzerinde güncelleme yapıyoruz, eğer varsa direk olarka üzerinde oylama (update) yapmasını sağlıyoruz. Örnegimizde id 1 ise dedik bunu daha geniş çalışmalarda: Örneğin bir fotograf sitesinde her bir fotografın id sine görede yapabiliriz. Bu global olarak kullancağımız ve seçtiğimizde sadece o resmin Star Rating’i üzerine oylama yapmamızı sağlaması için id yi bir session a atıyarakta işlemler yapabilriz. Aşagıda projeye ait kodlar yer almaktadır (db.php ) . Diğer proje dosyaları ek’te yer almaktadır .Proje Dosyaları
< ?phpheader("Cache-Control: no-cache");header("Pragma: nocache");require('_config-rating.php'); // get the db connection info//getting the values$vote_sent = preg_replace("/[^0-9]/","",$_REQUEST['j']);$id_sent = preg_replace("/[^0-9a-zA-Z]/","",$_REQUEST['q']);$ip_num = preg_replace("/[^0-9\.]/","",$_REQUEST['t']);$units = preg_replace("/[^0-9]/","",$_REQUEST['c']);$ip = $_SERVER['REMOTE_ADDR'];$referer = $_SERVER['HTTP_REFERER'];if ($vote_sent > $units) die("Sorry, vote appears to be invalid."); // kill the script because normal users will never see this.//connecting to the database to get some information$query = mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='1' ")or die(" Error: ".mysql_error());$numbers = mysql_fetch_assoc($query);$checkIP = unserialize($numbers['used_ips']);$count = $numbers['total_votes']; //how many votes total$current_rating = $numbers['total_value']; //total number of rating added together and stored$sum = $vote_sent+$current_rating; // add together the current vote value and the total vote value$tense = ($count==1) ? "vote" : "votes"; //plural form votes/vote// checking to see if the first vote has been tallied// or increment the current number of votes($sum==0 ? $added=0 : $added=$count+1);// if it is an array i.e. already has entries the push in another value((is_array($checkIP)) ? array_push($checkIP,$ip_num) : $checkIP=array($ip_num));$insertip=serialize($checkIP);//IP check when voting$voted=mysql_num_rows(mysql_query("SELECT used_ips FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='1' "));if(!$voted) { //if the user hasn't yet voted, then vote normally...if (($vote_sent >= 1 && $vote_sent < = $units) && ($ip == $ip_num)) { // keep votes within range$update = "UPDATE $rating_dbname.$rating_tableName SET total_votes='".$added."', total_value='".$sum."', used_ips='".$insertip."' WHERE id=1 ";$result = mysql_query($update);}header("Location: $referer"); // go back to the page we came fromexit;} //end for the "if(!$voted)"?>
Posted by sword fish
3 responses to "PHP- Ajax Star Rating Bar"
10:12 on Temmuz 13th, 2009
Güzel paylaşım
14:09 on Temmuz 13th, 2009
zamanında ne kadar çok aramıştım buna benzer bi uygulamayı
teşekkürler
9:33 on Eylül 18th, 2009
paylasım icin saol