Para la parte del css me he basado en el codigo de Komodo Media, e cual pueden encontrar aqui
Lo interesante de este script es que uso jquery y guardo la votación en un archivo de texto y asi ya no requiero una base de datos

El diseño

Las instrucciones detalladas como ya indique las pueden encontrar en Komodo Media, asi que yo me voy a limitar a copiar el codigo del formulario.

1
2
3
4
5
6
7
8
9
10
11
12
13
<form name="frm_rating" method="post" action="index.php">
    <ul class='star-rating'>
        <li class='current-rating' style='width:<?php echo 25 * round($promedio);?>px;'>Currently 3.5/6 Stars.</li>
        <li class="star"><a href='#' title='1' class='one-star'>1</a></li>
        <li class="star"><a href='#' title='2' class='two-stars'>2</a></li>
        <li class="star"><a href='#' title='3' class='three-stars'>3</a></li>
        <li class="star"><a href='#' title='4' class='four-stars'>4</a></li>
        <li class="star"><a href='#' title='5' class='five-stars'>5</a></li>
        <li class="star"><a href='#' title='6' class='six-stars'>6</a></li>
    </ul>
    <input type="hidden" name="my_vote" value="0" id="my_vote" />
    <input type="submit" name="submit" value="Votar" />
</form>

La hoja de estilos y el grafico de las estrellas lo encuentran en el archivo zip al final del tutorial

AJAX

Ahora necesito que cuando se le de click a una estrella, esta se marque y el valor del campo hiddden «my_vote» se modifique
Para eso voy a hacer un simple javascript invocando mi libreria jquery:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script language="javascript" src="jquery-1.2.6.min.js"></script>
<script language="javascript">
$(document).ready(function(){
       // Detecto la estrella que es presionada
    $("li.star a").click(function(event){  
                // Recojo el valor de la estrella      
        valor_actual=$(this).attr("title");
                // Cambio el estilo para mostrar la estrella seleccionada
        $("li.current-rating").css("width", valor_actual*25);
                // Cambio el valor del campo hidden
        $("#my_vote").attr("value", valor_actual);
    });
});
</script>

Pueden ver la segunda parte del tutorial aqui
Otra forma de hacer un Star Rating usando un plugin para Jquery