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.

Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

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.