Foros del Web » Programando para Internet » PHP »

Restar 2 dias

Estas en el tema de Restar 2 dias en el foro de PHP en Foros del Web. No me funciona este codigo, me pueden decir que error cometo? Código PHP: <? if ( strstr ( $PHP_SELF ,  "/am_modules/" ))  die ( "Usted no puede accesar este archivo directamente..." ); // Genero la fecha para la evaluacion de las 48 hrs [2 dias] //$fechan = date("d/m/Y"); ...
  #1 (permalink)  
Antiguo 07/11/2007, 13:39
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 20 años
Puntos: 3
Restar 2 dias

No me funciona este codigo, me pueden decir que error cometo?

Código PHP:
<?
if (strstr($PHP_SELF, "/am_modules/"))  die ("Usted no puede accesar este archivo directamente...");

// Genero la fecha para la evaluacion de las 48 hrs [2 dias]

//$fechan = date("d/m/Y");
$fech_act=(date ("d/m/Y"));//
 
$f_ni_aa = substr($fech_act,6,4);
 
$f_ni_mm = substr($fech_act,3,2);
 
$f_ni_dd = substr($fech_act,0,2);
 
 
$f_ni_dd= $f_ni_dd - 2; //Resto los 2 Dias

$hoy=$f_ni_aa.$f_ni_mm.$f_ni_dd;

$sel_sql = "select am_inspeccion.ins_folio , am_inspeccion.ins_fecing , am_inspeccion.ins_nomemp , am_inspeccion.ins_digito, am_inspeccion.ins_estado from am_inspeccion where (ins_fecing < '$hoy') AND (ins_estado LIKE 'A') order by ins_folio desc";
$resultado = db_query($sel_sql) or die(db_error());


//$i=mysql_fetch_array($resultado);
//if ($i){

//---> include idioma
//
  
$config["leng"] = "sp"; // Español 
  
include_once( "am_modules/inspec/idioma/msg_".check_lang($config["leng"]).".php" ); 

  
srand((double)microtime()*1000000); 

  
draw_header(); 

if( ! 
$session["logged"] ) 
{ 
    
theme_draw_box( lg_TitCon, INGRESO_ACTIVATE_ERROR, "100%" ); 
    
draw_footer(); 
    exit; 
} 
?> 
<style type="text/css"> 
TD { 
    font-size : 10px; 
    font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; 
} 
</style> 
<? 
//while($i=mysql_fetch_array)  {}
//$i=mysql_fetch_array($resultado);

echo"<h3 align=\"center\">Inspecciones Pendientes 48 horas o más</h3>";  

echo 
"<table border=0 width=90%><tr>"; 
echo 
"<td></td><td>Folio</td><td>Fecha</td><td>Empresa</td><td>Ingresado por </td><td>Estado</td></tr>"; 
echo 
"<tr></tr>"; 
while(
$i=mysql_fetch_array($resultado)){ 

if (
$i){

echo 
"<td><a href=\"inspec.php?id_insmod=$i[0]\" target=\"parent\"><img src=\"am_modules/downloads/derec.gif\" width=16 height=16 alt=\"click\" border=0 align=left></a></td>"; 
echo 
"<td>$i[0]</td>"; 


$f_fecing  = substr($i["ins_fecing"],6,2)."/".substr($i["ins_fecing"],4,2)."/".substr($i["ins_fecing"],0,4); 

echo 
"<td>$f_fecing</td>"; 
echo 
"<td>$i[2]</td>"; 



//echo "<td>$f_autor</td>"; 


$nom_sql = "SELECT realname FROM am_users WHERE name = '".$i["ins_digito"]."'";  
$nom     = db_query($nom_sql) or die(db_error()); 
$nombre  = db_fetch_array($nom); 
$f_autor = $nombre["realname"]; 
//echo "<td>$f_autor</td><td>$i[3]</td>"; 


echo "<td>$f_autor</td>"; 

$est_sql = "SELECT ins_estado FROM am_inspeccion WHERE ins_estado = '$i[ins_estado]'";  
$est     = db_query($est_sql) or die(db_error()); 
$estado  = db_fetch_array($est); 
$f_estado = $estado["ins_estado"]; 
switch(
$f_estado) { 
case 
"Q": "Por Inspeccionar"; 
      
$var = "Por Inspeccionar"; 
      break; 
case 
"A": 
      
$var = "Aprobada para inspeccionar"; 
      break; 
case 
"R": 
      
$var = "Rechazada para inspeccionar"; 
      break; 
case 
"T": 
      
$var ="Inspeccion terminada"; 
      break; 
case 
"I":
      
$var ="Inspeccion incompleta"; 
      break;
case 
"E":
      
$var ="Inspeccion rechazada"; 
      break;
   
} 
echo 
"<td>$var</td></tr>"; }

}

//} 

?>
  #2 (permalink)  
Antiguo 07/11/2007, 14:26
 
Fecha de Ingreso: agosto-2006
Mensajes: 177
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Restar 2 dias

que cosa no te funcionda del codigo, asumo que es la resta de los dos dias, pero deberias poner el error que te devuelve php.

para lo de la resta esto te diria.

no se en que formato quieres obtener la fecha pero veo que estas haciendo algo por el lado dificil

Código PHP:
<?php
 $fech_act
=(date ("d/m/Y"));//
 
$f_ni_aa = substr($fech_act,6,4);
 
$f_ni_mm = substr($fech_act,3,2);
 
$f_ni_dd = substr($fech_act,0,2);
 
 
$f_ni_dd= $f_ni_dd - 2; //Resto los 2 Dias

 
$hoy=$f_ni_aa.$f_ni_mm.$f_ni_dd;  
ese formato de fecha no lo ocupo si es mysql la BD por ejemplo y el campo es date
no deberia ser 2007-11-07

bueno con ese formato y restando los dias de manera de obtener una fecha valida ya que de la forma que lo haces se producirian errores si le restas 2 al dia 1 del mes (no se que dia es -1 de noviembre). el codigo deberia ser mas parecido a esto

Código PHP:
<?php
 $fech_act 
= date("d-m-Y"); // fecha actual
 
$f_ni_aa = date("Y"); // Año actual
 
$f_ni_mm = date("m"); // Mes actual
 
$f_ni_dd = date("d"); // Dia actual

 
$time = time(); // Timestamp Actual
 
$restar = (24*60*60)*2; // (horas*minutos*segundos)*2 -> numero de segundos en dos dias

 
$time_ant = $time-$restar;

 
$fech_ant = date("d-m-Y",$time_ant); // fecha con dos dias menos
 
$f_ni_aa_ant = date("Y",$time_ant); // Año con dos dias menos
 
$f_ni_mm_ant = date("m",$time_ant); // Mes con dos dias menos
 
$f_ni_dd_ant = date("d",$time_ant); // 2 dias antes de hoy

 
echo $fech_ant;

?>
eso es, si entendi mal me avisas.

salu2
  #3 (permalink)  
Antiguo 07/11/2007, 14:41
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 20 años
Puntos: 3
Re: Restar 2 dias

Idolo!!!

no entendi mucho lo que hiciste, pero lo implemente igual y me funciono tal como yo queria.

Muchas gracias!!!
  #4 (permalink)  
Antiguo 07/11/2007, 14:43
 
Fecha de Ingreso: agosto-2006
Mensajes: 177
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Restar 2 dias

:p ok, io pense que los comentarios lo aclaraban pero bueno

a leer time() y date() para entender no es dificil
  #5 (permalink)  
Antiguo 07/11/2007, 15:07
 
Fecha de Ingreso: octubre-2007
Ubicación: Guatemala
Mensajes: 7
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Restar 2 dias

<?php
$fech_act = date("d-m-Y"); // fecha actual
$f_ni_aa = date("Y"); // Año actual
$f_ni_mm = date("m"); // Mes actual
$f_ni_dd = date("d"); // Dia actual

$time = time(); // Timestamp Actual
$restar = (24*60*60)*2; // (horas*minutos*segundos)*2 -> numero de segundos en dos dias

$time_ant = $time-$restar;

$fech_ant = date("d-m-Y",$time_ant); // fecha con dos dias menos
$f_ni_aa_ant = date("Y",$time_ant); // Año con dos dias menos
$f_ni_mm_ant = date("m",$time_ant); // Mes con dos dias menos
$f_ni_dd_ant = date("d",$time_ant); // 2 dias antes de hoy

echo $fech_ant;

?>

Esto podria servir ya que no podes restar solo asi otra forma
seria poner unas condiciones que si es por ejemplo:
el dia 1 que no lo haga asi sino que le reste uno al mes y un dia al mes que
se llega a la hora de restar
  #6 (permalink)  
Antiguo 07/11/2007, 16:31
 
Fecha de Ingreso: agosto-2006
Mensajes: 177
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Restar 2 dias

o tambien se puede hacer con mktime()

en vez de poner time()

ocupas mktime(0,0,0,$mes,($dia-2),$ano)

siendo los primeros 0 la hora, min y seg respectivamente, esto devuelve el timestamp y haciendo el cambio de mes en caso de ser necesario.

salu2
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 17:21.