Foros del Web » Programando para Internet » PHP »

Codigo para calificar criticas.

Estas en el tema de Codigo para calificar criticas. en el foro de PHP en Foros del Web. Hola, ando buscando algun codigo que me sirva para calificar una critica. Me explico, tengo un sistema de criticas y reseñas, hay miles de "items" ...
  #1 (permalink)  
Antiguo 18/08/2006, 11:32
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 5 meses
Puntos: 0
Codigo para calificar criticas.

Hola, ando buscando algun codigo que me sirva para calificar una critica. Me explico, tengo un sistema de criticas y reseñas, hay miles de "items" para criticar y reseñar...

Me gustaria poder dejar a los visitante calificar las criticas. Que puedan calificarlas ya sea del 1 al 5 o por estrellas.

El sistema funciona con MYSQL y supongo que necesitaria que el codigo de calificacion de criticas se guarde en la base de datos tambien.

Alguien me podria asesorar un poco con esto? lo agradeceria.

Saludos!
  #2 (permalink)  
Antiguo 18/08/2006, 11:40
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 1 mes
Puntos: 0
amigo mio , busca en este sitio http://www.hotscripts.com/search/11573889.html
o busca en ingles Visitor Ratings.

saludos
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #3 (permalink)  
Antiguo 18/08/2006, 11:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tendrías que ir concretando mejor de que dispones.

Por ejemplo .. hace falta una referencia para referenciarte a tus "items" a criticar .. Esa referencia (un ID del registro de ese "item" que sea único) es la que usaras para "vincular" a sus "críticas" que almacenaras en otra tabla de tu BBDD creada para tal fin y con estructura tipo:

tabla criticas
Código PHP:
id_critica
id_item 
--> clave foranea
critica 
Cuando muestras tus "items" .. generas un link hacia el script que registre esa critica (que ingrese esos campos en esa tabla) bajo la referencia (ese "id_item") que le pasaras.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 18/08/2006, 11:57
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 5 meses
Puntos: 0
Cita:
Iniciado por maralbust Ver Mensaje
amigo mio , busca en este sitio http://www.hotscripts.com/search/11573889.html
o busca en ingles Visitor Ratings.

saludos
Lamentablemente en hotscripts no hay nada que me sirva.. ya trate varios y nada..


---------------------
Cluster:
Ok, tratare de dar lo mas que pueda de informacion acerca de mi base de datos aver si me pueden ayudar..

1. Las criticas se almacenan dentro de mi BD en la tabla "reviews"
2. Hay id's unicos... item_id (el id del item), review_id (id de la critica que se hizo al item)

La intencion entonces seria.. que donde se despliega el contenido de la critica se pueda agregar un dropdown con las calificaciones del 1 al 5. Al votar pues lel campo de "review_calif" (campo nuevo que se tiene que crear para hechar a andar esto) se modificara o se le agregara valor si es que esta en blanco.

Si se vota mas de dos veces pues tendra que hacer un promedio para definir la calificacion verdad?

Algo como (usando valores del 1 al 5):

1er Voto = 4
2do voto = 2
Calificacion TOTAL = 3

Si no se han realizado votos aun en la critica, pues que solo aparezca la formita y el boton de votar.

Me gustaria que el usuario no pudiera votar mas de 1 ves por la critica... A lo mejor con un IP address se podria hacer.

Como ves, pues es un script muy comun, el asunto es que no he encontrado uno que se pueda integrar con lo que ya tengo.

Alguna idea?
Muchas gracias
  #5 (permalink)  
Antiguo 18/08/2006, 12:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok .. queda algo más claro tu exposión del problema ..

Ahora, que problema tienes -concreto- que no sabrías hacer exactamente (no me digas que "todo", por qué algo sabras . .minimo hacer consultas a tu BBDD o trabajar con los datos del formulario HTML y ese "select" que vas a crear ..)

Cita:
Me gustaria que el usuario no pudiera votar mas de 1 ves por la critica... A lo mejor con un IP address se podria hacer.
Pero tus "usuarios" están registrados en tu sitio .. o son usuarios públicos (sin registro) .. Esto es para decidir si deberías emplear técnicas como el registro de IP o cookies (Y/o combinación de ambos) .. o bien podrías usar el dato del usuario registrado y navegando por tu sistema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 18/08/2006, 12:35
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 5 meses
Puntos: 0
Si, conozco algo del tema.. El sistema no es mio.. lo compre hace años y lo he modificado en GRAN forma, no soy un experto.. pero puedo lograrlo.

Los usuarios se registran, PERO sse identifican solo para publicar una critica, la lectura de criticas es abierta al publico y me gustaria que el calificar una critica fuera abierta y publica tambien, pero no se permitiera votar mas de 1 ves.

Y bueno.. que necesito hmmm... MUCHA AYUDA hahaha...

Si tienes algun codigo y lo puedes poner pues apartir de ahi ya sabria en que necesito ayuda. Como te digo.. soy muy callejero pa esto, viendo el codigo le pico y le pico hasta que consigo algo...

Agradezco tu ayuda..
  #7 (permalink)  
Antiguo 18/08/2006, 12:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Los usuarios se registran, PERO sse identifican solo para publicar una critica, la lectura de criticas es abierta al publico y me gustaria que el calificar una critica fuera abierta y publica tambien, pero no se permitiera votar mas de 1 ves.
Esto es lo "complicado" .. aquí hay un tema de asumir que ese tipo de encuestas "públicas" no van a ser del todo reales. Tu puedes bloquear a un usuario por IP . .ok . .el no votará más hasta que su conexión a internet si es con IP dinámica tome otra IP .. o no le dé por entrar con otro proxy, pero también denegarás el acceso a usuarios de una LAN común que pasen por un proxy o incluso a ciertos usuarios de ciertos proveedores de acceso a internet que los pasan por un proxy a todos .. Eso, entre otros problemas .. Luego si validas por cookies, te toparas con los usuarios que no aceptan tus cookies .. OK .. no votaran. Y así . .suma y sigue.

Estás dispuesto a asumir esos problemas .. antes incluso de invertír un segundo de esfuerzo en el desarrollo de "algo" que más o menos funcione?.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 18/08/2006, 12:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Si tienes algun codigo y lo puedes poner pues apartir de ahi ya sabria en que necesito ayuda. Como te digo.. soy muy callejero pa esto, viendo el codigo le pico y le pico hasta que consigo algo...
Volviendo al problema principal, no tengo código a mano hecho . .entre otras cosas por qué no conozco tu modelo de datos (estructura de la BBDD) que usas y como se relacionan estas .. No sé si vas a calificar la "crítica" en sí o el artículo que se critica .. En cualquier caso la técnica es la misma que te he planteado antes ..

Puedes usar una tabla (de tu BBDD) para registrar las criticas o bien añadir un campo más a tu tabla de "criticas" y sólo registrar ahí los totales. Igualmente si luego quieres implementar un sistema de validación por registro de IP (sobre todo) te hará falata una tabla más para relacionar esas "IP's" con esos "items" que se votan.

En el caso de que quieras crear una tabla anexa para registrar los votos (individuales y luego hacer sumatorios .. útil si quieres registrar el Usuario que votó por IP .. o por ID de usuario registrado ..).. Sólo tienes que crear registros en esa tabla .. con un INSERT de SQL:

$sql="INSERT INTO votos_criticas (id_voto,id_item,voto.....) VALUES ('','".$id_item."'".$voto."')";

Si sólo creas un campo extra en tu tabla de criticas .. actualizas el nuevo voto con lo que tenía:

$sql="UPDATE criticas SET votos=votos+".$voto." WHRE id_item='".$id_item."'";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 18/08/2006, 16:08
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 5 meses
Puntos: 0
Hm, entiendo..
Aun asi preferiria dejar la votacion de criticas abierta a publico.

Te comento que el sistema que tengo ya permite criticar y calificar al item, todo este asunto es calificar a la critica.. Es como en algunos lados cuando hay comentarios acerca de un item te preguntan ¿Esta critica fue util?, es algo asi.

El proposito del sitio es recomendar Anime, entonces al teminar de leer una critica de un usuario el lector califica esa critica si es que esta le ayudo a conocer ese Anime sin haberlo visto. Digamos si la critica que leyo fue buena o sirvio de algo.

Creo que procedere con hacer una tabla independiente para los votos.

Hay 2 campos que creo que la nueva tabla debe tener para poder relacionarse con la critica publicada: item_id y review_id

Ademas de estos dos hay que meter 'voto_id' y 'voto' ?
Donde el voto_id debe ser autoincrement y ser index?

Ya hice la tabla de esta manera:

CREATE TABLE `review_votos` (
`voto_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`review_id` INT( 11 ) NOT NULL ,
`item_id` INT( 11 ) NOT NULL DEFAULT '0',
`voto` TINYINT( 4 ) NOT NULL
) ENGINE = MYISAM ;

Muchas gracias por la ayuda
  #10 (permalink)  
Antiguo 18/08/2006, 17:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El "review_id" es el ID de la Crìtica?, cual es tu tabla actual donde almacenas las crìticas? (que tendrán relaciòn con el item que se critica) .. Si es asì .. donde hay que ingresar el voto serìa en esa tabla de "review" no en esta que no sè lo que es ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 18/08/2006, 18:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 5 meses
Puntos: 0
ok, hice esta tabla nuevo "review_votos" tomando en cuenta lo que me decias de hacer una tabla nueva para almacenar votos.

Las criticas se almacenan en la tabla "reviews" y se relaciona con el item usando el "item_id" que tambien esta en esta tabla "reviews"

Yo pense tambien en almacenar los votos dentro de la tabla donde estaban las criticas ('reviews'), pero segui lo que me comentaste anteriomente:

"En el caso de que quieras crear una tabla anexa para registrar los votos (individuales y luego hacer sumatorios .. útil si quieres registrar el Usuario que votó por IP .. o por ID de usuario registrado ..)"

Entonces.. como prosigo, que aconsejas?
  #12 (permalink)  
Antiguo 18/08/2006, 18:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Ok ..

Aunque viendolo bien .. el tema de registrar las IP's que ya han votado se podrìa tratar en foma externa .. es decir.
¨
IPs_votaron
id_ip
review_id
ip
fecha (un campo DATETIME te irà bien)

(Registrando la fecha que votó tal "IP" podrìas liberarla por "tiempo" para permitir nuevos votos tal vez .. esto es a elecciòn ..)

En la tabla "review" .. creas un campo extra para el total de votos recibidos(o quieres hacer cosas como promedios de cuando votan? o cosas así registrando la fecha del voto u otros factores? ..). Esto sería lo más simple y rápido de implementar.

Bueno .. siguiento con lo que querías hacer. La tabla de registro de votos .. tan sòlo te harìa falta el id de la "critica" (que es lo que estás votando) y el voto en sì recibido .. Si quieres, almacena fecha del voto para estadísticas más completas .. cuanto más información recopiles en ese momento .. más cosas podrás implementar despues.

review_votos
voto_id
review_id
voto

No incluyo el id_item .. por qué ya tienes otra tabla que hace esa realción .. por el "item" llegamos a los "review" y de ahí a los votos de cada "review".

Creo que este "modelo de datos" irá bien para empezar ..

Ahora se trata de que ingresar la informaciòn necesaria a estas tablas cuando se efectua el voto.

La IP del cliente la obtienes con $_SERVER['REMOTE_ADDR'] (o algo más completo si quieres ver la IP real que está detras de la gente que pasa por un proxy .. usa el buscador .. hay muchas propuestas para esto).

Sabrías continuar tú? .. intentalo .. Necesitas identificar la "crítica" (review) que estás votando y su voto .. te recomiendo un formulario para tal fin. Por un lado en un campo hidden el review_id y en un "<select ... >" tomas el voto .. todo eso irá a parar a la tabla de review_votos y por otro lado en ese miso script tomas la IP del cliente y la registras en la tabla de IPs_votaron junto con el review_id (y fecha o lo que gustes registrar).

El tema de registro de la IP y validación si existe para permitir el voto o no .. primero dedicate a registar el "voto" .. dejate lo de la IP para "luego" si lo primero te resulta .. ahí vamos completando.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 15:16.