|
|
·
Skindario
Buscar en el Foro Buscar Tags
Portal
Foro
Usuario
Foro
Normas
RSS
Etiquetas
Avatares
Rangos
Eventos
Staff
Entrevistas
Noticias
Caretos
F.A.Q
Subforos Privados
Estadisticas
Estadisticas
Usuarios
OnLine
Actividad
Funciones
Favoritos
P. Inicio
Imprimir
Buscar
Afiliados
¿Tu Web Aquí?
Comunidad ESDLA
Foros DWP
Websmasters Foro
Mundo Deluxe
Photosherox
Descargas-V
Enlázanos

i
Contador de visitas
Haz clic para publicar un nuevo tema Haz clic para añadir una nueva respuesta · Portal · Foros · PHP
Buscar · Tags · Imágenes · Usuarios · Fisgona
Autor Mensaje 
Aimarejada
Webmaster HTML
Webmaster HTML

Haz clic para ver el perfil del usuario
Mensajes: 83
Desde: 25/Mar/2006
Contador de visitas

Estoy intentando hacer funcionar un contador de visitas que guarde estas en una base de datos y que solo sume las visitas nuevas por lo que tendra que guardar la ips para que luego compruebe si debe o no sumar la visita.

La ip la consigo gracias a una función y despues la guardo en una variable llamada $ip.

Como lo tengo hecho ahora si que cuenta solo las visitas nuevas lo que pasa que la primera visita guarda su ip y en la segunda visita borra la ip anterior guardada en el campo y guarda la ip de la segunda visita, es decir que se machaca la ip que hay y se pone la del visitante nuevo.

Deberia añadir en vez de machacar asi que no se como hacerlo.

Codigo


 

28/Jun/2008 21:55 GMT+1 Perfil ·  Privado · Desconectado ·  Web
baggiobanglio
Moderador
Moderador

Haz clic para ver el perfil del usuario
Mensajes: 743
Desde: 22/Mar/2007
RE: Contador de visitas

Claro, lo que estás haciendo es actualizar un campo en la BD, no añadir uno nuevo, tú lo haces con UPDATE, pero para añadir uno nuevo, tienes que hacerlo con INSERT INTO, quedaría tal que así:

$update = "INSERT INTO lecturas (campos de la BD) VALUES ('$ip','otro','otro') WHERE id_contenido = 1";

Un saludo :)
28/Jun/2008 23:25 GMT+1 Perfil ·  Privado · Desconectado ·  Web ·  Fotolog
Aimarejada
Webmaster HTML
Webmaster HTML

Haz clic para ver el perfil del usuario
Mensajes: 83
Desde: 25/Mar/2006
RE: Contador de visitas

Me da este error ese insert:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_contenido = 1' at line 1
29/Jun/2008 15:30 GMT+1 Perfil ·  Privado · Desconectado ·  Web
EffectedCard
Administrador
Administrador

Haz clic para ver el perfil del usuario

Usuario PRO Usuario PRO
Mensajes: 9.216
Desde: 16/Oct/2004
RE: Contador de visitas

Pon el código que has puesto ahora, una vez modificado.
29/Jun/2008 16:46 GMT+1 Perfil ·  Privado · Desconectado ·  Web
baggiobanglio
Moderador
Moderador

Haz clic para ver el perfil del usuario
Mensajes: 743
Desde: 22/Mar/2007
RE: Contador de visitas

Escrito originalmente por Aimarejada
Me da este error ese insert:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_contenido = 1' at line 1
Cierto, fallo mío, prueba así:

$update = "INSERT INTO lecturas (campos de la BD) VALUES ('$ip','otro','otro') WHERE id_contenido = '1'";

Si sigue sin funcionar, haz lo que te dice Effected, pon el código modificado ;)

EDIT: Perdona, no me he dado cuenta de que un WHERE no tiene sentido en un INSERT INTO, ya que si quieres insertar una nueva fila en una base de datos, no puedes hacerlo en otras ya hechas y con valor 'id_contenido' = 1. Por lo tanto, te quedaría tal que así:

$update = "INSERT INTO lecturas (ip, otro1, otro2) VALUES ('$ip','$otro1','$otro2')";

Un saludo :)



Editado por baggiobanglio, Domingo, 29 de Junio de 2008, 19:32
29/Jun/2008 18:58 GMT+1 Perfil ·  Privado · Desconectado ·  Web ·  Fotolog
Aimarejada
Webmaster HTML
Webmaster HTML

Haz clic para ver el perfil del usuario
Mensajes: 83
Desde: 25/Mar/2006
RE: Contador de visitas

Ese es uno de los problemas con los que me encontré de que parece que no se puede utilizar el WHERE en un INSERT cosa que me parece rara, el otro problema es que no se como guardar las ips dentro de un campo longtext y no machacar la ip que ya este guardada, por ultimo como recuperar esa ip para hacer la comparación.

Lo que pensé era hacer una consulta y meter todas las ips en un array para luego recorrerlo y comparar la ip del visitante con las que están guardadas en la bd.

Una solución que me dieron en forosdelweb es guardar cada ip en un registro diferente y no todas en un mismo registro metiéndolas y mismo campo.

Ósea que guardo cada ip en un sitio diferente, luego haciendo un SELECT compruebo cuantas ips hay que coincidan con la ip del visitante que lógicamente esas ips correspondan al contenido que se esta mostrando.

 

Lo que traducido a codigo seria esto:

 

Codigo


 No se si sera la mejor solución pero de momento es como lo tengo hecho y funciona perfectamente.
30/Jun/2008 13:31 GMT+1 Perfil ·  Privado · Desconectado ·  Web
Aimarejada
Webmaster HTML
Webmaster HTML

Haz clic para ver el perfil del usuario
Mensajes: 83
Desde: 25/Mar/2006
RE: Contador de visitas

$consulta=mysql_num_rows(mysql_query("SELECT COUNT(*) FROM nombretabla WHERE id del contenido = '". $variable["id del contenido que se esta viendo"] . "' AND ip= '".$ip del visitante."' GROUP BY ip"));

 

 

if($consulta==0) {      

 

                        $update = "INSERT INTO nombretabla (id del contenido, ip a guardar) VALUES ('". $variable["id del contenido"] . "','".$ip del visitante."')";

                        $variable = mysql_query($update);

             

}


Lo pongo asi de nuevo porque entre las etiquetas code queda bastante ilegible el codigo.


30/Jun/2008 13:32 GMT+1 Perfil ·  Privado · Desconectado ·  Web
EffectedCard
Administrador
Administrador

Haz clic para ver el perfil del usuario

Usuario PRO Usuario PRO
Mensajes: 9.216
Desde: 16/Oct/2004
RE: Contador de visitas

¿Eso es que ya te funciona o he de revisar algo?

Básicamente, por si aún no sabes cómo hacerlo, yo haría algo similar a lo que te han dicho en forosdelweb.


1) Sacas la IP del usuario
2) Compruebas si existe alguna IP en la base de datos que sea igual.
3.1) Si existe alguna, actualizas ese campo y cambias la fecha del último acceso
3.2) Si no existe ninguna, añades un nuevo campo
4) Para sacar el número de visitas que llevas bastaría con contar el número de filas regisstradas



Luego eso se puede complicar más, haciéndolo por secciones o comprobando si se ha conectado en 24 horas y cosas así.


Obviamente un insert no admite where, porque el where lo que hace es identificar una fila (o varias de ellas) según el valor de un campo, pero si tu vas a crear una nueva, no sirve de nada que le digas que la inserte en la fila donde la IP valga noséqué porque no la va a guardar ahí. Eso serviría para un update. No sé si lo he explicado bien, pero vamos que tiene toda la lógica del mundo.
30/Jun/2008 14:03 GMT+1 Perfil ·  Privado · Desconectado ·  Web
Aimarejada
Webmaster HTML
Webmaster HTML

Haz clic para ver el perfil del usuario
Mensajes: 83
Desde: 25/Mar/2006
RE: Contador de visitas

El ultimo codigo que puse  funciona bien y en principio es el que usare, sobre añadir campos como el de la fecha de ultima conexión y otros no creo que lo haga por que ya tengo a Google Analytics asi que dejare ese trabajo para él.

Lo unico que me preocupa es que al guardar cada ip en un registro diferente y no todas en uno pues estos genere mucho mas peso de la bd.

Yo en principio queria que hubiera un registro por cada contenido y dentro de cada registro estos campos:

Id
id del contenido
total de visitas/lecturas
ips que seria un longtext

Tendria que almacenar en un array todas las ips del longtext y despues leer el array para ver si la ip del visitante esta, pero esta forma de hacerlo se escapa a mis conocimientos y lo deje por imposible.

30/Jun/2008 15:15 GMT+1 Perfil ·  Privado · Desconectado ·  Web
EffectedCard
Administrador
Administrador

Haz clic para ver el perfil del usuario

Usuario PRO Usuario PRO
Mensajes: 9.216
Desde: 16/Oct/2004
RE: Contador de visitas

Uff, mejor hacerlo independientemente eh. Hacerlo todo en un longtext....

Podrías hacerlo separando cada IP con una coma IP,IP,IP... y usando luego explode() para separarlas. Después con un bucle que comprobará el array y listo. Pero te aseguro que es mucho mejor lo que te han dicho en forosdelweb.
30/Jun/2008 15:20 GMT+1 Perfil ·  Privado · Desconectado ·  Web
Aimarejada
Webmaster HTML
Webmaster HTML

Haz clic para ver el perfil del usuario
Mensajes: 83
Desde: 25/Mar/2006
RE: Contador de visitas

Ok pues entonces lo hare guardando independientemente cada ip, gracias .

30/Jun/2008 15:52 GMT+1 Perfil ·  Privado · Desconectado ·  Web
Haz clic para ir al tema anterior Haz clic para ir al tema siguiente
Haz clic para añadir una nueva respuesta · Portal · Foros · PHP
Temas similares Autor#VisitasÚltimo post
Contador de paginas 05/Abr/2007, 14:28
Luis_MAG
 1 14508/Abr/2007, 22:06
EffectedCard Ir al último mensaje del tema
[Ayuda] Permitir acción segun numero de visitas15/Feb/2006, 00:19
SkateJack
 2 18315/Feb/2006, 14:09
SkateJack Ir al último mensaje del tema
Opciones:
Versión imprimible del tema
Subscríbete a este tema
Date de baja de este tema
Menear este tema en meneame.net
Ir al subforo:  

TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Todas las fechas y horas son GMT+1. Ahora son las 12:38

Afiliados Plus
Skindario - Soporte Webmasters, Diseño Grafico, Miarroba, Rol + RPG y Mucho Mas TuarrobaGames - Emuladores, Roms, Juegos y RPG TuarrobaEbooks - Ebooks en castellano y Audiolibros Websmasters foro MundoDeluxe Photosherox - Diseñando & Aprendiendo
¿Tu Web Aquí?
Admin: EffectedCard - Skindario, foro soporte de Tuarroba desde el 16/10/04