Foros del Web » Programando para Internet » PHP »

Declarar un else luego de determinada fecha

Estas en el tema de Declarar un else luego de determinada fecha en el foro de PHP en Foros del Web. Hola a todos. No sé si el título está bien expresado, pero intentaré detallar mi problema de la mejor manera posible. Tengo un código muy ...
  #1 (permalink)  
Antiguo 22/03/2014, 18:02
 
Fecha de Ingreso: julio-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Declarar un else luego de determinada fecha

Hola a todos. No sé si el título está bien expresado, pero intentaré detallar mi problema de la mejor manera posible.

Tengo un código muy simple: en un modulo del panel de usuario de mi web declaro en variables la fecha de finalización de un concurso. Y a su vez, en el mismo módulo, el usuario ve si el concurso está ACTIVO o FINALIZADO capturando la fecha configurada en su PC.

Lo que estoy buscando hacer es que luego de la fecha de finalización del concurso el usuario vea el concurso como FINALIZADO.

Código PHP:
// Fecha de finalización del concurso
$diafin '20';
$mesfin '4';
$aniofin '2014';
//

if (((date("d")) <= $diafin) && ((date("m")) <= $mesfin) && ((date("Y")) <= $aniofin)) {
    echo 
'CONCURSO 1';
}

else {
                      echo 
'CONCURSO FINALIZADO';
       } 
Hasta ahí todo va bien. El problema se presenta cuando por ejemplo: nos encontramos en el día 22/03/2014 y el evento finaliza el 20/04/2014. Como verán en la fecha actual (22/03/2014) el día (22) es mayor al dia declarado en la variable $diafin, pero el mes (03) es menor a $mesfin... por ende, el evento aún no ha finalizado. Sin embargo el usuario verá el concurso como finalizado ya que el día actual es mayor a $diafin.

Nose si estoy siendo claro, no quiero marearlos. Si pueden darme una mano voy a estár agradecido! Cualquier dato que necesiten me avisan.

Sin más,
Muchas gracias desde ya!
  #2 (permalink)  
Antiguo 22/03/2014, 19:59
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Declarar un else luego de determinada fecha

Pero por que tenes que separar las fechas, es obvio que no te va a funcionar muy bien..

Porque tomas la fecha del usuario, porque mejor no tomar la fecha del server... PHP tiene funciones para fechas... por ejemplo, juega con esto, cambiale los signos de < o > y haz un echo del date("d-m-Y") a ver que te sale...

Código PHP:
Ver original
  1. <?php
  2. $current=date("d-m-Y");
  3. $tope="24-04-2014";
  4.  
  5. if($current<=$tope){
  6.     echo "concurso";
  7. }else{
  8.     echo "culmino";
  9. }
  10. ?>
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 22/03/2014, 21:21
 
Fecha de Ingreso: julio-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Declarar un else luego de determinada fecha

Hola loncho_rojas, antes que nada gracias por tu respuesta!

Separé las fechas porque supuse desde un principio que iba a tener problemas a la hora de realizar las comparaciones. Pero veo que me equivoqué, el problema apareció de todas maneras.

Hice unas pruebas siguiendo tu consejo, pero de igual manera no logro corregír el problema:

Código PHP:
<?php
$current
=date("d-m-Y"); // 23-03-2014
$tope="11-04-2014";

echo 
'Fecha actual: '.$current.'<br>';
echo 
'Fecha fin: '.$tope.'<br><br>';
 
if(
$current<=$tope){
    echo 
"Concurso activo";
}else{
    echo 
"Concurso finalizado";
}
?>
Como ves, el código arrojará el resultado del else (Concurso finalizado), cuando en realidad faltarían unos 19 días para que el concurso finalice. El problema se genera cuando el mes (de fin del concurso) es mayor al actual pero el día (de fin del concurso) es menor al actual. ¿Me explico?
  #4 (permalink)  
Antiguo 22/03/2014, 21:42
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Declarar un else luego de determinada fecha

no sabes usar el MAYOR QUE y MENOR QUE.. MAYOR O IGUAL.. MENOR O IGUAL?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 22/03/2014, 22:09
 
Fecha de Ingreso: julio-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Declarar un else luego de determinada fecha

No estás entendiendo el problema me parece.

Código PHP:
<?php
$fechaactual
=date("d-m-Y"); // 23-03-2014
$finconcurso="28-01-2013";

echo 
'Fecha actual: '.$fechaactual.'<br>';
echo 
'Fecha fin: '.$finconcurso.'<br><br>';
 
if(
$fechaactual <= $finconcurso){
    echo 
"Concurso activo";
}else{
    echo 
"Concurso finalizado";
}
?>
Según el ejemplo, el concurso ya finalizó (28-01-2013) si lo comparamos con la fecha actual (23-03-2014). Sin embargo, el código me dirá que el evento aún está activo (resultado del if).

Última edición por EmiOconnor; 22/03/2014 a las 22:19
  #6 (permalink)  
Antiguo 22/03/2014, 22:48
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Declarar un else luego de determinada fecha

$fechaactual >= $finconcurso

Me parece que eres tú el que insiste en lo mismo, si no puedes solucionar un tema de orden y de uso de signos, bue, mucho no puedo hacer... por eso te pregunte si sabes usar el MAYOR QUE y MENOR QUE y los demás, pero veo que no...

< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
== igual
!= no es igual
=== identico a

1>2 // falso
1>=2// falso
1<2// verdadero
1<=2// verdadero
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Última edición por loncho_rojas; 22/03/2014 a las 22:55
  #7 (permalink)  
Antiguo 23/03/2014, 11:13
 
Fecha de Ingreso: julio-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Declarar un else luego de determinada fecha

Si, veo que mucho no podés hacer. De todas maneras te agradezco la ayuda. Esperaré a que otra persona me pueda orientar de otra manera, ya que acá el problema (por lo que poco que entiendo) no es por un mal uso de signos, sino porque la fecha se está leyendo como string.

Dejo ejemplos para quien pueda darme una mano:

Arrojará que el Concurso está ACTIVO, cuando en realidad ya finalizó hace más de 1 año:
Código PHP:
<?php
$fechaactual
="23-03-2014"//date("d-m-Y");
$finconcurso="24-03-2013";
 
if(
$fechaactual $finconcurso){
    echo 
"Concurso finalizado";
}else{
    echo 
"Concurso activo";
}
?>
Arrojará que el Concurso ha FINALIZADO, cuando en realidad falta 1 año para que finalice:
Código PHP:
<?php
$fechaactual
="23-03-2014"//date("d-m-Y");
$finconcurso="22-03-2015";
 
if(
$fechaactual $finconcurso){
    echo 
"Concurso finalizado";
}else{
    echo 
"Concurso activo";
}
?>
Arrojará que el Concurso está ACTIVO, cuando en realidad ya finalizó hace 11 meses:
Código PHP:
<?php
$fechaactual
="23-03-2014"//date("d-m-Y");
$finconcurso="23-04-2013";
 
if(
$fechaactual <= $finconcurso){
    echo 
"Concurso activo";
}else{
    echo 
"Concurso finalizado";
}
?>
Por lo que entiendo, basandome en el último ejemplo, PHP interpreta a $fechaactual como (string) "23032014" y a $finconcurso (string) "23042013". Entonces:

23032014 > 23042013 // False
23032014 < 23042013 // True

23-03-2014 > 23-04-2013 // False (si lo vemos como fecha, el día 23-03-2014 es posterior a 23-04-2013. Por lo cual debería ser True)
23-03-2014 < 23-04-2013 // True (si lo vemos como fecha, el día 23-04-2013 es anterior a 23-03-2014)
  #8 (permalink)  
Antiguo 23/03/2014, 14:04
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Declarar un else luego de determinada fecha

Estas errado, y no es problema del foro que no sepas interpretar algo tan simple.. ya te di la solución, de ahi a como lo apliques es error totalmente tuyo...

Hasta tu deducción es errada... como crees que PHP va saber si un string es mayo o menor... que es mas la palabra "sapo" o la palabra "leon" no seas NOOB, date() devuelve un dato del tipo FECHA y no un string cualquiera. Vienes aqui con ese problema, se te pasa la mano y te haces el enojado por no saber sumar o restar... bah... con 8 mensajitos en 6 años no me sorprende que ni siquiera sepas como interactuar aqui... si ya sabes como hacer lo falso y lo verdadero, pues usa tu imaginación y tu creatividad para modificar el código que te de el resultado esperado, no es más dificil de lo que vos queres hacer verlo...

Es tan sencillo como que tienes 20 manzanita rojas, y cuando llegues 10 que te avise que ya no puedes comerlas... pero no, tu insistes que seguiras teniendo hambre y te acabaras las manzanas no importa la restricción que le pongas...

habrá que decirle a la gente que creó PHP que deje de mamar chelas cuando crean el código y no la hagan con tantos errores.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Última edición por loncho_rojas; 23/03/2014 a las 14:11
  #9 (permalink)  
Antiguo 23/03/2014, 14:27
 
Fecha de Ingreso: julio-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Declarar un else luego de determinada fecha

Gracias, ya pude resolver lo de las Manzanas... ahora me resta resolver el problema que he planetado (?).
Vamos compañero, no te pongas malo que me causas más gracia. Enserio valoro y agradezco tu ayuda, y en ningún momento me hice el enojado. Pero tampoco es para que desmerezcas a la gente que tiene menos "mensajitos" que vos y la trates de "NOOB" por no saber lo que vos sí. Eso sí que me saca.

Seguiré tus consejos para encontrar el error que estoy cometiendo, que de seguro es una tontería (cosa de tontos, claro).

Sin más,
Un saludo y gracias nuevamente.
  #10 (permalink)  
Antiguo 23/03/2014, 15:08
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Declarar un else luego de determinada fecha

Tenes que saber lo que es un NOOB.. saludos y haz lo que quieras.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: declarar, fecha, variable
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 11:18.