2012-04-11 8 views
0

Ich versuche, ein einfaches 5-Sterne-Bewertungssystem einzurichten und habe es geschafft, mich gründlich zu frustrieren. Ich verwende bereits einen PHP-Abfrage-Pull aus der Tabelle namens "place". Ich habe eine zweite Tabelle mit der Aufschrift "vote". Ich habe keine Probleme mit der "Place" -Tabelle, diese Elemente füllen sich gut. Das einzige Problem besteht darin, die Ajax-Anfragen mit dem PHP zu arbeiten, das zu dieser Zeit in einer Ecke schluchzt.Einfache Ajax-Sterne-Bewertung mit PHP

Ich habe versucht, das folgende Tutorial zu verwenden, aber für alle meine Bemühungen scheint nicht herauszufinden, was blockiert meinen Code ordnungsgemäß ausgeführt wird?

http://sandbox.ronggur.com/2010/01/19/jquery-tutorial-simple-ajax-star-rating-with-php-extended/

Jede Hilfe wird sehr geschätzt.

Hier ist mein Code

<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."' "; 
    [email protected]_query($sql); 
    [email protected]_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"); 
    } 
    }); 

    }); 
    }); 

Antwort

0

Nathan, Ich habe Kaffee nicht richtig mit mir jetzt seinen Platz durch den Code gehen. Aber kann Sie verweisen, wo etwas ähnliches mit Codehinweisen verfügbar ist.

Click Here

+0

Ich schätze die schnelle Antwort und danke für die Ressource. Ich glaube, das Problem liegt irgendwo zwischen der PHP- und der JavaScript-getRating-Funktion. Angesichts meiner Erfahrung mit JavaScript hatte ich gehofft, dass jedes Problem, das meinen Code bricht, etwas sein könnte, das ich gerade nicht sehe. Ich würde es wirklich schätzen, wenn jemand ein paar Momente für eine Besprechung übrig hat und nachsehen könnte, ob etwas die Pause verursachen könnte. –

0

können Sie versuchen, diese http://orkans-tmp.22web.net/star_rating/index.html seine sehr einfach zu implementieren.

+0

Link scheint kaputt zu sein? –

+0

Nein .. versuchen Sie in Google .. erste Suche nach 'jquery ui Sterne Bewertung' .. ersten Link .. –