Foros del Web » Programando para Internet » PHP »

Verificar fechas para hacer calculos

Estas en el tema de Verificar fechas para hacer calculos en el foro de PHP en Foros del Web. En ese mensaje te sugerí: 1- Crear un arreglo asociativo donde el índice es la fecha y el valor inicial es falso 2- Consultar la ...

  #31 (permalink)  
Antiguo 10/08/2012, 11:36
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: Verificar fechas para hacer calculos

En ese mensaje te sugerí:

1- Crear un arreglo asociativo donde el índice es la fecha y el valor inicial es falso
2- Consultar la tabla (usando between), donde sólo vas a obtener fechas de temporada alta
3- Recorrer los resultados de la consulta y marcar las como verdadero las fechas que obtuviste

1- Supongamos que es del 10 al 14 de agosto, el arreglo quedó así:
08-10 = falso
08-11 = falso
08-12 = falso
08-13 = falso
08-14 = falso

2- De la consulta obtienes 3 registros: 08-12, 08-13 y 08-14

3- Al recorrer los resultados de la consulta y modificar el arreglo, tendrías esto:

08-10 = falso
08-11 = falso
08-12 = verdadero
08-13 = verdadero
08-14 = verdadero

Para realizar las comparaciones, supongamos que el arreglo se llama fechas:

$fecha_a_comparar = '08-11';
if($fechas[$fecha_a_comparar]) // Esto evaluará falso, porque fechas[08-11] es falso

$fecha_a_comparar = '08-12';
if($fechas[$fecha_a_comparar]) // Esto evaluará verdadero


P.D. Sí, de acuerdo con carlos_belisario, tómate un café... y no te olvides de invitarnos.

P.D.2: carlos_belisario, parece no ser necesario el uso de isset() porque se supone que sólo haría comparación de fechas entre $desde y $hasta, previamente se crea el arreglo con todas las fechas en ese intervalo.
__________________
- León, Guanajuato
- GV-Foto
  #32 (permalink)  
Antiguo 10/08/2012, 12:07
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar fechas para hacer calculos

Amigos por fin lo entendi y funciona!!!. Aunque no se si está del todo correcto. Lo puse asi:

Código PHP:
Ver original
  1. $desde = '2012-08-10';
  2. $hasta = '2012-08-14';
  3.  
  4. $fechas = array();
  5.  
  6. // Lo más fácil es hacer un ciclo for, pero necesitamos que sea numérico
  7. $inicio = strtotime($desde);
  8. $fin = strtotime($hasta);
  9.  
  10. // Un dia es 86400 segundos
  11. for($i = $inicio; $i <= $fin; $i += 86400) {
  12.     // Convertimos el número a fecha
  13.     $ifecha = date('m-d', $i);
  14.    // Inicialmente suponemos que no es temporada alta (false)
  15.     $fechas[$ifecha] = false;
  16. }    
  17.     $rs2 = mysql_query("SELECT * FROM detalle_temp_alta WHERE id_posada='8' AND fecha_temp_alta BETWEEN '$desde2' AND '$hasta2'");
  18.     // Después, verificas los resultados de tu consulta (con BETWEEN)
  19.     while($row = mysql_fetch_array($rs2)) {
  20.         // Simplemente marcas la fecha como temporada alta (true)
  21.         $fechas[$row['fecha_temp_alta']] = true;
  22.         //$fecha = $row['fecha_temp_alta'];
  23. }
  24.      
  25.    // Para comparar
  26. for($i = $inicio; $i <= $fin; $i += 86400) {
  27.      $ifecha = date('m-d', $i);
  28.     if($fechas[$ifecha]) {
  29.         echo 'Es temporada alta <br>';
  30.     } else {
  31.         echo 'No es temporada alta <br>';
  32.     }
  33. }

Ahora lo que me falta es saber como almacenar cuantos 'Es temporada alta' y 'No es temporada alta' para multiplicarlos por los precios de alta y baja.

Muchisisisisimas gracias Triby por todo: por la excelente enseñanza, por la gran paciencia....

Muchas Gracias Carlos por tus valiosos aportes (espero usar esa función cuando migre mi php a 5.3)

Gracias mogurbon por darme animo.

__________________
Caminando con el corazón partío
  #33 (permalink)  
Antiguo 10/08/2012, 14:30
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Verificar fechas para hacer calculos

Excelente que resolvieras el problema (vez que no hay nada que una taza de café no resuelva )

Cita:
Iniciado por Triby Ver Mensaje
P.D. Sí, de acuerdo con carlos_belisario, tómate un café... y no te olvides de invitarnos.

P.D.2: carlos_belisario, parece no ser necesario el uso de isset() porque se supone que sólo haría comparación de fechas entre $desde y $hasta, previamente se crea el arreglo con todas las fechas en ese intervalo.
Cierto, no revise bien el script, lo que va a devolverse siempre va a estar dentro de esos parámetros

Todavía esperamos el café
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #34 (permalink)  
Antiguo 11/08/2012, 09:08
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar fechas para hacer calculos

jajajajaja, les enviaré un café virtual desde acá o será que les enviaré un kilo de Café Fama de America por Fedex. jajajajajajajaja.

Quería preguntarles como puedo almacenar la cantidad de registros que me da la primera y segunda opción del if para poder multiplicarlos con el precio.

Gracias.
__________________
Caminando con el corazón partío
  #35 (permalink)  
Antiguo 11/08/2012, 12:14
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: Verificar fechas para hacer calculos

Para poder sugerirte algo, primero cuéntanos como es la estructura de tu tabla de reservas.

Lo más fácil, antes del for creas un par de contadores: $alta y $normal; dentro del for, incrementas uno u otro dependiendo en vez del echo y, después del for, multiplicas cada uno por el precio diario correspondiente.

P.D. Ok, te paso la dirección para que envíes el café.
__________________
- León, Guanajuato
- GV-Foto
  #36 (permalink)  
Antiguo 12/08/2012, 11:34
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Verificar fechas para hacer calculos

Triby muchas gracias funciona muy bien.

Mi tabla de temporadas tiene: id_temporada (int), id_posada (int), fecha_temp_alta (varchar). Es varchar porque yo almaceno solo el mes y dia para no tener problemas cuando cambia un año. Se almacena asi por ejemplo 08-10.

Los datos vienen de este calendario que hice:

http://vamonosdevacaciones.com.ve/temporada.php

Y en cada checkbox coloco el mes y dia.

Luego hago los calculos en esta pagina de cotización:

http://vamonosdevacaciones.com.ve/co...otizar=Cotizar

P.D. De verdad pasame la dirección inbox para enviarte el café :)
__________________
Caminando con el corazón partío
  #37 (permalink)  
Antiguo 12/08/2012, 13:33
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: Verificar fechas para hacer calculos

Bueno, creo que todavía no está del todo bien:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/******/******/reservacion/mostrar_reservacion.php on line 30
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: mysql, tabla, verificar, calculo
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 20:39.