Foros del Web » Programando para Internet » PHP »

Duda con un if

Estas en el tema de Duda con un if en el foro de PHP en Foros del Web. Buenas Tengo un lio con un if muy grande resulta que si lo dejo tal cual esta me comprueba primero datos mas pequeños que los ...
  #1 (permalink)  
Antiguo 04/03/2012, 06:13
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 8 años, 1 mes
Puntos: 10
Duda con un if

Buenas
Tengo un lio con un if muy grande resulta que si lo dejo tal cual esta me comprueba primero datos mas pequeños que los que deberia comprobar primero, es decir, este codigo:
Código PHP:
Ver original
  1. if($horas<=0){
  2.                 echo $minutos.' minutos';
  3.         }elseif($dias<=0){
  4.                 echo $horas.' horas ';
  5.         }elseif($dias<=15){
  6.                 echo $dias.' dias ';
  7.         }
  8.         elseif(($dias>15) && ($dias<=20))
  9.         {echo 'Hace más de 2 semanas.';}
  10.         else
  11.         {
  12.         switch ($var[2]) {
  13.     case 1:
  14.         echo "El $var[1] de Enero del $var[0] a la(s) $var1[0]";
  15.         break;
  16.     case 2:
  17.         echo "El $var[1] de Febrero del $var[0] a la(s) $var1[0]";
  18.         break;
  19.     case 3:
  20.         echo "El $var[1] de Marzo del $var[0] a la(s) $var1[0]";
  21.         break;
  22.     case 4:
  23.         echo "El $var[1] de Abril del $var[0] a la(s) $var1[0]";
  24.         break;
  25.     case 5:
  26.         echo "El $var[1] de Mayo del $var[0] a la(s) $var1[0]";
  27.         break;
  28.     case 6:
  29.         echo "El $var[1] de Junio del $var[0] a la(s) $var1[0]";
  30.         break;
  31.     case 7:
  32.         echo "El $var[1] de Julio del $var[0] a la(s) $var1[0]";
  33.         break;
  34.     case 8:
  35.         echo "El $var[1] de Agosto del $var[0] a la(s) $var1[0]";
  36.         break;
  37.     case 9:
  38.         echo "El $var[1] de Septiembre del $var[0] a la(s) $var1[0]";
  39.         break;
  40.     case 10:
  41.         echo "El $var[1] de Octubre del $var[0] a la(s) $var1[0]";
  42.         break;
  43.     case 11:
  44.         echo "El $var[1] de Noviembre del $var[0] a la(s) $var1[0]";
  45.         break;
  46.     case 12:
  47.         echo "El $var[1] de Diciembre del $var[0] a la(s) $var1[0]";
  48.         break;
  49.         }
  50.        
  51.         }
Y claro si tengo esta fecha en l base 2-03-2012 11:20 lo que me hace es la diferencia de la hora antes que del dia y claro me devuelve ace 2 horas por ejemplo, entonces nose como hacerlo para que me comprueba primero los dias, porque con un if($dias<=0) compruebo que no hay dias pero como sigo comprobando los demas datos porque a partir del dia 15 quiero que me saqe la fecha hay tengo el lio y mi problema sino seria meterlo dentro de ese if pero como debo hacerlo asi??? gracias.
  #2 (permalink)  
Antiguo 04/03/2012, 07:13
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 9 años, 5 meses
Puntos: 202
Respuesta: Duda con un if

¿Repitiendo post?
Recuerdo recomendarte usar la función nativa date() y mktime(). De esta forma podrás obtener los días de diferencias.
También te recomiendo que el nombre de los meses en español lo pongas en un array y lo muestres según el índice de $_var[2] para que sólo hagas un echo.
Ahorrarías gran cantidad de código y ese jaleo de código.

Es un consejo. Yo ya no me repito más
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 04/03/2012, 07:17
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 8 años, 1 mes
Puntos: 10
Respuesta: Duda con un if

No no es repetir post es un if no un dato de tiempo nose si esque no me explique bien esta vez es sobre un if, que nose como ponerle para que que salga los mas pequeños que es de lo mismo de tiempo si pero no es la misma funcion ni nada es un if que tengo que me muestra antes los mas pequeños aunque haya mas grandes nose si me explico mal.
  #4 (permalink)  
Antiguo 04/03/2012, 07:34
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 9 años, 5 meses
Puntos: 202
Respuesta: Duda con un if

Cita:
Iniciado por edie8 Ver Mensaje
No no es repetir post es un if no un dato de tiempo nose si esque no me explique bien
http://www.forosdelweb.com/f18/probl...on-php-979447/

http://www.forosdelweb.com/f18/traba...as-php-979051/

No, la verdad, no te repites.
En uno de tus post haces ver que tus fechas vienen de una consulta. Odénalas al hacer la consulta y tú código te las dará bien.

Si lo que quieres es que muestre primero los días, luego las horas y después los minutos cambiar el orden de los if()
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 04/03/2012, 07:57
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 8 años, 1 mes
Puntos: 10
Respuesta: Duda con un if

Gracias veré haber en que es lo que fallo creo q lo dejaré y mirare luego mas fresco jeje creo que el problema es que me bloqueao jeje gracias.
  #6 (permalink)  
Antiguo 04/03/2012, 08:33
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 10 años, 7 meses
Puntos: 13
Respuesta: Duda con un if

A ver, ¿qué es exactamente lo que quieres?

-Mostrar la hora de un 'evento' próximo, por ejemplo:
El día 16 de Marzo manifestación a las 11:00

-Mostrar la hora en que pasó algo (públicación de una noticia, subida de una descarga...), por ejemplo:
Última edición: hace 2 minutos.
Última edición: 5 / 01 / 2002.


EDIT: Para un 'evento próximo' sería algo así.

Código PHP:
$fecha = array(

    
//Introducimos aquí la fecha en que se producirá el evento.
    
    //H:I:S - 
    
'hour'        => 11,
    
'minute'    => '00'// 00 != 0
    
'seccond'    => '00',
    
    
//D:M:Y
    
'day'        => 16,
    
'month'        =>    3,
    
'year'        =>    2012,
    
    
    
//Meses
    
'months'    => array(
        
1    => "Enero",
        
2    => "Febrero",
        
3    => "Marzo",
        
4    => "Abril",
        
5    => "Mayo",
        
6    => "Junio",
        
7    => "Julio",
        
8    => "Agosto",
        
9    => "Septiembre",
        
10    => "Octubre",
        
11    => "Noviembre",
        
12    => "Diciembre"
    
)
);

echo
'El día '.$fecha['day'].' de '.$fecha['months'][$fecha['month']].' de '.$fecha['year'].' a la(s) '.$fecha['hour'].':'.$fecha['minute'].':'.$fecha['seccond'];


//Esto recoge el time() de ahora y del evento.
//Puede ser útil para recoger en dias/semanas/horas... el tiempo que falta.
$timeNow=time();
$timeEvent=mktime($fecha['hour'], $fecha['minute'], $fecha['seccond'], $fecha['month'], $fecha['day'], $fecha['year']); 

Última edición por BanNsS1; 04/03/2012 a las 08:43
  #7 (permalink)  
Antiguo 04/03/2012, 12:31
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 8 años, 1 mes
Puntos: 10
Respuesta: Duda con un if

Haber yo tengo unas horas que es la de ultima modificacion pero quiero que me diga hace x minutos, o x segundos o x dias siempre y cuando no pase de 20 dias, entonces al hacer el if si tengo una fecha por ejemplo 3/03/2012 19:00 y hoy es 4/03/2012 y son 19:24 me dice ace 24 minutos y no me tiene en cuenta los dias q an pasao y luego si lo acabo de poner no me da los segundos me dice 0 minutos nose en que fallo.
  #8 (permalink)  
Antiguo 10/03/2012, 15:01
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 10 años, 7 meses
Puntos: 13
Respuesta: Duda con un if

Cita:
Iniciado por edie8 Ver Mensaje
Haber yo tengo unas horas que es la de ultima modificacion pero quiero que me diga hace x minutos, o x segundos o x dias siempre y cuando no pase de 20 dias, entonces al hacer el if si tengo una fecha por ejemplo 3/03/2012 19:00 y hoy es 4/03/2012 y son 19:24 me dice ace 24 minutos y no me tiene en cuenta los dias q an pasao y luego si lo acabo de poner no me da los segundos me dice 0 minutos nose en que fallo.

Aquí tienes:

Código PHP:
function GetTimeAgoPosted($dataposted) {
    
$datanow=time();
    
$howtimeago=$datanow-$dataposted;
    if(
$howtimeago>=1728000){            //Si hace 20 días o más:
        
        
$fecha = array(
            
'dia' => date('d/m/Y'$dataposted),
            
'hora'=> date('h:i'$dataposted)
        );
        
        
$timeAgo2Return="Posteado el día ".$fecha['dia']." a las ".$fecha['hora']; //Depende de la codificacion de la página &iacute; o 'í'.
        
    
} else {                            //Si hace menos de 20 días:
    
        
if($howtimeago>=86400){        // Hace X Días 
            
$NumberAgo=$howtimeago/86400;
            
$NumberAgo=(int)$NumberAgo;
            if(
$NumberAgo==1){$timeType='día';}else{$timeType='días';} 
        } else if(
$howtimeago>=3600){        // Hace X Horas
            
$NumberAgo=$howtimeago/3600;
            
$NumberAgo=(int)$NumberAgo;
            if(
$NumberAgo==1){$timeType='hora';}else{$timeType='horas';}
        } else if(
$howtimeago>=60){            // Hace X Minutos
            
$NumberAgo=$howtimeago/60;
            
$NumberAgo=(int)$NumberAgo;
            if(
$NumberAgo==1){$timeType='minuto';}else{$timeType='minutos';}
        } else if(
$howtimeago<60){            // Hace X Segundos
            
$NumberAgo=$howtimeago;
            if(
$NumberAgo==1){$timeType='segundo';}else{$timeType='segundos';}
        }
    
        
$timeAgo2Return="Posteado hace ".$NumberAgo." ".$timeType;
    }
    
    return 
$timeAgo2Return;

Recién hecha :)
  #9 (permalink)  
Antiguo 12/03/2012, 14:17
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 8 años, 1 mes
Puntos: 10
Respuesta: Duda con un if

gracias, me a servio de mucha ayuda toda vuestra ayuda, un saludo y muchas gracias.
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 18:06.