Inicio Apuntes FPApuntes DAWDesarrollo Web en Entorno Servidor Ejercicio Básico 32: Introducción de datos en un fichero

Ejercicio Básico 32: Introducción de datos en un fichero

Publicado el: Última actualización: 0 Comentario
0

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


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&aacute;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&aacute;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&aacute;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&aacute;s'>Volver</a>";
          }
  
   }
  }
?>
</body>
</html>

 

También te puede interesar ...

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.