Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

consulta mysql

Estas en el tema de consulta mysql en el foro de Mysql en Foros del Web. Hola: Mi problema es el siguiente, no tengo muchos conocimientos en php y mysql, y con su ayuda y manuales voy haciendo cositas. Estoy intentando ...
  #1 (permalink)  
Antiguo 28/01/2010, 18:43
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
consulta mysql

Hola:

Mi problema es el siguiente, no tengo muchos conocimientos en php y mysql, y con su ayuda y manuales voy haciendo cositas.

Estoy intentando crear un contador que me registre la IP del usuario, el día y la hora a la que accede a la Web, si hace más de 60 minutos que no accede quiero que sume uno a la´última visita registrada y ponga el número en el contador, pero si lleva menos tiempo sin visitar la página no quiero que lo tengo en cuenta, por lo que quiero que le ponga el número de la última visita sin sumar ninguno, de ese modo no se me acumularan visitas cada vez que abran la página si no que solo sumará uno cada vez que la visites si esa IP hace más de 60 minutos que la visito.

Pero como digo el codigo para controlar el periodo de tiempo en la consulta SQL no me funciona y por ende me da error.

Haber si alguno de ustedes puede decirme que esta mal.

El codigo que tengo es el siguiente:

Código PHP:
<?
    $ip 
$_SERVER['REMOTE_ADDR'];
    
$DiaHora time ();
    
$Fecha date "Y/m/d" $DiaHora );
    
$Hora date "H:i:s" $DiaHora );
    
    
$conexion mysql_connect("fdb2.runhosting.com""379834_datos""cornella");
    if (!
mysql_select_db("379834_datos")) {
           echo 
"Error=Error, No ha sido posible seleccionar la BD: " mysql_error();
           exit;
    }
    
    
$sql "SELECT * FROM visitas WHERE IP= '$ip' AND Hora BETWEEN TIME_ADD(NOW(), INTERVAL -60 MINUTE) AND NOW()";
    
    
$resultado mysql_query($sql);
    
    if (
mysql_num_rows($resultado)>0) {
        if (
$row mysql_fetch_array($resultado)){
            
$sql2 "SELECT * FROM visitas ORDER BY `ID_Visitas` DESC LIMIT 1";
            
$resultado2 mysql_query($sql2);
            if (
$row mysql_fetch_array($resultado2)){
                
$Numero $row['Hits'];
                
$Numero ++;
            }
            
mysql_query("insert into visitas (Fecha, Hora, IP, Hits) values ('$Fecha', '$Hora', '$ip', '$Numero')");        
        }
    }
    Else {
        if (
$row mysql_fetch_array($resultado)){
            
$sql2 "SELECT * FROM visitas ORDER BY `ID_Visitas` DESC LIMIT 1";
            
$resultado2 mysql_query($sql2);
            if (
$row mysql_fetch_array($resultado2)){
                
$Numero $row['Hits'];
            }
            
mysql_query("insert into visitas (Fecha, Hora, IP, Hits) values ('$Fecha', '$Hora', '$ip', '$Numero')");        
        }
    }
    
?>
Muchisimas gracias por su interes en que podamos aprender todos.

un saludo.
Toni
  #2 (permalink)  
Antiguo 28/01/2010, 19:05
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: consulta mysql

hola joseantonim

es dificil saber si tienes problemas en php o en mysql.

replantea tu pregunta si es de mysql evitando poner codigo php. (Por normas del foro)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/01/2010, 22:46
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta mysql

Intentare hacerlo de una forma más concreta;

1º- Necesito que de una tabla mysql que tengo con las visitas grabadas realizar una consulta en la que me escoja los registros de una ip determinada y que se hayan realizado en la última hora.

¿Esta SQL es correcta para ello?:

$ip = $_SERVER['REMOTE_ADDR'];

$sql = "SELECT * FROM visitas WHERE IP= '$ip' AND Hora BETWEEN TIME_ADD(NOW(), INTERVAL -60 MINUTE) AND NOW()";


2º Si no hay registros ya le hare que realize un nuevo registro con el dato y en caso que existan registros le pediré el dato que pone en el campo 'Hits'

Espero que de este modo sea más sencillo, entender lo que pregunto.

Gracias por el interes, un saludo.
Toni
  #4 (permalink)  
Antiguo 29/01/2010, 02:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: consulta mysql

¿Qué guardas y cómo lo guardas en el campo Hora?
¿funcionaría algo así?... WHERE... HOUR(Hora) = HOUR(DATE_ADD(NOW(), INTERVAL - 1 HOUR))

No he probado nada.

Pero te diré que para comparar tendrías que usar un campo para la fecha también, y no sé si lo tienes o no. Dinos lo que tienes.
  #5 (permalink)  
Antiguo 29/01/2010, 11:15
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta mysql

La tablacontiene los siguientes campos;
Id_Visitas (autonumerico)
Fecha (Data) Registra la fecha actual en el momento de acceder a la página.
Hora (Time) Registra la hora actual en el momento de acceder a la página.
Ip (Texto) Registra la IP del ordenador que accede a la página.
Hits (Integer) Ha de ser el que cuente el número de visitas a mostrar.

Gracias por ayudarme, voy a seguir intentandolo, probando lo que me sugieres.

Un saludo.
Toni
  #6 (permalink)  
Antiguo 29/01/2010, 12:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: consulta mysql

WHERE... fecha = CURDATE() AND (HOUR(hora) BETWEEN HOUR(DATE_ADD(NOW(), INTERVAL - 1 HOUR)) AND HOUR(NOW()))

No lo he probado

Etiquetas: Ninguno
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 07:56.