Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > ช่วยดูโค๊ดjquery rating ทีครับว่าแบบนี้จะให้คะแนนโหวตมันลงฐานข้อมูลยังไงครับ แล้วกําหนดวันนึงโหวตได้ครั้งเดียวยังไงครับ



 

ช่วยดูโค๊ดjquery rating ทีครับว่าแบบนี้จะให้คะแนนโหวตมันลงฐานข้อมูลยังไงครับ แล้วกําหนดวันนึงโหวตได้ครั้งเดียวยังไงครับ

 



Topic : 053787



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์




โค๊ด

Code (PHP)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd"
    >
<html lang="en">
<head>
    <title>AJAX 5 Star Rating</title>
    
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>

    // This is the first thing we add ------------------------------------------
    $(document).ready(function() {
        
        $('.rate_widget').each(function(i) {
            var widget = this;
            var out_data = {
                widget_id : $(widget).attr('id'),
                fetch: 1
            };
            $.post(
                'ratings.php',
                out_data,
                function(INFO) {
                    $(widget).data( 'fsr', INFO );
                    set_votes(widget);
                },
                'json'
            );
        });
    

        $('.ratings_stars').hover(
            // Handles the mouseover
            function() {
                $(this).prevAll().andSelf().addClass('ratings_over');
                $(this).nextAll().removeClass('ratings_vote'); 
            },
            // Handles the mouseout
            function() {
                $(this).prevAll().andSelf().removeClass('ratings_over');
                // can't use 'this' because it wont contain the updated data
                set_votes($(this).parent());
            }
        );
        
        
        // This actually records the vote
        $('.ratings_stars').bind('click', function() {
            var star = this;
            var widget = $(this).parent();
            
            var clicked_data = {
                clicked_on : $(star).attr('class'),
                widget_id : $(star).parent().attr('id')
            };
            $.post(
                'ratings.php',
                clicked_data,
                function(INFO) {
                    widget.data( 'fsr', INFO );
                    set_votes(widget);
                },
                'json'
            ); 
        });
        
        
        
    });

    function set_votes(widget) {

        var avg = $(widget).data('fsr').whole_avg;
        var votes = $(widget).data('fsr').number_votes;
        var exact = $(widget).data('fsr').dec_avg;
    
        window.console && console.log('and now in set_votes, it thinks the fsr is ' + $(widget).data('fsr').number_votes);
        
        $(widget).find('.star_' + avg).prevAll().andSelf().addClass('ratings_vote');
        $(widget).find('.star_' + avg).nextAll().removeClass('ratings_vote'); 
        $(widget).find('.total_votes').text( votes + ' votes recorded (' + exact + ' rating)' );
    }
    // END FIRST THING
    



    
    
    
    
    </script>
    
    <style>
        .rate_widget {
	overflow:   visible;
	position:   relative;
	width:      auto;
	height:     15px;
	border-top-color: #FFF;
	border-right-color: #FFF;
	border-bottom-color: #FFF;
	border-left-color: #FFF;
        }
        .ratings_stars {
	background: url('star_empty.png') no-repeat;
	float:      left;
	height:     15px;
	padding:    2px;
	width:      15px;
        }
        .ratings_vote {
            background: url('star_full.png') no-repeat;
        }
        .ratings_over {
            background: url('star_highlight.png') no-repeat;
        }
        .total_votes {
	background: #eaeaea;
	top: 21px;
	left: 0px;
	padding: 5px;
	position:   absolute;
        } 
        .movie_choice {
	font: 10px verdana, sans-serif;
	margin-top: 0;
	width: 131px;
        }
        h1 {
            text-align: center;
            width: 400px;
            margin: 20px auto;
        }
    </style>
</head>
<body>
<div class='movie_choice'>
<div id="r2" class="rate_widget">
<div class="star_1 ratings_stars"></div>
    <div class="star_2 ratings_stars"></div>
        <div class="star_3 ratings_stars"></div>
        <div class="star_4 ratings_stars"></div>
        <div class="star_5 ratings_stars"></div>
        <div class="total_votes">vote data</div>
    </div>
</div>
</body>
</html>



rating.php

Code (PHP)
<?php


    $rating = new ratings($_POST['widget_id']);
    
    
    isset($_POST['fetch']) ? $rating->get_ratings() : $rating->vote();
    
    
    



class ratings {
    
    var $data_file = './ratings.data.txt';
    private $widget_id;
    private $data = array();
    
    
function __construct($wid) {
    
    $this->widget_id = $wid;

    $all = file_get_contents($this->data_file);
    
    if($all) {
        $this->data = unserialize($all);
    }
}
public function get_ratings() {
    if($this->data[$this->widget_id]) {
        echo json_encode($this->data[$this->widget_id]);
    }
    else {
        $data['widget_id'] = $this->widget_id;
        $data['number_votes'] = 0;
        $data['total_points'] = 0;
        $data['dec_avg'] = 0;
        $data['whole_avg'] = 0;
        echo json_encode($data);
    } 
}
public function vote() {
    
    # Get the value of the vote
    preg_match('/star_([1-5]{1})/', $_POST['clicked_on'], $match);
    $vote = $match[1];
    
    $ID = $this->widget_id;
    # Update the record if it exists
    if($this->data[$ID]) {
        $this->data[$ID]['number_votes'] += 1;
        $this->data[$ID]['total_points'] += $vote;
    }
    # Create a new one if it doesn't
    else {
        $this->data[$ID]['number_votes'] = 1;
        $this->data[$ID]['total_points'] = $vote;
    }
    
    $this->data[$ID]['dec_avg'] = round( $this->data[$ID]['total_points'] / $this->data[$ID]['number_votes'], 1 );
    $this->data[$ID]['whole_avg'] = round( $this->data[$ID]['dec_avg'] );
        
        
    file_put_contents($this->data_file, serialize($this->data));
    $this->get_ratings();
}

# ---
# end class
}














//function return_rating($raw_id) {
//    
//    $widget_data = fetch_rating($raw_id);
//    echo json_encode($widget_data);
//}
//
//# Data is stored as:
//#     widget_id:number_of_voters:total_points:dec_avg:whole_avg
//function fetch_rating($raw_id) {
//    
//    $all  = file('./ratings.data.txt');
//    
//    foreach($all as $k => $record) {
//        if(preg_match("/$raw_id:/", $record)) {
//            $selected = $all[$k];
//            break;
//        }
//    }
//
//    if($selected) {
//        $data = split(':', $selected);
//        $data[] = round( $data[2] / $data[1], 1 );
//        $data[] = round( $data[3] );
//    }
//    else {
//        $data[0] = $raw_id;
//        $data[1] = 0;
//        $data[2] = 0;
//        $data[3] = 0;
//        $data[4] = 0;
//    }
//    
//    return $data;
//}
//
//
//
//
//function register_vote() {
//    
//    preg_match('/star_([1-5]{1})/', $_POST['clicked_on'], $match);
//    $vote = $match[1];
//    
//    $current_data = fetch_rating($_POST['widget']);
//    
//    $new_data[] = $current_data['stars'] + $vote;
//    $new_data[] = $current_data['cast'] + 1;
//    
//
//    # --> This needs to be fixed, since a widget ID is ALWAYS passed in
//    # it should be a class property
//    file_put_contents($_POST['widget'] . '.txt', "{$new_data[0]}\n{$new_data[1]}");
//    
//    return_rating($_POST['widget']);
//}

    //foreach($all as $k => $record) {
    //    if(preg_match("/$raw_id:/", $record)) {
    //        $selected = $all[$k];
    //        break;
    //    }
    //}
    //
    //if($selected) {
    //    $this->data = split(':', $selected);
    //    $this->data[] = round( $this->data[2] / $this->data[1], 1 );
    //    $this->data[] = round( $this->data[3] );
    //}
    //else {
    //    $this->data[0] = $this->widget_id;
    //    $this->data[1] = 0;
    //    $this->data[2] = 0;
    //    $this->data[3] = 0;
    //    $this->data[4] = 0;
    //}
?>




Tag : PHP









ประวัติการแก้ไข
2010-12-28 14:31:29
2010-12-28 14:36:28
2010-12-28 14:37:41
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-28 14:29:57 By : kenghockey View : 1107 Reply : 0
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยดูโค๊ดjquery rating ทีครับว่าแบบนี้จะให้คะแนนโหวตมันลงฐานข้อมูลยังไงครับ แล้วกําหนดวันนึงโหวตได้ครั้งเดียวยังไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่