用php简单的ajax星评级

时间:2012-04-11 06:50:44

标签: php javascript jquery ajax mysqli

我试图设置一个简单的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");
     }
     });

     });
     });

2 个答案:

答案 0 :(得分:0)

森, 我现在不跟我喝咖啡所以不能通过你的代码。但是可以引导您通过代码提示链接类似的东西。

Click Here

答案 1 :(得分:0)

你可以尝试这个http://orkans-tmp.22web.net/star_rating/index.html 它很容易实现。