Foros del Web » Programando para Internet » PHP »

sistema de puntuacion

Estas en el tema de sistema de puntuacion en el foro de PHP en Foros del Web. Buenas a todos foreros , me preguntaba si alguien podria hecharme un cable con este código que por más que miro y miro no consigo ...
  #1 (permalink)  
Antiguo 13/08/2014, 20:45
 
Fecha de Ingreso: agosto-2014
Mensajes: 13
Antigüedad: 9 años, 8 meses
Puntos: 0
sistema de puntuacion

Buenas a todos foreros , me preguntaba si alguien podria hecharme un cable con este código que por más que miro y miro no consigo averiguar donde esta el fallo.
Tampoco entiendo todo xD pero bueno poco a poco.

Estoy tratando de implementar un sistema de puntuacion para las noticias previamente generadas , pero me da un error y no consigue saber porque

Decir que la tabla que he creado es tal que asi:

id rating_id rating_num IP

La tengo vacia y sin ningun tipo de vista de relacion con otra tabla, pues del tutorial donde estoy leyendo como hacerlo, no pone nada de eso :(

Esto es lo que meto en el bucle para que se repita en cada noticia y pasandole row_publicaciones['id'] que sería la id de cada noticia:

Código PHP:
Ver original
  1. <?php
  2. //Query que retorna el numero de votos para un producto o servicio
  3. $query_num_ratings =  mysql_query("SELECT COUNT(*) as num FROM services_rating WHERE rating_id=".$row_publicaciones['id'], $conexion);
  4. //Numero de votos de un producto o registro
  5. $num_ratings = mysql_result($query_num_ratings, 0, "num");
  6.  
  7. //Query que retorna la suma, el total de votos de un producto o servicio
  8. $query_sum_ratings =  mysql_query("SELECT SUM(rating_num) as sum FROM services_rating WHERE rating_id=".$row_publicaciones['id'], $conexion);
  9.  
  10. //Si los votos son positivos
  11. if(mysql_result($query_sum_ratings, 0, "sum") > 0)
  12.    //Guardamos la suma
  13.    $sum_ratings = mysql_result($query_sum_ratings, 0, "sum");
  14. else
  15.    //La suma vale 0
  16.    $sum_ratings = 0;
  17.  
  18. $rating = 0;    
  19.  
  20. //Si la suma de votos es mayor que 0
  21. if ($num_ratings > 0) {
  22.    //Calculamos el número de estrellas a pintar
  23.    $rating = round($sum_ratings / $num_ratings);
  24. }
  25. ?>
  26.        
  27.  
  28. <div id="rating<?=$row_publicaciones['id']?>" data="<?=$row_publicaciones['id']?>">
  29.    <?php
  30.    //Por cada estrella
  31.    for ($i=1; $i<=5; $i++) {
  32.       //Si toca pintarla de verde
  33.       if ($i <= $rating)
  34.          //Mostramos estrella verde
  35.          echo '<div id="rating'.$row_publicaciones['id'].'_'.$i.'" data='.$i.'>&nbsp;</div>';
  36.       else
  37.          //Mostramos estrella gris
  38.          echo '<div id="rating'.$row_publicaciones['id'].'_'.$i.'" data='.$i.'>&nbsp;</div>';
  39.    }
  40.    ?>
  41.  
  42.    <div id="sumrating" data="<?=$sum_ratings?>" style="display:none">&nbsp;</div>
  43.    <div id="numrating" data="<?=$num_ratings?>" style="display:none">&nbsp;</div>
  44.    <div id="actual" data="<?=$rating?>" style="display:none;">&nbsp;</div>
  45.    <div class="ok" style="display:none;">&nbsp;</div>
  46. </div>

Dentro del head la llamada a AJAX:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3.     $('.estrella').click(function(){
  4.  
  5.         var parent = $(this).parent().attr('id');
  6.         var service = $(this).parent().attr('data');
  7.         var rating = $(this).attr('data');
  8.  
  9.         var dataString = 'id='+service+'&rating='+rating;
  10.  
  11.         $.ajax({
  12.             type: "POST",
  13.             url: "inc/addvote.php",
  14.             data: dataString,
  15.             success: function() {        
  16.                 var new_sum_rating = parseInt($('#'+parent+' #sumrating').attr('data')) + parseInt(rating);
  17.                 var new_num_rating = parseInt($('#'+parent+' #numrating').attr('data')) + 1;
  18.                 var new_rating = Math.round(new_sum_rating / new_num_rating);
  19.  
  20.                 for(i=1;i<=new_rating;i++){
  21.                     $('#'+parent+'_'+i+' .estrella').removeClass("estrella");
  22.                     $('#'+parent+'_'+i+' .estrella').addClass("selected");
  23.                 }
  24.  
  25.                 $('#'+parent+' .ok').empty();
  26.                 $('#'+parent+' #actual').empty();
  27.                 $('#'+parent+' #actual').append('('+new_rating+'/5) basado en '+new_num_rating+' votos!').fadeIn("slow");
  28.                 $('#'+parent+' .ok').append('Gracias por enviar tu voto!').fadeIn("slow");
  29.                 $('#'+parent+' #actual').fadeOut(5000);
  30.                 $('#'+parent+' .ok').fadeOut(5000);
  31.             }
  32.  
  33.         });
  34.  
  35.     });  
  36.  
  37.     $('.estrella').hover(function(){
  38.          var parent = $(this).parent().attr('id');
  39.  
  40.         $('#'+parent+' .estrella').css('background-image', 'url(images/estrella-gris.png)');
  41.  
  42.         for(i=1;i<=$(this).attr('data');i++){
  43.             $('#'+parent+'_'+i).css('background-image', 'url(images/images/estrella-verde.png)');
  44.         }
  45.  
  46.     });  
  47. });    
  48. </script>

y el archivo addvote.php

Código PHP:
<?php

  
if (is_file("Connections/conexion.php")) {
    require_once(
'Connections/conexion.php');
}
else {
    require_once(
'../Connections/conexion.php');
}

$service $_POST['id'];
$rating $_POST['rating'];
$insert mysql_query("INSERT INTO services_rating (rating_id, rating_num) VALUES ('$service', '$rating')"$conexion);
?>
Siento ponerlo tal cual , pero esque no se ni por donde empezar xd
Me da el siguiente error: mysql_result() expects parameter 1 to be resource, boolean given in public_html/Blog.php on line 219

Código PHP:
$num_ratings mysql_result($query_num_ratings0"num"); 
A ver si alguien me arroja un poco de luz

Última edición por jotacheca; 13/08/2014 a las 20:51

Etiquetas: mysql, puntuacion, registro, select, sistema, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:34.