Foros del Web » Programando para Internet » PHP »

Problemas al sumar o restar fechas

Estas en el tema de Problemas al sumar o restar fechas en el foro de PHP en Foros del Web. Hola a todos amigos haber primero quiero agradecer a Gator V por aguantar mis problemas jajajja!!! es muy buen amigo y segundo quiero que me ...
  #1 (permalink)  
Antiguo 06/03/2008, 15:17
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Problemas al sumar o restar fechas

Hola a todos amigos haber primero quiero agradecer a Gator V por aguantar mis problemas jajajja!!! es muy buen amigo y segundo quiero que me ayuden con este script lo que hace es sumar o restar fechas pues me lo encontré en una web pues el script si funciona perfectamente lo que pasa es que lo que necesito es que la fecha con la que la función vaya a trabajar sea la que se encuentra en el campo fecha osea que tome esa fecha y le sume los días que se le programe por ejemplo este script le suma a la fecha 60 días ok!!!


-----------------------------PROBLEMA--------------------------

Bueno chicos este es el script:


Código PHP:
<?php function suma_fechas($fecha,$ndias)
            

{
            

      if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
            

              list(
$año,$mes,$dia)=split("/"$fecha);
            

      if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("-",$fecha);
        
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
        
$nuevafecha=date("Y-m-d",$nueva);
            

      return (
$nuevafecha);  
            

}
echo 
'<head>
            

              <title>'
.$_SERVER[PHP_SELF].'</title>
            

      </head>
            

      <html>
            

      <body>'
;


//aqui es donde quiero llamar a la fecha para después sumarle los Días

$datemysql_query ("SELECT fecha1 FROM donantes WHERE id='$id'"$conex) or die( mysql_error() );

$row2 mysql_fetch_row$date );


$f11=suma_fechas($row2[0], 60); // aquí le sumo a la fecha 60 días
            

      
echo "<br><br>$row2[0] más 60 días es  $f11<br>";
      
echo 
"<a href=$_SERVER[PHP_SELF]>Recargar la Página</a>";
echo 
'</body>
            

      </html>'
;

mysql_close($conex);
?>

pero el resultado que me da es este:



2008-03-05 más 60 días es 2010-10-28


no me funciona..


tendría que dar

2008-03-05 más 60 es 04-05-2008






------------------------------- ESTE ES EL SCRIPT ORIGINAL QUE ENCONTRÉ ---------------------------

Este otro script suma bien pero se daña cuando hago el cambio de arriba no se porque ..

QUIERO SABER QUE PASA?

POR FAVOR ALGUIEN ME ECHE UNA MANO GRACIAS
Código PHP:
<?php



function suma_fechas($fecha,$ndias)
            

{
            

      if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("/"$fecha);
            

      if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha))
            

              list(
$dia,$mes,$año)=split("-",$fecha);
        
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
        
$nuevafecha=date("d-m-Y",$nueva);
            

      return (
$nuevafecha);  
            

}
echo 
'<head>
            

              <title>'
.$_SERVER[PHP_SELF].'</title>
            

      </head>
            

      <html>
            

      <body>'
;

$f1="05/03/2008"/* Cuando cambiamos esto por la variable se daña debe pasar algo */
/* $f2="30-01-1992"; */
$f11=suma_fechas($f160);
            

      echo 
"$f1 más 60 es  $f11<br>";
/* $f11=suma_fechas($f1, -40);
            

      echo "$f1 menos 60 es  $f11<br>";
$f21=suma_fechas($f2, 365);
            

      echo "$f2 más 365 es  $f21<br>";
$f21=suma_fechas($f2, -365);
            

      echo "$f2 menos 365 es  $f21<br>";
             */

echo "<a href=$_SERVER[PHP_SELF]>Recargar la Página</a>";
echo 
'</body>
            

      </html>'
;
?>
  #2 (permalink)  
Antiguo 06/03/2008, 15:48
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 5 meses
Puntos: 49
Re: Problemas al sumar o restar fechas

Prueba esta parte del código asi:

Código PHP:
//aqui es donde quiero llamar a la fecha para después sumarle los Días

$date mysql_query ("SELECT DATE_FORMAT(fecha1, '%d-%m-%Y') AS nfecha FROM donantes WHERE id = '$id'"$conex) or die( mysql_error() );

$row2 mysql_fetch_array$date );


$f11=suma_fechas($row2['nfecha'], 60); // aquí le sumo a la fecha 60 días
            

      
echo "<br><br>$row2[nfecha] más 60 días es  $f11<br>";
      
echo 
"<a href=$_SERVER[PHP_SELF]>Recargar la Página</a>";
echo 
'</body>
            

      </html>'
;

mysql_close($conex);
?> 
Saludos.
  #3 (permalink)  
Antiguo 06/03/2008, 17:58
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo Re: Problemas al sumar o restar fechas

Gracias Carlojas que bien si me funciono jaja!!!

ahora hay algo----> si quiero decirle que si el registro que se consulta es femenino le sume 90 días y a el masculino 60


como se haría la operación allí

Me puedes ayudar..

Código PHP:
$date mysql_query ("SELECT DATE_FORMAT(fecha1, '%d-%m-%Y') AS 
nfecha FROM donantes WHERE id = '$id'"
$conex
or die( 
mysql_error() );//aqui algo como and sexo = 'masculino' pero no me funciona hay alguna forma

$row2 mysql_fetch_array$date );


$f11=suma_fechas($row2['nfecha'], 60); 
            

      echo 
"<br><br>$row2[nfecha] más 60 días es  $f11<br>"
  #4 (permalink)  
Antiguo 06/03/2008, 18:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Problemas al sumar o restar fechas

Puedes hacerlo así:
Código PHP:
$date mysql_query ("SELECT DATE_FORMAT(fecha1, '%d-%m-%Y') AS nfecha FROM donantes WHERE id = '$id'"$conex
or die( 
mysql_error() );

$row2 mysql_fetch_array$date );

$ifMasc 60;
$ifFem 30;

$dias = ( $sexo == "masculino" $ifMasc $ifFem );

$f11=suma_fechas($row2['nfecha'], $dias ); 
            

      echo 
"<br><br>$row2[nfecha] más $dias días es  $f11<br>"
Ahora solo necesitarías de alguna forma verificar el sexo del donante y almacenarlo en la variable $sexo.

Saludos.
  #5 (permalink)  
Antiguo 06/03/2008, 18:29
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas al sumar o restar fechas

Gator v amigo mio no entiendo como me dices que verifique ayúdame

Soy un novato...
  #6 (permalink)  
Antiguo 06/03/2008, 21:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Problemas al sumar o restar fechas

Como se llama el campo de tu base de datos donde guardas el sexo de la persona?

Saludos.
  #7 (permalink)  
Antiguo 07/03/2008, 13:02
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Problemas al sumar o restar fechas

se llama sexo Gator

si ayudame...
  #8 (permalink)  
Antiguo 07/03/2008, 13:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Problemas al sumar o restar fechas

Prueba así:
Código PHP:
$date mysql_query ("SELECT DATE_FORMAT(fecha1, '%d-%m-%Y') AS nfecha, sexo FROM donantes WHERE id = '$id'"$conex
or die( 
mysql_error() );

$row2 mysql_fetch_array$date );
$sexo $row2['sexo'];

$ifMasc 60;
$ifFem 30;

$dias = ( $sexo == "masculino" $ifMasc $ifFem );

$f11=suma_fechas($row2['nfecha'], $dias ); 
            

      echo 
"<br><br>$row2[nfecha] más $dias días es  $f11<br>"
Saludos.
  #9 (permalink)  
Antiguo 07/03/2008, 18:41
Avatar de kassem  
Fecha de Ingreso: marzo-2008
Mensajes: 15
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problemas al sumar o restar fechas

Gator V perfecto tu script gracias amigo



ahhh mira tu crees que puedo hacer dos query a la vez o debo de hacerlo de otra forma para realizar la consulta y que de una vez se actualize la fecha..


Código PHP:
<?php
include("conex.php");

if (!
$conex)
  {
  die(
'No se pudo conectar al servidor: ' mysql_error());
  }

mysql_select_db("hemocentro"$conex);


$id=$_POST['id'];

//esto se puede hacer o como debo hacerlo

mysql_query("UPDATE donantes set fecha = date_add(fecha, INTERVAL 2 MONTH) where now() > date_add(fecha, INTERVAL 2 MONTH) and sexo = 'masculino'"$conex);

mysql_query("UPDATE donantes set fecha = date_add(fecha, INTERVAL 3 MONTH) where now() > date_add(fecha, INTERVAL 3 MONTH) and sexo = 'femenino'"$conex);


$xmysql_query ("SELECT fecha FROM donantes WHERE id='$id'"$conex) or die( mysql_error() );

$row mysql_fetch_row$x );

if (
$row)
{

echo 
"Tu ultima fecha de donación fue el " $row[0];

}
else
{
echo 
"Tu documento no es valido.";

}



?>
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 12:54.