Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/07/2008, 12:21
Avatar de quinqui
quinqui
 
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Consulta sobre contador para articulos y sistema de ranking

Pues sí, ese es un fallo que tiene: que suma 1 cada vez que carga la página, y si la persona le da Actualizar Página, pues le sumará la visita -_-U... En mi caso no es crítico, porque mi página es personal y generalmente no da para hacer F5, pero en otro tipo de sitios, pues ya es otro cuento ¬_¬...

Sobre lo de cómo lo implementé, pues sí, dentro de una función. La verdad todo en ese sitio que hice va encapsulado en funciones (lo cual espero optimizar cuando haga mi v.3 del sitio, con clases y todo eso tan bonito de la programacion orientada a objetos ^^).

En cuanto a lo del ranking, te dejo un ejemplo de implementacion.

Código PHP:
<?
function Ranking($id)

  
$ranking 0;

  
// consultas las visitas de los articulos en la base
  
$result mysql_query("select id from articulos order by visitas desc");
  
$i 1;

  while (
$fila mysql_fetch_array($result))
  {
    if (
$fila["id"] == $id)
    {  
$ranking $i; break;  }
    
$i++;
  }

  return 
$ranking;


function 
SumarVisita($id)
{
  
$contador 0;

  
// sumas la visita del articulo en la base
  
$result mysql_query("update articulos set visitas = visitas + 1 where id = ".$id);

  if (
$result)
  {
    
// obtienes el nuevo contador
    
$result2 mysql_query("select visitas from articulos where id = ".$id);
    
    while (
$fila mysql_fetch_array($result))
    {   
$contador $fila["visitas"];  }
  }

  return 
$contador;
}
?>

<?
// el contador
$contador SumarVisita($_GET["id"]);

print 
$contador;

// la posición en el ranking
print Ranking($_GET["id"])."º";

?>
Ahi no puse el cierre del objeto mysql, porque es la idea general del cuento. Al final le agregué el Contador también...
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Última edición por quinqui; 23/07/2008 a las 12:31