Foros del Web » Programando para Internet » PHP »

problemas con fechas y consultas

Estas en el tema de problemas con fechas y consultas en el foro de PHP en Foros del Web. Buenas compañeros, Estoy haciendo una especie de estadística donde si buscas por fecha ves todas las veces que hacen clic en la web. Pues bien, ...
  #1 (permalink)  
Antiguo 15/09/2006, 10:17
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
problemas con fechas y consultas

Buenas compañeros,

Estoy haciendo una especie de estadística donde si buscas por fecha ves todas las veces que hacen clic en la web.
Pues bien, las fechas las escojes con los imput, así:
Código PHP:
<input name="fechamesmas" type="text" class="negro" size="12" value="<?php echo $dia."-".$mes."-".$year?>"/>&nbsp; 
    al &nbsp;
<input name="fechahoy" type="text" size="12" class="negro" value="<?php echo $diahoy."-".$meshoy."-".$yearhoy?>" />
Y luego donde muestro todos los clic que se han hecho trato de mostrarlos asín:
Código PHP:
$fecha_mesmas=explode("-","".$_POST["fechamesmas"]."");
$dia=$fecha_mesmas[2];
$mes=$fecha_mesmas[1];
$year=$fecha_mesmas[0];
$fecha_mesmasfinal=$year."-".$mes."-".$dia;

$fecha_hoy=explode("-","".$_POST["fechahoy"]."");
$dia=$fecha_hoy[2];
$mes=$fecha_hoy[1];
$year=$fecha_hoy[0];
$fecha_hoyfinal=$year."-".$mes."-".$dia;


      
//NO ME HACE LA BÚSQUEDA
      
$sqlf="SELECT fecha_actual, ip
             FROM cuentaclicks
             WHERE fecha_actual BETWEEN '$fecha_mesmasfinal' AND '$fecha_hoyfinal'
             AND url='http://$web/'
             order by fecha_actual desc"
;
      
$resultadof=mysql_query($sqlf$link)or die(mysql_error());
        
      
$cont=0;
      while(
$rowf=mysql_fetch_array($resultadof)){
      
$fecha_emision=$rowf["fecha_actual"];
        
$fecha_emision=explode("-""$fecha_emision");
        
$dia1=$fecha_emision[2];
        
$mes1=$fecha_emision[1];
        
$year1=$fecha_emision[0        
        $ip
=$rowf["ip"];
        
$cont=$cont 1;
echo 
$dia1."-".$mes1."-".$year1
Bien, el problema es el siguiente, la fecha la muestro en los imput de forma norma, dia-mes-año, pero cuando hago la consulta para mostrar todos los clics entre fecha y fecha, tengo que convertir ese dia mes y año a año-mes-día para que lo entienda la sentencia, claro que no logro mostrar nada, que estoy haciendo mal? no me hace la busqueda????

Si me he explicado mal lo intentaré de nuevo, pero porfavor, necesito ayuda , please!!!

Gracias de antemano , saludosss!!!!
  #2 (permalink)  
Antiguo 15/09/2006, 10:29
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Estás recogiendo la fecha al revés

Código PHP:
$fecha_mesmas=explode("-","".$_POST["fechamesmas"].""); 
$dia=$fecha_mesmas[2]; 
$mes=$fecha_mesmas[1]; 
$year=$fecha_mesmas[0]; 
$fecha_mesmasfinal=$year."-".$mes."-".$dia
Si está llegando en formato dd-mm-aaaa $fecha_mesmas[0] te devuelve el día y lo estás asignando al año

15-09-2006 pasado tal como lo tienes te devuelve

$dia 2006
$mes 09
$year 15

luego lo montas así $year."-".$mes."-".$dia; y devuelve 15-09-2006, osea, tal y como lo tenías al principio
  #3 (permalink)  
Antiguo 15/09/2006, 10:46
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
ostris, que fallo, tienes toda la razón, ahora si me hace la búsqueda pero me imprime esto:

08 16:54:15-09-2006 es decir:
la fecha-->08-09-2009
la hora-->16:54:15

Como podría separarlo???? he probado con esto:
$hora_emision=explode(" ", "".$_POST["fecha_emision"]."");
$hora=$fecha_emision[1];

pero sigue metido y me muebe el mes de sitio... casi peor. alguna sugerencia???

ante todo , muchas gracias por la ayuda un paso mas jijiji

saludoss!!
  #4 (permalink)  
Antiguo 15/09/2006, 10:49
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
por cierto, se me olvidó decir, que el campo donde guardo la fecha es un datetime, pa guardar fecha y hora exacta del clic...
  #5 (permalink)  
Antiguo 15/09/2006, 11:18
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Sería mucho mejor que en vez de tratarlo como string lo trates como date.

Exactamente qué está llegando al servidor en $fecha_mesmas ? (el string completo tal y como está en el form)
  #6 (permalink)  
Antiguo 15/09/2006, 11:37
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Vale, ya veo, está llegando con este formato

(08 16:54:15) -(09) - (2006) para día -mes - año

Simplemente debes montarlo al revés

(2006)-(09)-(08 16:54:15)

por ejemplo

Código PHP:
$fecha $year "-" $mes "-" $dia 
y lo conviertes a timestamp

Código PHP:
$fecha strtotime($fecha); 
y le pides que te devuelva un array con los datos de esa fecha

Código PHP:
$fecha getdate($fecha); 
y de ahí le sacas sólo los que te interese que son el año, el mes y el día

Código PHP:
$year$fecha['year'];
$mes $fecha['mon'];
$dia $fecha['mday']; 
  #7 (permalink)  
Antiguo 18/09/2006, 01:45
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
Hola Tunait, hola compañeros:

He hecho lo que me has dicho y me ha funcionado, me saca la fecha ordenada, lo único que la hora la pierdo, o no la se imprimir:
Código PHP:
<?php 
$fecha_mesmas
=explode("-","".$_POST["fechamesmas"]."");
$dia=$fecha_mesmas[0];
$mes=$fecha_mesmas[1];
$year=$fecha_mesmas[2];
$fecha_mesmasfinal=$year."-".$mes."-".$dia;


$fecha_hoy=explode("-","".$_POST["fechahoy"]."");
$dia=$fecha_hoy[0];
$mes=$fecha_hoy[1];
$year=$fecha_hoy[2];
$fecha_hoy=$year."-".$mes."-".$dia;

echo 
$fecha_hoy;//2006-09-18
echo "<br>";
echo 
$fecha_mesmasfinal;//2006-9-1 
      
      
$sqlf="SELECT fecha_actual, ip
             FROM cuentaclicks
             WHERE fecha_actual BETWEEN '$fecha_mesmasfinal' AND '$fecha_hoy'
             AND url='http://$web/'
             order by fecha_actual desc"
;
      
$resultadof=mysql_query($sqlf$link)or die(mysql_error());
        
      
$cont=0;
      while(
$rowf=mysql_fetch_array($resultadof)){
      
$fecha_emision=$rowf["fecha_actual"];
      
$fecha_emision=explode("-""$fecha_emision");
      
$dia1=$fecha_emision[2];
      
$mes1=$fecha_emision[1];
      
$year1=$fecha_emision[0];
        
      
$fecha_result=$year1."-".$mes1."-".$dia1;
      
$fecha3 strtotime($fecha_result);  
      
$fecha3 getdate($fecha3);  
      
$year3 $fecha3['year']; 
      
$mes3 $fecha3['mon']; 
      
$dia3 $fecha3['mday']; 
      
$fecha_result=$dia3."-".$mes3."-".$year3;
    
    
//$hora_emision=explode(" ", "".$_POST["fecha_emision"]."");
    //$hora=$fecha_emision[1];

      
$ip=$rowf["ip"];
      
$cont=$cont 1;

echo 
$fecha_result//me imprime la fecha, pero si hago echo $hora; me imprime nuevamente el mes .
he intentado hacer un explode para separar la fecha pero no logro quitarla,hay alguna función? toy mirando en el libro de php, pero por ahora no logro ver ninguna que me sirva.

Muchisimas gracias por todo nuevamente

Saludoss!!
  #8 (permalink)  
Antiguo 18/09/2006, 02:01
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
mmm me he dado cuenta que he metido la pata, he escrito mal el explode de la hora, quedaría así:

$hora_emision=explode(" ", "$fecha_emision");
$hora=$hora_emision[1];

Poniendolo bien ya no me imprime el mes, sin embargo ya no me imprime nada, me queda en blanco $hora. snif snif
  #9 (permalink)  
Antiguo 18/09/2006, 02:44
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
mmm sigo pensando en esto...

y si la consulta final en vez de tratar de mostrar fecha_actual utilizo algo como DATE_FORMAT????? pero no se como montar la consulta ya que hay dos condiciones, que la hora se encuntre entre dos fechas y que la url se igual a la que me envia...

Como podria poner entonces la consulta:
Código PHP:
SELECT fecha_actualip
FROM cuentaclicks
WHERE fecha_actual BETWEEN 
'$fecha_mesmasfinal' AND '$fecha_hoy'
AND url='http://$web/'
order by fecha_actual desc 
  #10 (permalink)  
Antiguo 18/09/2006, 03:26
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
getdate() devuelve un array asociativo que incluye la hora, minutos y segundos, pídelas por ahí, es lo más sencillo

$hora = $fecha['hours'];
$minuto = $fecha['minutes'];
$segundo = $fecha['seconds'];

  #11 (permalink)  
Antiguo 18/09/2006, 03:34
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
jo, ya está, funciona eres la caña, esta semana he dado un curso intensivo sobre las fechas, jijiji, espero que se me quede bien gravado en el coco todo esto,

Pues muchísimas gracias Tunait y saludos pa todos!!
  #12 (permalink)  
Antiguo 18/09/2006, 03:57
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Muchas de nadas, me alegra que lo resolvieras

saludos
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 13:00.