Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: RedZer en 14 Junio 2011, 20:42 pm



Título: Definir 14 cena
Publicado por: RedZer en 14 Junio 2011, 20:42 pm
no tengo idea de como hacer lo siguiente  tengo un campo de texto en donde digito una fecha y lo guardar en la bd supongamos que la fecha guardada es 2011-01-05 hoy estamos a 2011-06-14 por lo cual han pasado un aproximado de 12 catorcenas yo lo que deceo hacer es tener un formulario en donde me aroje las fechas en el que fue catorcena y el numero de catorcena en el que vamos apartir de la fecha definida algo asi
No de catrocena   fecha
12011-01-05
22011-01-19
32011-02-02


Título: Re: Definir 14 cena
Publicado por: Shell Root en 14 Junio 2011, 21:20 pm
Pues es cosas de sumarle 14 días, no?.

Código
  1. ADDDATE(DATE, INTERVAL expr TYPE), ADDDATE(expr, days)

Código
  1. mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
  2.        -> '1998-02-02'
  3. mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
  4.        -> '1998-02-02'


Título: Re: Definir 14 cena
Publicado por: RedZer en 14 Junio 2011, 21:37 pm
Pues es cosas de sumarle 14 días, no?.

Código
  1. ADDDATE(DATE, INTERVAL expr TYPE), ADDDATE(expr, days)

Código
  1. mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
  2.        -> '1998-02-02'
  3. mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
  4.        -> '1998-02-02'
asi es shell root es cosa de sumarle 14 dias ala fecha que tengo guardada en mi tabla eso si se de echo tengo esta funcion que ocupo para sumar dias o en su defecto restar dias auna fecha

Código
  1. <?php
  2. function sumar_dias($fecha,$dias,$suma=1){
  3.    $exp = explode("-",$fecha);
  4.    $mon = $exp[1];
  5.    $day = (strlen($exp[2]) > 2)? $exp[0] : $exp[2];
  6.    $year = (strlen($exp[0]) < 4)? $exp[2] : $exp[0];
  7.    $mktime = mktime(0,0,0,$mon,$day,$year);
  8.    if($suma == 1){
  9.        $rs = $mktime + ($dias * 24 * 60 * 60);
  10.    }else{
  11.        $rs = $mktime - ($dias * 24 * 60 * 60);
  12.    }
  13.    $fecha = (strlen($exp[2]) > 2)? date("d-m-Y",$rs) : date("Y-m-d",$rs);
  14.    return $fecha;
  15. }
  16.  
  17. //forma de utilizarla
  18. //el primer argumento es la fecha
  19. //si pones una fecha al estilo inglés yyyy-mm-dd te devuelve con el mismo estilo
  20. //y si pones una fecha al estilo español te la devuelve en español
  21. //el segundo argumento es la cantidad de dias que quieras sumar o restar
  22. //el tercer argumento es para decirle que operación realizar sumar o restar
  23. //por defecto está en 1 (sumar) y 0 (restar)
  24. echo sumar_dias(date('2011-01-05'),14,1);
  25. ?>
  26.  
  27.  

pero lo que yo deceo hacer es  que apartir de esta fecha inicial 2011-01-05 me diga cuantas catorcenas han pasado desde la fecha inicial que se esta en la bd hasta el dia de hoy 2011--06-14 y en que fecha fue si me explico??


Título: Re: Definir 14 cena
Publicado por: Shell Root en 14 Junio 2011, 22:29 pm
Simple...

FechaIniciar = FI
FechaFinal   = FF

Realizas un ciclo, mientras qué FI + 14, sea menor a FF.


Título: Re: Definir 14 cena
Publicado por: RedZer en 14 Junio 2011, 23:21 pm
ise lo que me indicaste tengo lo siguiente
Código
  1.  
  2.  
  3. $fecha1="2011-01-01";
  4. $fecha2="2011-02-30";
  5.  
  6. for($fechaini=$fecha1;$fechaini<$fecha2;$fechaini++) {
  7. $dias=14;
  8. $total= date("Y-m-d",strtotime("$fechaini+$dias days"));
  9. echo  $total."<br>";
  10. }
  11.  
  12.  

como puedo hacer para que nada mas me aroje la fecha en que cae 14 por ejemplo si empiesa del 2011-01-01 a contar el la fecha que me tendria que arojar seria 2011-01-14 y la siguiente seria 2011-01-28 y asi sucesivamente


Título: Re: Definir 14 cena
Publicado por: RedZer en 15 Junio 2011, 00:59 am
por fin lo resolvi dejo el code

Código
  1. $inicio=strtotime('2011-01-05');
  2. $final=strtotime('2011-02-02');
  3. while($inicio <= $final) {
  4. echo  date("Y-m-d", $inicio)."<br>";
  5. $inicio= strtotime("+14 day", $inicio); }
  6.  
  7.  
  8.  
gracias shell root por la idea


Título: Re: Definir 14 cena
Publicado por: WHK en 15 Junio 2011, 08:36 am
Por eso soy partidario de usar int en las fechas de la base de datos obtenidas con time(), asi hubieras procesado todo directamente como integers sumando y dividiendo y obteniendo datos directamente desde la db.