Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio3

De WikiEducator
Saltar a: navegación, buscar
Icon present.gif
Tip: Observa:
  • La función rand me retorna un valor aleatorio entre dos valores facilitados
  • Mira lo de año bisiesto (que sea divisible para 4 y que no lo sea para 100 a no ser que lo sea por 400).
  • Uso una variable para informar un poco del tipo de error
  • Importante el break en un case, revisa la teoría, cuando hay una coincidencia ejecuta todos los case hasta que encuentra un break
  • Observa como se concatenan cadenas con el ., no se puede concatenar con +, por que es un operador aritmético e inmediatamente convertiría los valores a numéricos.



<?php
        $dia = rand(1, 35);
        $mes = rand(1, 14);
        $y = rand(1, 3000);
/*Para probar pon valores explícitos en lugar de aleatorios
        $dia = 29;
        $mes = 2;
        $y = 2005;
*/
        //Variable para controlar error en la fecha
        $error = false;
 
        //Variable para ver si año es bisiesto
        $bisiesto = (($y%4==0) && (($y%100!=0)||($y%400==0)));
 
        //Construimos la fecha en una cadena
        $fecha = $dia."/".$mes."/"."$y";
 
        switch ($mes){
            //Meses de 31 días
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if ($dia>31)
                    $error ="dia";
                break;
            //Meses de 30 días    
            case 4:
            case 5:
            case 9:
            case 11:
                if ($dia>30)
                    $error ="dia";
                break;
            case 2:
                if ($bisiesto == true){
                    if ($dia>29)
                        $error="dia";
                }else
                    if ($dia>28)
                        $error="dia en febrero en mes no bisiesto";
                break;
            default:
                $error="mes";
        }
        if ($error)
            echo "La fecha $fecha es incorrecta en $error<br />";
        else
            echo "La fecha $fecha es correcta<br />";
        ?>

Volver