0

我试图建立一个简单的 5 星评级系统,并设法彻底挫败了自己。我已经在使用名为“place”的表中的一个 PHP 查询。我有第二张标有“投票”的桌子。我对“地方”表没有任何问题,这些元素填充得很好。唯一的问题是让 Ajax 请求与 PHP 一起工作,此时这让 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");
     }
     });

     });
     });
4

2 回答 2

0

内森,我现在没有和我一起喝咖啡,所以无法查看你的代码。但可以指导您链接到代码提示可用的类似内容。

点击这里

于 2012-04-11T06:57:47.920 回答
0

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

于 2012-04-11T07:08:16.630 回答