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ñ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>