Foros del Web » Programando para Internet » PHP »

Mostrar registro más visitado

Estas en el tema de Mostrar registro más visitado en el foro de PHP en Foros del Web. tengo las siguientes tablas: contenido visitas los campos de visitas son ip url categoria id cada vez que se incluye una nueva visita, esta verifica ...
  #1 (permalink)  
Antiguo 13/03/2012, 12:16
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Exclamación Mostrar registro más visitado

tengo las siguientes tablas:

contenido
visitas


los campos de visitas son

ip url categoria id

cada vez que se incluye una nueva visita, esta verifica si la ip no es la misma y por lo tanto se crea un nuevo registro...

y para mostrarlo en la página (cuantas visitas tiene esta)... hago lo siguiente:

Código PHP:
Ver original
  1. $consulta_visitas = mysql_query("SELECT * FROM visitas WHERE url='$url', categoria='$categoria'");
  2.        
  3. $resultado_visitas = mysql_num_rows($consulta_visitas);

me muestra correctamente... pero lo que quiero es hacer crear un espacio en la página para mostrar los 5 registros más visitados... osea los que tengan más url repetidos en la tabla "visitas"

¿qué consulta haría a la base de datos para que me muestre los registros más repetidos de la tabla "visitas"...?
  #2 (permalink)  
Antiguo 13/03/2012, 12:22
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

bueno, en primer lugar esto tendria que ir en foro de MYSQL, pero aqui una opcion aver si te funciona: :D

Código MySQL:
Ver original
  1. SELECT *,CONCAT((SELECT COUNT(url) FROM visitas WHERE url='$url' , categoria='$categoria')) as visitas FROM visitas WHERE url='$url', categoria='$categoria' ORDER BY visitas DESC LIMIT 0,5
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #3 (permalink)  
Antiguo 13/03/2012, 13:01
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

Lo que quiero es mostrar los 5 registros más visitados... con eso no me sale...

lo que podría hacer es contar las url de cada registro igual y mostrar las 5 mayores..
  #4 (permalink)  
Antiguo 13/03/2012, 13:36
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Mostrar registro más visitado

Para eso tienes que usar MAX en la consulta y luego pones el LIMIT

SELECT *, MAX(contador) FROM tu_tabla ....

Saludos,
  #5 (permalink)  
Antiguo 13/03/2012, 13:55
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

Cita:
Iniciado por OsSk4R Ver Mensaje
Para eso tienes que usar MAX en la consulta y luego pones el LIMIT

SELECT *, MAX(contador) FROM tu_tabla ....

Saludos,

UTILIZO EL SIGUIENTE CÓDIGO:

Código SQL:
Ver original
  1. SELECT *, MAX((SELECT COUNT(url) FROM efeps_visitas)) FROM efeps_visitas LIMIT 0,5"

lo que hace es mostrar sólo un registro y este es el último por orden del alfabeto..
  #6 (permalink)  
Antiguo 13/03/2012, 14:48
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

Código MySQL:
Ver original
  1. SELECT *,CONCAT((SELECT COUNT(url) FROM visitas WHERE url='$url' , categoria='$categoria')) as visitas FROM visitas WHERE url='$url', categoria='$categoria' ORDER BY visitas DESC LIMIT 0,5
Estoy casi seguro que la consulta que te di anteriormente deberia haberte funcionado, por que lo que esta haciendo es mostrarte solo 5 registros con una columna adicional que viene a ser el numero de visitas de cada "url" y ordenadas decendientemente que es justo lo que necesitas... ¿? lo has probado¿? ¿que resultados te muestra?
__________________
<?="Hello World"?> -> si te gustÓ dale +1

Última edición por xxxivanxxx; 13/03/2012 a las 14:55
  #7 (permalink)  
Antiguo 13/03/2012, 16:05
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Mostrar registro más visitado

Cita:
Iniciado por tonydx16 Ver Mensaje
UTILIZO EL SIGUIENTE CÓDIGO:

Código SQL:
Ver original
  1. SELECT *, MAX((SELECT COUNT(url) FROM efeps_visitas)) FROM efeps_visitas LIMIT 0,5"

lo que hace es mostrar sólo un registro y este es el último por orden del alfabeto..
MAX no se usa así. Por favor, echale un vistazo al ejemplo dónde explica su uso y hazte una idea Aquí.

Saludos,
  #8 (permalink)  
Antiguo 13/03/2012, 21:08
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

Cita:
Iniciado por xxxivanxxx Ver Mensaje
Código MySQL:
Ver original
  1. SELECT *,CONCAT((SELECT COUNT(url) FROM visitas WHERE url='$url' , categoria='$categoria')) as visitas FROM visitas WHERE url='$url', categoria='$categoria' ORDER BY visitas DESC LIMIT 0,5
Estoy casi seguro que la consulta que te di anteriormente deberia haberte funcionado, por que lo que esta haciendo es mostrarte solo 5 registros con una columna adicional que viene a ser el numero de visitas de cada "url" y ordenadas decendientemente que es justo lo que necesitas... ¿? lo has probado¿? ¿que resultados te muestra?
El código que me dice no sale...

Código MySQL:
Ver original
  1. SELECT *,CONCAT((SELECT COUNT(url) FROM visitas WHERE url='$url' , categoria='$categoria')) as visitas FROM visitas WHERE url='$url', categoria='$categoria' ORDER BY visitas DESC LIMIT 0,5

esta parte:

Código MySQL:
Ver original
  1. (SELECT COUNT(url) FROM visitas WHERE url='$url' , categoria='$categoria')

aquí me cuenta todos los registros donde tenga la misma url de la página... osea con esto muestro el número de visitas de la página en la que estoy..

lo siquiente es:

Código MySQL:
Ver original
  1. SELECT *,CONCAT(....) as visitas FROM visitas WHERE url='$url', categoria='$categoria' ORDER BY visitas DESC LIMIT 0,5

aquí es lo mismo...

como dije tengo dos tablas:

contenido
visitas



EN visitas almaceno las url cada vez que alguien ingresa a la página (obviamente verificando que no sea la misma IP).. lo almacena así más o menos...


ip------------url-----------categoria--------id

15151 -----pagina-web---------demo-------------1
26565 -----pagina-web-----------demo------------2
454554 -----otra-pagina-web-----demo-------------3


lo quiero que es mostrar los 5 registros que más haya...osea los más visitados...

Última edición por tonydx16; 13/03/2012 a las 21:18
  #9 (permalink)  
Antiguo 13/03/2012, 21:53
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

Cita:
aquí es lo mismo...
No, no es lo mismo:

1º esta parte:

Código MySQL:
Ver original
  1. (SELECT COUNT(url) FROM visitas WHERE url='$url' , categoria='$categoria')

como bien dices muestra la cantidad de visitas de cada "URL" o registro.

pero con el uso de CONCAT:

Código MySQL:
Ver original
  1. CONCAT(...)

unimos a cada registro su respectivo numero de visitas con lo cual puedes obtener un resultado asi:

ip------------url-----------categoria--------id---------visitas
15151 -----pagina-web---------demo-------------1------------10
26565 -----pagina-web-----------demo------------2------------5
454554 -----otra-pagina-web-----demo-------------3------------20

y con el ORDER BY visitas DESC obtienes

ip------------url-----------categoria--------id---------visitas
454554 -----otra-pagina-web-----demo-------------3------------20
15151 -----pagina-web---------demo-------------1------------10
26565 -----pagina-web-----------demo------------2------------5

que son tus URL mas visitadas ¬¬
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #10 (permalink)  
Antiguo 14/03/2012, 00:27
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

ok..pero me sale el siguiente error

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\index.php on line 1086

el código que uso es el siguiente

Código PHP:
Ver original
  1. $consulta = .......;
  2.  
  3.         while($resultado = mysql_fetch_array($consulta)){
  4.             echo '<a href="">'.$resultado[0].'</a><br />';
  5.         }  
  6.         ?>
  #11 (permalink)  
Antiguo 14/03/2012, 10:01
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

pues ahora aqui lo tienes, con esto ya debe funcionarte correctamente : (lo acabo de probar)

Código MySQL:
Ver original
  1. SELECT *,CONCAT((SELECT COUNT(*) FROM visitas v2 WHERE v2.url=v.url)) as totalv FROM visitas v GROUP BY url ORDER BY totalv DESC LIMIT 0,5

en php:

Código PHP:
Ver original
  1. <?php
  2.     $consulta =mysql_query("SELECT *,CONCAT((SELECT COUNT(*) FROM visitas v2 WHERE v2.url=v.url)) as totalv FROM visitas v GROUP BY url ORDER BY totalv DESC LIMIT 0,5");    
  3.         while($resultado = mysql_fetch_array($consulta)){
  4.         echo $resultado['url']."------VISITAS: ".$resultado['totalv']."<br/>";
  5.    }  
  6. ?>
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #12 (permalink)  
Antiguo 14/03/2012, 10:34
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

ok.. me sale una lista de 5, ahora, en todas me sale : VISITAS: 1 además no está ordenado DESC por visitas.... lo pruebo en una base de datos de muy pocos registros para verificar y nada....

----------------------

me di cuenta que sale 1 porque es el numero de visitas que tiene la página donde estoy... si estoy en una que tiene 5 entonces sale 5 a todos el grupo

Última edición por tonydx16; 14/03/2012 a las 11:08
  #13 (permalink)  
Antiguo 14/03/2012, 11:25
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

a que te refieres con
Cita:
la página donde estoy
si la consulta es indiferente a la pagina donde estas.
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #14 (permalink)  
Antiguo 14/03/2012, 11:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

por la consulta seguro..

visitas v2 WHERE v2.url=$url

aquí indica que es la misma url en la que estoy...
  #15 (permalink)  
Antiguo 14/03/2012, 11:31
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

Cita:
Iniciado por tonydx16 Ver Mensaje
por la consulta seguro..

visitas v2 WHERE v2.url=$url

aquí indica que es la misma url en la que estoy...
tu no tienes que cambiar nada en la consulta !!!!

dejala como esta :@

yo no he puesto ninguna variable PHP en la consulta¿?¿? xq modificaste la consulta¿?¿?¿

yo no he puesto:
v2.url=$url

sino
v2.url=v.url
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #16 (permalink)  
Antiguo 14/03/2012, 11:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

jaja si pues yo lo cambie.. ahora que probé si sale...

pero otra consulta que significa colocarque v2 o v, es crear variables así?
  #17 (permalink)  
Antiguo 14/03/2012, 11:38
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Mostrar registro más visitado

pues es un "alias" en este caso de las tablas para no tener que escribir todo el nombre
ejm:
Código MySQL:
Ver original
  1. FROM visitas v
nos sirvee para llamar a las columnas asi: v.columna en vez de visitas.columna :)

PD: por que no creas mejor una columna llamada total_visitas y segun van siendo visitadas tus URL, solo le sumas +1 :)

saludos.
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #18 (permalink)  
Antiguo 14/03/2012, 11:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

ok.. gracias por las respuestas...
  #19 (permalink)  
Antiguo 13/07/2012, 16:02
 
Fecha de Ingreso: febrero-2011
Mensajes: 233
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Mostrar registro más visitado

Actualmente me di cuenta que cuando coloco ese código no salen los más vistos... alguna ayuda.. por favor.
  #20 (permalink)  
Antiguo 13/07/2012, 16:29
Avatar de Nopal_Studio  
Fecha de Ingreso: julio-2012
Ubicación: DF
Mensajes: 42
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: Mostrar registro más visitado

Bueno para poder sacar esto puedes hacer lo siguiente:

Código PHP:
Ver original
  1. sql = "SELECT url, COUNT(*) AS total FROM visitas Where url = $url AND categoria = $categoria GROUP BY url ORDER BY COUNT(*) DESC LIMIT 5"

con esto te mostrará la url y la cantidad de visitar que tiene, puede salirte algo asi:

Url Total
http://blaala.com 50
http://balala.com 40
http://blaala.com 30
http://balala.com 20
http://balala.com 10

Saludos y éxito.

Etiquetas: registros, visitados
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

SíEste tema le ha gustado a 1 personas




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