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

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.

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.