Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/04/2005, 21:53
netoec84
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
funcion para el numero de visitas (cookies o bdd)

Que tal, tengo una funcion cuyo objetivo es incremetnar los hits de una "grupo o artista", la idea es cada que un usuario visite la pagina del artista, los hits del mismo sumen en uno, pero si lo visita otra ves el mismo dia no lo incremente o si visita otra seccion del mismo tampoco lo incremente, si lo visita el dia siguiente si lo incrementaria. Para ello guardo el ip, la fecha de visita, el codigo de artista y un id general en la base de datos. En estos momentos he notado un comportamiento extraño, ya que apenas se registraron 3 ips diferentes y ya el contador esta en 11, ¿cual es el problema? pienso que puede ser por el lado de las consultas a la bdd.

Código PHP:
function incrementarHits()
{
    global 
$conn$grupoid;
    
$ip_user getenv("REMOTE_ADDR");
    
    
$sql "SELECT *
            FROM ips
            WHERE ip LIKE '"
.$ip_user."' AND aid = $grupoid";
    
    
$resultado $conn->Execute($sql);
    
$numResultado $resultado->NumRows();

    if(
$numResultado<=0)
    {
        
$sql "INSERT INTO ips (id, ip, fecha, aid) 
                VALUES ('', '"
.$ip_user."', CURDATE(), $grupoid)";
        
$conn->Execute($sql);

        
$sql "UPDATE artista
                SET hits = (hits + 1)
                WHERE id = $grupoid
                LIMIT 1"
;
        
$conn->Execute($sql);
    }
    else
    {
        list(
$ih_id$ih_ip$ih_fecha$ih_aid) = $resultado->fields;
        
$resultado->Close();
        
$sql "SELECT *
                FROM ips
                WHERE ip LIKE '" 
$ip_user "' AND CURDATE() > fecha";
        
$resultado=$conn->Execute($sql);
        
$numResultado2 $resultado->NumRows();
        if(
$numResultado2 0)
        {
            
$resultado->Close();
            
            
$sql "UPDATE ips
                    SET ip = '"
$ip_user ."', fecha = CURDATE()
                    WHERE id = $ih_id
                    LIMIT 1"
;
            
$conn->Execute($sql);
            
            
$sql "UPDATE artista
                    SET hits = (hits + 1)
                    WHERE id = $grupoid
                    LIMIT 1"
;
            
$conn->Execute($sql);
        }
    }

tambien no se si sea lo mas conveniente almacenar las ips en una bdd o mejor usar cookies, que me recomiendan.

Saludos
__________________
Guia Telefonica
ecuadorMusical.com