Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Problema con sistema de rating o votos en php

Hola a todos: Siguiendo el “Curso pagina web multisitio en php by zeuskx” se me planteó un dilema que tenía que resolver antes de seguir adelante. Dicho dilema consistía en conseguir un sistema de rating o votaciones (como cada cual prefiera) para que mi proyecto tenga futuro y, así, poder seguir con el curso. Después de muchos días buscando por la web, no encontraba nada que se acomodase a mis preferencias o que funcionase de forma sencilla. Hace tres días di con uno recurriendo a un video en inglés (no me quedó otra, porque en castellano brillan por su ausencia). Me funciona perfecto, pero tiene un detalle que me quita el sueño y llevo tres días sin poder solucionarlo.

Si alguien fuese tan amable de echarme una mano se lo agradecería eternamente. El tema es el siguiente:
Me descargué el zip donde viene todo lo necesario para que funcione (incluido el archivo sql para la base de datos y una página index de ejemplo). Sucede que la base de datos tiene dos entradas, archivos o como se quiera, identificados con sus correspondientes id 1 e id 2. Si lo abro en el explorador me aparecen los dos archivos que contiene la base de datos (con su título, contenido, foto, y las estrellitas para votar). El tema es que no quiero que me salgan los dos archivos, sino uno solo (el que prefiera en cada momento. Ahora son dos, pero en el futuro pueden ser 50, por ejemplo, y no quiero que me salgan todos).

Buscando una solución, me he dado cuenta de algo que creo es el problema y no sé resolverlo. Puede que sea una pequeñez o tontería, pero soy incapaz de lograrlo. Pego el código para que veáis a qué me refiero y encierro con un comentario donde creo que está la posible solución:
<?php include_once( 'libs/getItems.php' ); include_once( 'libs/ip.php' );?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="jquery/jRating.jquery.css" />
    <link rel="stylesheet" href="style.css" />
    <script type="text/javascript" src="jquery/jquery.js"></script>
    <script type="text/javascript" src="jquery/jRating.jquery.js"></script>
    <script type="text/javascript">
        $(function(){
            $(".rating").jRating({
                decimalLength : 1,
                rateMax : 5,
                phpPath: 'libs/rating.php',
                onSuccess: function(){
                    alert('Your rating has been submitted');
                },
                onError: function(){
                    alert('There was a problem submitting your feedback');
                }
            });
        });
    </script>
</head>
<body>
    
    <div id="wrapper">
        <h2> Articles Rating </h2>
// PRINCIPIO DEL TROZO CONFLICTIVO
  <?php if($allItems !== 0) { foreach($allItems as $value) {
            $allIpAddress = explode(',',$value['ip_address']);
            $current_ipAddress = GetUserIP();
            
            if(in_array($current_ipAddress,$allIpAddress))
            {
                $class = 'jDisabled';
            }
            else
            {
                $class = '';
            }
            
        ?>
// FIN DEL TROZO CONFLICTIVO
        <div class="items">
            <h4><?php echo $value['title']; ?></h4>
            <img src="<?php echo $value['image']; ?>" style="width:300px; height:150px;"/>
            <p><?php echo $value['description']; ?></p>
            <div class="rating <?php echo $class; ?>" id="<?php echo $value['rating']; ?>_<?php echo $value['id']; ?>"></div>
        </div>
        <?php } } ?>
    </div><!-- end wrapper -->
    

</body>
</html>
------------------

Como la tabla en la base de datos se llama "items" (sin las comillas), la función php llama a todos los items----- <?php if($allItems !== 0) { foreach($allItems as $value) { -----y no a uno concreto, que es lo que yo pretendo y lo razonable (no es cuestión de sacar 2, 20, 200 o los que tenga en cada momento).

Puesto que en el encabezamiento se llama a dos archivos, los pego para que los echéis un vistazo:

getItems.php
<?php
    include_once( 'class.ManageRatings.php' );
    $init = new ManageRatings;
    $allItems = $init->getItems();
?>
ip.php
<?php

function GetUserIP() {
$ip;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "UNKNOWN";
return $ip;
}

?>
Esto es todo. Pido perdón si me he extendido demasiado, no obstante, lo he creído necesario para que se me entienda bien y dejar el menor número de dudas posible a quien quiera ayudarme.

Agradezco de antemano la posible solución (si alguien me la proporciona).

Finalmente dejo el enlace al zip donde viene todo el sistema por si sirve de ayuda y, ¿por qué no?, por si a alguien le viene bien para su web, blog o lo que guste.

https://github.com/thetutlage/jQuery-ajax-star-rating-system

En la parte baja-derecha está el botón de descarga.

Un beso para todos.

Luz Esmeralda

Edito: Zeuskx, eres un máquina y me encanta tu foro. Siempre estás al pie del cañón.

Muchos besos.
0
Puntos
2027
Visitas
1
Resp
Por LuzEsmeralda hace 130 meses
Principiante
Respuesta #1
vale yo de ti me guiaria mas bien con este tutorial http://www.tutorialswindow.com/Web-Development/Javascript-tutorials/Creating-5-Star-Rating-System-Using-JQuery-PHP-MySQL-83.html

aun asi como te comente yo prefiero tener un sistema propio de votaciones es mucho mejor a la hora de configurarlo ya que en todo momento sabes de donde tocar, espero que te sirva el tutorial que te pase..
0
Puntos
Por zeuskx hace 130 meses
Administrador Sitio web
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate