Mostrar 10 registros mas vistos

Iniciado por musicaward, 28 Mayo 2011, 03:02 AM

0 Miembros y 1 Visitante están viendo este tema.

musicaward

Hola amigos , tengo una tabla llamada peliculas en ella almaceno id nombre imagen , etc , le acabo de agregar un campo llamado hits (todavia esta en blanco x$ )

mi consulta es quiero mostrar las 10 id , o 10 registros + mas vistos  , he visto algunos mensajes pero me han quedado poco claros :pensando:

pero para eso aconsejan crear un campo hits o visitas donde se incrementara +1 por cada vez que se abra dicha id

Vi algo por hay que deberia hacer el siguiente codigo que pongo abajo no es mio solo lo tome de un ejemplo que encontre


//recoges con GET la variable titulo del link
$titulo = $_GET['titulo'];
$sql = "SELECT titulo, enlace1 FROM pelis WHERE titulo='$titulo'";  
$result = mysql_query($sql,$link);
$row = mysql_fetch_array($result);  
$enlace=$row['enlace1'];
mysql_query("UPDATE pelis SET vecesvista=vecesvista+1 WHERE titulo='$titulo'",$link);
mysql_close($link);


me echan una manita  o algun consejo :-)

Shell Root

#1
Pues sería algo más simple como por ejemplo, supongamos que estamos viendo la noticia. La URL quedaría así
Código (php) [Seleccionar]
# http://127.0.0.1/PoC/noticia.php?idNoticia=1234

Ahora sólo tienes que tomar el idNoticia e incrementarle el campo HIT,
Código (php) [Seleccionar]
 $idNoticia = $_GET['idNoticia'];
 $sql = "UPDATE pelis SET hit = '".$cont."' WHERE( idNoticia = '".$idNoticia."' );";
 $query = mysql_query( $sql, $cnn );
 if(!$query){
   print "Error al ejecutar la query.";
 }

Para $cont, debes de realizar un SELECT para averiguar el valor actual.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

<<<-Basura->>>

Creo que lo que quieres hacer es mostrar los ld mas abiertos, creo que el algoritmo de la burbuja serviría en este caso para acomodar de mayor a menor
<<<--Basura-->>>

Shell Root

Eso no tiene que ver, puedes hacer una consulta y ordenarlos así,
Código (sql) [Seleccionar]
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY "nombre_columna" [ASC, DESC]
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Ari Slash

Holas

para aumentar el contador, haces lo que te dice shellroot, claro que en esta linea:
Código (php) [Seleccionar]
$sql = "UPDATE pelis SET hit = '".$cont."' WHERE( idNoticia = '".$idNoticia."' );";
yo usaria un sprintf()

y para mostrar las 10 id mas vistas, es practicamente lo mismo que acaba de escribir shellroot pero mas acomodado:
Código (sql) [Seleccionar]
Select id,nombre from peliculas order by hits desc
y tomas solo los 10 primeros registros.

Saludos

musicaward

#5
yo tengo mi web asi
Citarhttp://127.0.0.1/PoC/Peliculas_1.php?id=4

no logro tomar el valor del id y no lo logro implemtar  :-(

puse :

 $idNoticia = $_GET['id'];
 $sql = "UPDATE peliculas SET Hits = '".$cont."' WHERE( id = '".$idNoticia."' );";
 $query = mysql_query( $sql, $cnn );
 if(!$query){
   print "Error al ejecutar la query.";
 }


me sale el print del error

>Warning</b>:  mysql_query() expects parameter 2 to be resource, null given in <b>/home/*****/public_html/Peliculas_1.php</b> on line <b>55<

Shell Root

Supongo que ya tienes la conexión, no?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

musicaward

#7
si lo tengo acabo de solucionar el error , el codigo quedo asi para algun despitado como yo que le sirva  :xD

Código (php) [Seleccionar]
$idNoticia = $_GET['id'];  
 $sql = "UPDATE peliculas SET Hits = Hits + 1 WHERE( id = '".$idNoticia."' );";  
 $query = mysql_query( $sql);  
 if(!$query){  
   print "Error al ejecutar la query.";  
 }

va de 10 y lo llamo por un select y se cumple lo que necesitaba  ;-)

bomba1990

creo que seria bueno siempre en cualquier consulta establacer un limite, y si solo quieres 10 puedes hacer:

Código (sql) [Seleccionar]
SELECT id,nombre FROM peliculas ORDER BY hits DESC limit 10
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve