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");
                
                    
            
                 }
 
               }