Foros del Web » Programando para Internet » PHP »

listar días entre fechas

Estas en el tema de listar días entre fechas en el foro de PHP en Foros del Web. Sres: hago una consulta que quizá sea fácil, pero no he encontrado respuesta. ¿Cómo obtengo una lista de fechas entre dos fechas? Yo quisiera un ...
  #1 (permalink)  
Antiguo 04/05/2011, 08:30
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
listar días entre fechas

Sres: hago una consulta que quizá sea fácil, pero no he encontrado respuesta.
¿Cómo obtengo una lista de fechas entre dos fechas? Yo quisiera un select en el que aparezcan los días comprendidos entre dos variables (var1=hoy y var2=hoy+15días), en donde cada opción sea <option value="AAAA-MM-DD">AAAA-MM-DD</option>.

Sé cómo calcular las variables, sé como calcular la diferencia de días, etc., pero no se me ocurre de qué forma podría obtener ese listado.

Agradecido de antemano por cualquier ayuda.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 04/05/2011, 08:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: listar días entre fechas

Los listados por lo general se hacen usando bucles.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/05/2011, 08:48
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: listar días entre fechas

Y como definis
<option value="AAAA-MM-DD">AAAA-MM-DD</option>.
??

los datos AAAA-MM-DD son fijos (los que se muestran al usuario) o ya vienen cargados??

lo vemos paso por paso queres?
  #4 (permalink)  
Antiguo 04/05/2011, 10:06
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

Gracias Patriarka. Mirá, yo pensé en algo así:

$hoy=date("j-m-Y");
$suma = time() + (15 * 24 * 60 * 60);
$quince= date('d-m-Y', $suma);

ahora, cómo obtener un listado, con qué bucle, de los días comprendidos entre $hoy y $quince?
Como dice pateketrueque, la cosa sería con un bucle, pero... ¿cuál? nose me ocurre ninguno.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #5 (permalink)  
Antiguo 04/05/2011, 10:07
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

ah, los datos aaaa-mm-dd no están cargados, la idea es que se obtengan con algún bucle.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #6 (permalink)  
Antiguo 04/05/2011, 10:13
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: listar días entre fechas

esta bien y ahora en que rango???
a partir de que año, que fecha, que dia???
Y hasta cuando???
no te parece mejor hacer 3 select para cada dato?
es una sugerencia
asi el usuario elije, ej
2000 01 01
2000 01 31
2000 02 01
2000 02 28
  #7 (permalink)  
Antiguo 04/05/2011, 10:19
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: listar días entre fechas

con el código que tienes, simplemente le agregas un bucle:

Código PHP:
Ver original
  1. for ($i = 1; $i <=15; $i++) {
  2.     $suma = time() + ($i * 24 * 60 * 60);
  3.     echo date('d-m-Y', $suma);
  4. }

también puedes hacer algo así:


Código PHP:
Ver original
  1. for ($i = 1; $i <=15; $i++) {
  2.     echo date('d-m-Y', strtotime('+ '.$i.' days'));
  3. }

Un saludo
  #8 (permalink)  
Antiguo 04/05/2011, 11:02
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

veo que kike sí me entendió! ahora me estoy yendo, en un rato lo pruebo y te cuento si me funcionó.
gracias a todos
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #9 (permalink)  
Antiguo 04/05/2011, 11:27
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: listar días entre fechas

Grande kike!
  #10 (permalink)  
Antiguo 04/05/2011, 12:56
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

Bueno Kike, me quedó así:

Código:
<form action="servicios.php" method="post" enctype="multipart/form-data" name="form1">  <p>Elija un día: 	
<select name="dia" onchange="MM_jumpMenu('parent',this,0)">
<?php 
    for ($i = 0; $i <=15; $i++) {
        $suma = time() + ($i * 24 * 60 * 60);
		  $val=date('d-m-Y', $suma);
?> <option value="servicios.php?dia=<?php echo $val; ?>"><?php echo $val; ?></option>      <?php
    }
?> 
</select>
  </form>

pero me gustaría reemplazar time() por una variable ($dia, para que cuando salta el jumpmenu con ese valor, ahora me muestre las fechas a partir del día elegido y por quince días más... pero si reemplazo time() por la variable, me da error.

¿Una ayudita más por favor?

Gracias!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #11 (permalink)  
Antiguo 04/05/2011, 13:30
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: listar días entre fechas

para eso puedes usar strtotime().

Un saludo.
  #12 (permalink)  
Antiguo 04/05/2011, 14:15
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

Excelente, gracias. Me quedó así

Código:
<?php 
$dia_unix=strtotime($dia); 

    for ($i = 0; $i <=15; $i++) {
        $suma = $dia_unix + ($i * 24 * 60 * 60);
		  $val=date('d-m-Y', $suma);
?> <option value="servicios.php?dia=<?php echo $val; ?>"><?php echo $val; ?></option>      <?php
    }
?>
Ahora, no quiero ser muy pedigüeño, pero me gustaría tambien que aparecieran los 15 días anteriores a la fecha de hoy. Hice un intento, pero no me funciona, y es de agregar antes de este código, éste otro:

Código:
<?php 
$dia_unix=strtotime($dia); 

    for ($i = 0; $i <=15; $i++) {
        $suma = $dia_unix - ($i * 24 * 60 * 60);
		  $val=date('d-m-Y', $suma);
?> <option value="servicios.php?dia=<?php echo $val; ?>"><?php echo $val; ?></option>      <?php
    }
?>
pero me aparece primero la fecha de hoy, luego los 15 días anteriores en forma decreciente y luego los 15 posteriores en forma creciente... mientras intnto pensarlo, quizá alguno se le ocurra cómo hacerlo, para que aparezcan de menor a mayor, antes del día de hoy, y luego el resto sí como están.

Gracias!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #13 (permalink)  
Antiguo 04/05/2011, 14:18
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: listar días entre fechas

cambia el for para eso, que comience en 15 y acabe en 0.

Un saludo.
  #14 (permalink)  
Antiguo 04/05/2011, 14:21
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

Sí, eso lo intenté, pero no da resultado (no devuelve ningún valor).
¿alguna otra pista?
también cambién el <= por >= pero nada....
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #15 (permalink)  
Antiguo 04/05/2011, 14:25
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: listar días entre fechas

debería funcionar sin problemas.

Código PHP:
Ver original
  1. for ($i = 15; $i >= 0; $i--)

Saludos
  #16 (permalink)  
Antiguo 04/05/2011, 14:38
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: listar días entre fechas

Excelente, un capo total vos (yo medio nabo, de no poner -- en vez de ++.,

Así quedó el código (con trampita para que quede selected el día elegido):

Código:
<form action="servicios.php" method="post" enctype="multipart/form-data" name="form1">  <p>Elija un día: 	
<select name="dia" onchange="MM_jumpMenu('parent',this,0)">
<?php 
$dia_unix=strtotime($dia); 

    for ($i = 5; $i > 0; $i--) {
	        $suma = $dia_unix - ($i * 24 * 60 * 60);
		  $val=date('d-m-Y', $suma);
?> <option <?php if ($dia==$val) {?> selected="selected" <?php } ?> value="servicios.php?dia=<?php echo $val; ?>"><?php echo $val; ?></option>      <?php
    }

    for ($i = 0; $i <5; $i++) {
        $suma = $dia_unix + ($i * 24 * 60 * 60);
		  $val=date('d-m-Y', $suma);
?> <option <?php if ($dia==$val) {?> selected="selected" <?php } ?> value="servicios.php?dia=<?php echo $val; ?>"><?php echo $val; ?></option>      <?php
    }
?> 
</select>
  </form>
Gracias a todos por su ayuda.

Hasta la próxima!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Etiquetas: fechas, listar
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 21:34.