Bueno, aquí dejo un nuevo ejercicio de esto que conocemos como PHP. Actualmente vamos por el trabajo con archivos (por fin vamos dejando atrás la mierda de hacer bucles y esas cosas)… quién diría que llegaría a publicar ya 32 ejercicios. Vamos a ver de que trata el ejercicio primero.
Supongamos que un profesor desea guardar los datos del examen de sus alumnos (es mucho suponer, lo sé). Para ello habrá que crear un programa que muestra un formulario que le permite introducir el DNI y la nota de cada alumno. Estos datos nuestro programa los agregará al final de un fichero de texto el cual podremos consultar después de cada consulta.
Para evitar duplicidades de los alumnos (supondremos que un alumno solo puede tener una nota), modificamos el programa de forma que antes de introducir el DNI se compruebe que no esté ya guardado. En caso de ser así, se mostrará un mensaje de error.
Para realizar este programa, no nos mataremos demasiado con el control de errores. Solamente buscaremos que los datos han de ser siempre cubiertos y que la nota ha de estar siempre entre 0 y 10.
Para ver un ejemplo de como resulta el ejercicio, solo hay que hacer click aquí. Y una vez dicho todo lo escrito, vamos al turrón del asunto …
Ejercicio introducción de datos en un fichero
El ejercicio lo he dividido en dos archivos. El index.html, donde se mostará todo el html del formulario y el index.php, en el que se tratará el asunto gordo del ejercicio.
index.html
<html> <head> <title>Ejercicio 32</title> <meta charset="utf-8"> <script type="text/javascript"> //Función para limpiar el formulario cuando se carge la página function formReset() { document.getElementById("formulario").reset(); } </script> </head> <body onload="formReset();"> <center><h1>Introductor de Notas</h1> <h6>Antes de abrir el registro de datos hay que introducir algún dato mediante el formulario</h6> <form action="index.php" method="post" id="formulario"> DNI: <input type="text" name="DNI" maxlength="9" size="9"> <br> Nota: <input type="text" name="nota" maxlength="5" size="5"> <br> <input type="submit" value="Registrar"> </form> <br> <a href="datos.txt" title="Abrir archivo de registro">Abrir Registro de datos</a></center><br> </body> </html>
Index.php
<!DOCTYPE HTML> <html> <head> <title>Guardar datos ejercicio 32</title> <meta charset="UTF-8"> </head> <body> <?php if (empty($_POST['DNI'])||empty($_POST['nota'])){ echo "Ninguno de los campos puede estar vacío"; echo "<br><a href='index.html' title='volver atrás'>Volver</a>"; }else{ @$lineas = file("datos.txt");//guardamos el archivo donde vamos a escribir en $lineas $dni=$_POST["DNI"]; //el valor a buscar $encuentra=0; //el número de veces que se ha encontrado if ($_POST['nota']<0 || $_POST['nota']>10){ echo "ERROR. La nota tiene que estar entre 0 y 10"; echo "<br><a href='index.html' title='volver atrás'>Volver</a>"; }else{ if (file_exists("datos.txt")){ foreach(@$lineas as $linea){ //recorremos el archivo dónde buscarmos if (strstr($linea,$dni)){ //si en el archivo aparece el string que pasamos como dni $encuentra+=1; //añadimos uno al macador } } if ($encuentra==0){ //si no se ha encontrado ninguna coincidencia de DNI en el archivo $ar=fopen("datos.txt","a+") or die("Problemas en la creación!!"); fputs($ar,$_REQUEST['DNI']); fputs($ar,"\n"); fputs($ar,$_REQUEST['nota']); fputs($ar,"\n"); fputs($ar,"--------------------------------------------------------"); fputs($ar,"\n"); fclose($ar); echo "Los datos se guardaron correctamente."; echo "<br><a href='index.html' title='volver atrás'>Volver</a>"; }else{ //en caso de que se produzca alguna coincidencia echo "El DNI ". $dni." ya está agregado. Introduzca un DNI diferente. <a href='index.html'>Volver</a>"; } }else{ echo "El archivo datos.txt no existe y se creará.<br>"; $ar=fopen("datos.txt","a") or die("Problemas en la creación!!"); fputs($ar,$_REQUEST['DNI']); fputs($ar,"\n"); fputs($ar,$_REQUEST['nota']); fputs($ar,"\n"); fputs($ar,"--------------------------------------------------------"); fputs($ar,"\n"); fclose($ar); echo "Los datos se guardaron correctamente."; echo "<br><a href='index.html' title='volver atrás'>Volver</a>"; } } } ?> </body> </html>