Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/06/2008, 11:04
Avatar de jaronu
jaronu
 
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Respuesta: Conteo por visitas

Hola

yo estoy ahora trabajando en un tema como ese, por ahora tengo dos tablas de la BD,
fechas_con y contador_con

en fechas_con hay

id_fecha primarykey autoincrement

fecha (date)

y en contador_con

id_visita primarykey autoincrement
ip char
fecha (date)
web_ref (char) para almacenar de donde me viene la visita
pagina_vista char donde almaceno la pagina visitada
id_fecha (int)


Luego para mostrar los resultados, hago un while a la tabla fechas_con para sacar las fechas y dentro de ese WHILE hago otro con la tabla contador_con para sacar las visitas por cada dia,

Hay que mejorarlo, pero te puede orientar bastante, y ademas ahora le estoy implementando que me haga una grafica con el numero de visitas que hago con un tipo de consulta SQL COUNT(*) que me da el numero de IP´s distintas quie he tenido en el dia

Te dejo la funcion cuenta_visita

Código PHP:
function Saber_IP(){ 
        if(
getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){ 
                 
$ip getenv("HTTP_CLIENT_IP"); 
        } 
           elseif(
getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){ 
               
$ip getenv("HTTP_X_FORWARDED_FOR"); 
           } 
           elseif(
getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){ 
               
$ip getenv("REMOTE_ADDR"); 
           } 
           elseif(isset(
$_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){ 

               
$ip $_SERVER['REMOTE_ADDR']; 
           } 
           else { 
               
$ip "Unknown"
           } 
          return 
$ip
    }




function 
cuenta_visita (){

        
$ip Saber_Ip();//obtengo ip
        
$fecha =  date("Y-m-d");
        
$hora date("H:i:s");
        
//$ref = gethostbyaddr($ip); //Obtiene el host de esa IP
        
$ref $_SERVER['HTTP_REFERER']; //web de referencia
        
$vista $_SERVER['PHP_SELF'];//cojo la pagina visitada
        

                                 //busco si existe la fecha de hoy
                
$query1 " SELECT * FROM fechas_con ORDER BY fecha DESC";
        
$result1 mysql_query($query1) or die( mysql_error () );
        
$row1 mysql_fetch_array ($result1);
        
$id_fecha $row1['id_fecha'];
        
        if ( 
$fecha == $row1['fecha']){ //si la fecha ya esta en la base inserto la visita

            
                           
$query 'INSERT INTO contador_con (ip, fecha,web_ref,pagina_vista, id_fecha)
                VALUES (\''
.$ip.'\',\''.$hora.'\',\''.$ref.'\',\''.$vista.'\',\''.$id_fecha.'\')';
                
                                                               
$result mysql_query($query) or die("error de insert1");
                
            }else{  
//si la fecha no esta en la base inserto fecha y visita
                
                
                
$query2 'INSERT INTO fechas_con (fecha)
                VALUE (\''
.$fecha.'\')';
                
$result2 mysql_query($query2) or die("error de insert2");
                
                
                
//busco la id_visita para insertarla en la otra tabla
                
$query3 " SELECT id_fecha FROM fechas_con WHERE fecha = '$fecha'";
                
$result3 mysql_query($query3) or die("error de select query3");
                
$row3 mysql_fetch_array ($result3);
                
$id_fecha $row3['id_fecha'];
                
                
                
//inserto la visita
                
$query 'INSERT INTO contador_con (ip, fecha,web_ref,pagina_vista, id_fecha)
                VALUES (\''
.$ip.'\',\''.$hora.'\',\''.$ref.'\',\''.$vista.'\',\''.$id_fecha.'\')';
                
$result5 mysql_query($query) or die("error de insert4");
                
                    
            
                 }

               } 

Última edición por jaronu; 13/06/2008 a las 11:12