Inicio Apuntes FPApuntes DAWDesarrollo Web en Entorno Servidor Ejercicio Básico 22 PHP: Ejercicio de funciones sobre el clima

Ejercicio Básico 22 PHP: Ejercicio de funciones sobre el clima

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Hay que crear un formulario en el que se le pide al usuario qué tiempo atmosférico ha experimentado durante un mes. En campos de texto separados se solicita la ciudad, mes y año. Más abajo se ofrecen un conjunto de checkboxes (por ejemplo ‘soleado’,’nublado’, ‘lluvia’, ‘granizo’, ‘aguanieve’, ‘nieve’, ‘viento’, ‘frío’, ‘calor’, ‘neblina’, ‘humedad’). Estos se deben escribir dinámicamente como una llamada a una función. A esta se le pasan un número variable de argumentos. Con ellos se creará un conjunto de checkboxes llamando a esta función sólo una vez. Asegúrate que en cada elemento que se muestra la primera letra está en mayúsculas.

Además el formulario debe preguntar si el usuario quiere añadir algo más. Para esto se le proporcionará una caja de texto de tamaño 60 donde puede introducir más información meteorológica separada por comas.

Escribe una función llamada “Muestrala” que presente en una lista desordenada de elementos. La función debe ser capaz de aceptar una string delimitada por comas o un array de strings como argumento.

La respuesta del formulario debe mostrar “En la ciudad del mes y año usted observó las siguientes condiciones atmosféricas (los valores que marcó y añadió el usuario) en forma de una lista desordenada”.

Código del ejercicio sobre funciones del clima con PHP

    <head>
            <meta charset="UTF-8">
            <title>Ejercicio 22</title>
        </head>
        <body>
     
            <?php
     
            //Función para crear los checkboxes de manera dinámica pasandole los valores como un array.
            //Se pone la primera letra con mayúscula un ucfirst
            function crearcheckboxes($condiciones = array()) {
                //Recorremos el array con foreach
                //Creamos cada uno de los checkboxes con cada uno de los valores del array
                foreach ($condiciones as $condicion) {
                    ?>
                    <div align="left">
                        <input type="checkbox" id="<?php echo $condicion ?>" name="checks[]" value="<?php echo $condicion ?>">
                        <label for="<?php echo $condicion ?>"><?php echo ucfirst($condicion) ?></label>
                    </div>
                    <?php
                }//cerramos el foreach
            }//cerramos la función crearcheckboxes
     
            //Función para mostrar una lista desordenada con los datos introducidos por el usuario o seleccionados.
            function muestrala($datos) {
                //comprobamos que los datos introducidos son string
                //si lo son, separamos el contenido por el caracter ,
               
                if (is_string($datos)) {
                    $datos = explode(',', $datos);// separamos por el caracter coma
                }
                ?>
                <ul><!--creamos a lista desordenada-->
                    <?php
                    foreach ($datos as $lista) { //recorremos el array $datos
                    ?>
                    <li><?php echo ucfirst($lista)?></li><!--imprimos cada uno de las posiciones de $lista-->
                    <?php
                    }//cerramos el foreach
                    ?>
                </ul><!--cerramos la lista desordenada-->
                <?php
            }
           
            if (isset($_POST) && !empty($_POST)) {
                //impresión
                echo "En la ciudad ".ucfirst($_POST['ciudad'])." en el mes de ".ucfirst($_POST['mes'])." de ".$_POST['anho']." usted observó las siguientes condiciones atmosféricas: ";
                //print_r($_POST);
                @$checks=$_POST['checks']; //todos los campos checks que llegan por post se meten dentro de la variable $checks
                if (empty($checks)){
                    $checks="Sin datos"; //en caso de venir vacío rellenamos la variable
                }
                muestrala($checks); //pasamos a la función muestrala la variable que trae el array de los checkbox
               
                //imprimimos lo que el usuario escribiera
                echo "Otras condiciones metereológicas:";
                $otras=$_POST['otras']; //todos los datos que llegan por post desde el campo otras, se meten dentro de $otras
                if (empty($otras)){
                    $otras="Sin datos"; //en caso de venir vacío rellenamos la variable
                }
                //var_dump($otras);
                muestrala($otras); //pasamos a la función muestrala la variable que trae lo que escribió el usuario
                echo "<br/>";
                echo "<a href='index.php' title='Volver'>Volver</a>"; //botón volver al inicio
            }else{
            ?>
            <!-- Con required obligamos a que se cubran los ipunt -->
            <form action="index.php" method="post"><!--Inicio del formulario con el que se trabaja-->
               
                <table><!--Inicio de la tabla-->
               
                    <tr><!--Fila que contiene advertencia-->
                        <td colspan="2" bgcolor="#f0f0f0" align="center">
                            <h5>Los campos marcados con un * son obligatorios</h5>
                        </td>
                    </tr><!--Fin de la fila que contiene advertencia-->
                   
                    <tr><!--Fila del campo ciudad-->
                        <td>Ciudad*</td>
                        <td><input type="text" name="ciudad" required></td>
                    </tr><!--Fin de la fila del campo ciudad-->
                   
                    <tr><!--Fila del campo mes-->
                        <td>Mes*</td>
                        <td><input type="text" name="mes" required></td>
                    </tr><!--Fin del campo mes-->
                   
                    <tr><!--Fila del campo año-->
                        <td>A&ntilde;o*</td>
                        <td><input type="text" name="anho" required></td>
                    </tr><!--Fin de la fila del campo año-->
                   
                    <tr><!--Fila que contiene el array con el que se crearán los checkboxes-->
                        <td><?php
                            //llamamos a la función crearcheckboxes y le pasamos como datos un array
                            //con un número de argumentos variable, todos ellos de tipo string
                            crearcheckboxes(array(
                                'soleado','nublado','lluvia','granizo','aguanieve','nieve',
                                'viento','frío','calor','neblina','humedad'))
                            ?></td>
                    </tr><!--Fin de la fila que contiene el array con el que se crearán los checkboxes-->
                   
                    <tr><!--Fila que contiene la línea horizontal-->
                        <td colspan="2">
                            <hr widht="100%">
                        </td>
                    </tr><!--Fin de la fila que contiene la línea horizontal-->
                   
                    <tr><!-- Fila para escribir otras condiciones meterológicas -->
                        <td colspan="2">
                            <strong>Escribe otras condiciones metereológicas<br> separadas por comas:</strong><br/>
                            <textarea name="otras" cols="60"></textarea><!--textarea con un tamaño de 60-->
                        </td>
                    </tr><!-- Fin de la fila para escribir otras condiciones meterológicas -->
                   
                    <tr><!--Fila de botones-->
                        <td colspan="2"><div align="right">
                                <input type="reset" value="Limpiar"><!--botón limpiar formulario-->
                                <button type="submit">Enviar</button><!--botón enviar-->
                         </div></td>
                    </tr><!--Final de la fila de botones-->
               
                </table><!--Final de la tabla-->
            </form><!--Final del formulario-->
     
            <?php
            } //Se cierra aquí el else para que el formulario no se imprima al mismo tiempo que la respuesta
            ?>
     
        </body>

 

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.