Foros del Web » Programando para Internet » PHP »

contador que en lugar de horas cuente en minutos

Estas en el tema de contador que en lugar de horas cuente en minutos en el foro de PHP en Foros del Web. hola forer@s tengo este contador que saque de un ejemplo en la web ya hace tiempo: Código PHP: function  contador () {           $ip  =  ...
  #1 (permalink)  
Antiguo 22/08/2012, 14:37
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
contador que en lugar de horas cuente en minutos

hola forer@s

tengo este contador que saque de un ejemplo en la web ya hace tiempo:

Código PHP:
function contador() {
    
    
$ip $_SERVER['REMOTE_ADDR'];
    
    
$sql="select ip_visto, TIMEDIFF(NOW(), fecha_visto), fecha_visto, num_visto from webadmon_contador where ip_visto='$ip'";
    
$rs=mysql_query($sql) or die("Problemas al ejecutar select SQL ".mysql_error());
    
$fila=mysql_fetch_array($rs);
    
    
$tiempo=$fila[1]; //Diferencia entre fecha guardada y fecha actual
    
    
$num_visitas=$fila[3]; //Número de visitas
    
    
$horas_t=substr($tiempo,0,2); //Número de horas transcurridas
    
    
$tiemRes 1//Varible de tiempo en horas para restringir la visita
    
    
if (mysql_num_rows($rs)==0){
        
$sql_insert="insert into webadmon_contador(ip_visto, num_visto, fecha_visto) values('$ip', 1, NOW())";
        
mysql_query($sql_insert) or die("Problemas al ejecutar la insert SQL ".mysql_error());
    }
    
    elseif (
mysql_num_rows($rs) > && $horas_t $tiemRes){
        
$sql_update="update webadmon_contador set fecha_visto=NOW(), num_visto='$num_visitas'+1 where ip_visto='$ip'";
        
mysql_query($sql_update) or die("Problemas al ejecutar update SQL ".mysql_error());
    }
    
    
$sql_no_visit="select SUM(num_visto) from webadmon_contador"//Obtenemos la suma de todas las visitas
    
$rs=mysql_query($sql_no_visit) or die("Problemas al ejecutar select SQL ".mysql_error());
    
$fila=mysql_fetch_array($rs); //Almacenanos el resultado de la consulta en un arreglo
    
$num_visitas=$fila[0]; //Número de visitas
    
    //echo $num_visitas;

me interesa poder cambiar esta linea:

$tiemRes = 1; //Varible de tiempo en horas para restringir la visita

que en lugar de que el parametro sea en horas pueda ponerle yo por ejemplo 10 minutos, 20 o 30

ya se que saldran opiniones que si la visita no es valida cada 10 muinutos etc etc yo estoy de acuerdo, pero es requisito del cliente, en fin

en la tabla el campo en que se guarda la fecha es:


nombre
fecha_visto

tipo
datetime

desde ya muchas gracias
  #2 (permalink)  
Antiguo 22/08/2012, 15:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: contador que en lugar de horas cuente en minutos

En $tiempo ya tienes la diferencia, supongo que será en formato de horas 00:00

Si te fijas, con substr() extraes sólo las horas, lo mismo puedes hacer con los minutos y, luego, para calcular los minutos totales: (horas * 60) + minutos.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/08/2012, 19:20
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: contador que en lugar de horas cuente en minutos

hola triby!!

gracias por contestar me has dado un poco de claridad

ok entonces si lo que tengo que recuperar son los minutos, quedaria algo asi:

$horas_t=substr($tiempo,3,2);

entonces, por ejemplo si tengo:

$tiempo= 01:50:11

$horas_t seria 50

ok, entonces ahora lo que sigue, es moverle aqui no?

elseif (mysql_num_rows($rs) > 0 && $horas_t > $tiemRes){

por ejemplo si yo pongo

$tiemRes = 10; (10 munitos)

y $horas_t=50

seria

50>10

si funcionaria no?

gracias
  #4 (permalink)  
Antiguo 22/08/2012, 19:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: contador que en lugar de horas cuente en minutos

Si va a ser por minutos, no te compliques la vida, convierte el tiempo transcurrido a minutos y con eso haces la comparación.

Ejemplos según la diferencia obtenida:

00:05 - 5 minutos, no han transcurrido aún los 10 de límite
01:05 - 65 minutos, ya pasaron esos 10, pero como sugieres la comparación, no tomarás en cuenta los 60 de la hora
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 23/08/2012, 11:29
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: contador que en lugar de horas cuente en minutos

hola triby, fijate como le hice:

Código PHP:
Ver original
  1. $horas_t=substr($tiempo,0,2);//Número de horas transcurridas
  2.    
  3. $minutos_t=substr($tiempo,3,2);//Número de minutos transcurridas
  4.    
  5. $total_minutos=($horas_t*60)+$minutos_t;
  6.    
  7. $tiemRes = 10; //Varible de tiempo en minutos para restringir la visita
  8.  
  9. if (mysql_num_rows($rs)==0){
  10.     $sql_insert="insert into webadmon_contador(ip_visto, num_visto, fecha_visto) values('$ip', 1, NOW())";
  11.     mysql_query($sql_insert) or die("Problemas al ejecutar la insert SQL ".mysql_error());
  12. }
  13. elseif (mysql_num_rows($rs) > 0 && $total_minutos > $tiemRes){
  14.     $sql_update="update webadmon_contador set fecha_visto=NOW(), num_visto='$num_visitas'+1 where ip_visto='$ip'";
  15.     mysql_query($sql_update) or die("Problemas al ejecutar update SQL ".mysql_error());
  16. }

como ves ya funcionaria correctamente?
  #6 (permalink)  
Antiguo 23/08/2012, 12:53
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: contador que en lugar de horas cuente en minutos

Sí, parece estar bien, pero... siempre vas a actualizar (o insertar) fecha_visto?... es decir, si no vas a permitir la visita (por la restricción de tiempo), tampoco se actualizaría esta parte... aunque hablo "a ciegas" porque desconozco el proyecto.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 24/08/2012, 07:43
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: contador que en lugar de horas cuente en minutos

Se supone que la mecánica es:

si la ip del visitante no se encuentra registrada -> inserta la ip, con la fecha/hora e inicializa num visto en 1

si no -> si la ip si esta registrada y han pasado mas de 10 minutos -> actualiza la fecha/hora y suma 1 a num visto (veces vista la pagina)

y por ultimo hace una consulta para sacar el numero de veces que se ha visto la pagina :D

Gracias por tu ayuda Triby!!

Etiquetas: contador, horas, lugar, minutos, mysql, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:18.