Foros del Web » Programando para Internet » PHP »

contador de lecturas o visitas

Estas en el tema de contador de lecturas o visitas en el foro de PHP en Foros del Web. bueno sé ke debe ser una cosa sencilla, pero yo ke no tengo muchos conocimientos de php estoy luchando para hacer añadirle a mi sistema ...
  #1 (permalink)  
Antiguo 14/08/2005, 10:29
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
contador de lecturas o visitas

bueno sé ke debe ser una cosa sencilla, pero yo ke no tengo muchos conocimientos de php estoy luchando para hacer añadirle a mi sistema de noticias un contador de lecturas y me dijeron ke creara un campo "lecturas" en la tabal "noticias", asi lo hice, ahora el problema es ke no se como hacerlo funcionar o sea ke cada vez ke se lea una determinada noticia aumente la veces ke ha sido visitada o leida, alguno de uds. me podra ayudar con ello?

un saludo y gracias
  #2 (permalink)  
Antiguo 14/08/2005, 11:30
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Ese campo lecturas debe de ser numérico (int, por ejemplo), cada vez que un usuario lea la noticia debes leer el número correspondiente guardado en ese campo y sumarle uno, luego actualizas el campo con el nuevo valor.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 14/08/2005, 11:36
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Hola ZydRick,

Ya que tienes el campo lecturas en tu tabla noticias, lo unico que necesitas es cada ves que abran esa noticia que me imagino tiene una id propia le sume 1 a lecturas.

Algo asi

aqui $id_nota sera la id de la noticia actual, dare por hecho que ya tienes conexion con el servidor SQL

Código PHP:
$cons mysql_query("SELECT * FROM `noticias` WHERE `id` = '$id_nota' LIMIT 1",$conectar);
$result mysql_fetch_array($cons);

$num result['lecturas'] + 1/* le sumamos uno a las lecturas */

/* guardamos las lecturas */
mysql_query("UPDATE `noticias` SET `lecturas` = '$num'  WHERE `id` = '$id_nota' LIMIT 1",$conectar);

/* y si quieres la pones es pantalla */
echo ("Esta noticia ha sido vista ".$num." veces"); 
Bueno este codigo lo que hace es ver el numero actual de lecturas y le suma 1 por la actual lectura y lo muestra en pantalla.

Dime si te sirve

Saludos
  #4 (permalink)  
Antiguo 14/08/2005, 11:52
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
funcionó, muchas gracias a los dos por sus respuestas
  #5 (permalink)  
Antiguo 14/08/2005, 11:54
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
un consulta mas si no es mucha molestia, hay alguna forma de ke no cuente los refresh ??

Un saludo
  #6 (permalink)  
Antiguo 14/08/2005, 14:08
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Para que no cuente a cada momento que el usuario actualice la pagina o se salga y vuelva a entrar este mismo.

Yo te doy dos opciones:

- Crear una cookie con el tiempo de vida que tu creas conveniente, entonces mientras esa cookie exista no contaria como nueva lectura.

En este ejemplo la cookie duraria 1 hora
Código PHP:
if (is_null ($_COOKIE["visitas"])) {
setcookie ("visitas","visitado",time()+3600);

/* aqui pones el codigo para contar la lectura */


Nota: Recuerda que la creacion de la cookie debe hacerse antes de enviar cualquier otra cosa al navegador

- Restriccion por IP, creas una tabla de visitantes y en esta almacenas la direccion IP del visitante actual. Entonces cuando el usuario que ya visito la noticia quiera volver a hacerlo su lectura no contara mas.

Saludos
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 13:38.