Foros del Web » Programando para Internet » PHP »

Como puedo comvertir este script en una funcion?

Estas en el tema de Como puedo comvertir este script en una funcion? en el foro de PHP en Foros del Web. HOla, encontré este script para contar los dias qeu faltan para un evento deretminado... La fecha del evento está declarada manualmente peró seria mejor pasar ...
  #1 (permalink)  
Antiguo 29/07/2003, 16:40
Avatar de Nukelino  
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 116
Antigüedad: 14 años, 8 meses
Puntos: 0
Como puedo comvertir este script en una funcion?

HOla, encontré este script para contar los dias qeu faltan para un evento deretminado... La fecha del evento está declarada manualmente peró seria mejor pasar el valor desde otra varible y utilizar este código como una función.

La pregunta es, como paso el siguiente script a una funcion?

Código PHP:
<?php

$day 
31
$month 12
$year 2002

$target mktime(7,0,0,$month,$day,$year); 
$diff $target time(); 

$days = ($diff - ($diff 86400)) / 86400
$diff $diff - ($days 86400); 
$hours = ($diff - ($diff 3600)) / 3600
$diff $diff - ($hours 3600); 
$minutes = ($diff - ($diff 60)) / 60
$diff $diff - ($minutes 60); 
$seconds = ($diff - ($diff 1)) / 1

$restante "";
$month $days-30;

 if (
$month <=){
    
$month =0;
 }else{
    
$month 1;
 }

if (
$days )
  
$restante $restante $days " días "
if ((
$hours >= 0) && ($restante != ""))
  
$restante $restante $hours " hrs. "
if ((
$minutes >= 0) && ($restante != ""))
  
$restante $restante $minutes " min."
if ((
$seconds 0) && ($restante ==""))
  
$restante $restante $seconds " seg."

 if (
$restante ==""){
      echo 
"0 dias 0 hrs. 0 min."
 }else{
      echo 
$restante
 }

?>
  #2 (permalink)  
Antiguo 29/07/2003, 16:49
Avatar de BrujoNic
Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.804
Antigüedad: 16 años, 1 mes
Puntos: 609
Código PHP:
function dif_dias ($day$month$year
{
    
$target mktime(7,0,0,$month,$day,$year); 
    
$diff $target time(); 

    
$days = ($diff - ($diff 86400)) / 86400
    
$diff $diff - ($days 86400); 
    
$hours = ($diff - ($diff 3600)) / 3600
    
$diff $diff - ($hours 3600); 
    
$minutes = ($diff - ($diff 60)) / 60
    
$diff $diff - ($minutes 60); 
    
$seconds = ($diff - ($diff 1)) / 1

    
$restante "";
    
$month $days-30;

    if (
$month <=){
      
$month =0;
    }else{
      
$month 1;
    }

    if (
$days )
      
$restante $restante $days " días "
    if ((
$hours >= 0) && ($restante != ""))
      
$restante $restante $hours " hrs. "
    if ((
$minutes >= 0) && ($restante != ""))
      
$restante $restante $minutes " min."
    if ((
$seconds 0) && ($restante ==""))
      
$restante $restante $seconds " seg."

    if (
$restante ==""){
      echo 
"0 dias 0 hrs. 0 min."
    }else{
      echo 
$restante
    }
   return 
$restante;

__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 29/07/2003, 16:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Bueno, seria facil. Primero hay que determinar que parametros son necesarios pasarle a la funcion. Por lo que veo seria el dia, el mes y el año. Asi ya tenemos:
Código PHP:
function dias_que_faltan($day$month$year)

Lo siguiente seria poner el codigo que ya tienes (quitando los "parametros):
Código PHP:

$target 
mktime(7,0,0,$month,$day,$year); 

$diff $target time(); 



$days = ($diff - ($diff 86400)) / 86400

$diff $diff - ($days 86400); 

$hours = ($diff - ($diff 3600)) / 3600

$diff $diff - ($hours 3600); 

$minutes = ($diff - ($diff 60)) / 60

$diff $diff - ($minutes 60); 

$seconds = ($diff - ($diff 1)) / 1



$restante "";

$month $days-30;



 if (
$month <=){

    
$month =0;

 }else{

    
$month 1;

 }



if (
$days )

  
$restante $restante $days " días "

if ((
$hours >= 0) && ($restante != ""))

  
$restante $restante $hours " hrs. "

if ((
$minutes >= 0) && ($restante != ""))

  
$restante $restante $minutes " min."

if ((
$seconds 0) && ($restante ==""))

  
$restante $restante $seconds " seg."
Como veras no he puesto la seccion del echo. Es porque me parece mal diseño que las funciones hagan echos o envien algo al navegador.

Lo ultimo es decidir que devuelve la funcion. Aqui seria la cadena $restante o la cadena por defecto:
Código PHP:
if ($restante ==""){

      return 
"0 dias 0 hrs. 0 min."

 }else{

      return 
$restante

 }

// fin dias_que_faltan() 
Poniendolo todo junto con un ejemplo de uso:
Código PHP:
function dias_que_faltan($day$month$year)
{
$target mktime(7,0,0,$month,$day,$year); 

$diff $target time(); 



$days = ($diff - ($diff 86400)) / 86400

$diff $diff - ($days 86400); 

$hours = ($diff - ($diff 3600)) / 3600

$diff $diff - ($hours 3600); 

$minutes = ($diff - ($diff 60)) / 60

$diff $diff - ($minutes 60); 

$seconds = ($diff - ($diff 1)) / 1



$restante "";

$month $days-30;



 if (
$month <=){

    
$month =0;

 }else{

    
$month 1;

 }



if (
$days )

  
$restante $restante $days " días "

if ((
$hours >= 0) && ($restante != ""))

  
$restante $restante $hours " hrs. "

if ((
$minutes >= 0) && ($restante != ""))

  
$restante $restante $minutes " min."

if ((
$seconds 0) && ($restante ==""))

  
$restante $restante $seconds " seg."
if (
$restante ==""){

      return 
"0 dias 0 hrs. 0 min."

 }else{

      return 
$restante

 }

// fin dias_que_faltan()

//ejemplo
echo dias_que_faltan(31,12,2002); 
Quedarian detalles, como que pasa cuando la fecha que le pasas es anterior a la fecha actual, o que hacer si la fecha no es una fecha valida (aunque creo que eso lo "arregla" mktime()), poner valores por defecto alos parametros, etc. Pero creo que con esto bastaria para ponerlo como funcion (no la he probado, ni siquiera se si hay errores de sintaxis).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 29/07/2003, 17:01
Avatar de Nukelino  
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 116
Antigüedad: 14 años, 8 meses
Puntos: 0
Particularmente el uso que le voy a dar no tengo fechas anteriores. Lo utilizare para un sistema de caducacion de tarjetas virtuales complementados con otros script...


Gracias por las respuestas, aún no lo he probado, pero desde ya muchisimas gracias... saludos
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 02:32.