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: 17 años, 7 meses
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_boxlg_TitConINGRESO_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: 17 años, 8 meses
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: 17 años, 7 meses
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: 17 años, 8 meses
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: 16 años, 5 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: 17 años, 8 meses
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:57.