13 - Creación de un archivo de texto

Una actividad fundamental es poder registrar información en el servidor (no como hemos estado haciendo hasta el momento generando sólo una página con los datos cargados)

Para la registración de datos en el servidor disponemos de dos herramientas que se complementan en muchos casos (archivos de texto y bases de datos)

En este apartado veremos como crear un archivo de texto y añadir datos al mismo.

Lo presentaremos al tema resolviendo un problema: Implementación de un libro de visitas.

Para resolver este problema plantearemos dos páginas, un formulario para realizar la carga del nombre del visitante y sus comentarios (disponemos un objeto de tipo «text» y otro de tipo «textarea»):

pagina1.html
<html>
    <head>
        <title>Problema</title>
    </head>
    <body>
        <form action="pagina2.php" method="post">
            Ingrese su nombre:
            <input type="text" name="nombre">
            <br>
            Comentarios:
            <br>
            <textarea name="comentarios" rows="10" cols="40"></textarea>
            <br>
            <input type="submit" value="Registrar">
        </form>
    </body>
</html> 

Este formulario es similar a los planteados en problemas anteriores, sólo le hemos agregado al control textarea, las propiedades rows y cols que dimensionan el mismo en la pantalla:

<textarea name="comentarios" rows="10" cols="40"></textarea> 

Veamos ahora la página (pagina2.php) que graba los datos cargados en el formulario en un archivo:

pagina2.php
<html>
    <head>
        <title>Problema</title>
    </head>
    <body>
        <?php
        $ar = fopen("datos.txt", "a") or
        die("Problemas en la creacion");
        fputs($ar, $_REQUEST['nombre']);
        fputs($ar, "\n");
        fputs($ar, $_REQUEST['comentarios']);
        fputs($ar, "\n");
        fputs($ar, "--------------------------------------------------------");
        fputs($ar, "\n");
        fclose($ar);
        echo "Los datos se cargaron correctamente.";
        ?>
    </body>
</html> 

En primer lugar creamos o abrimos el archivo de texto «datos.txt». El segundo parámetro de la función fopen indica la forma de apertura de archivo «a» (lo crea o si ya existe el archivo lo abre para añadir datos al final), «w» (crea el archivo de texto, si existe borra su contenido) y la última forma de apertura del archivo es «r» (abre el archivo para su lectura)

Como en este problema nos interesa que el archivo vaya creciendo con los datos que aportan los visitantes al sitio lo abrimos para añadir, parámetro «a».

La función fopen retorna una referencia al archivo y la almacenamos en una variable llamada $ar.

Si el archivo no se puede abrir, se ejecuta la instrucción que se encuentra luego del operador «or» en nuestro caso llamamos a la función die que finaliza la ejecución del programa PHP mostrando como mensaje el texto que le pasamos a dicha función (por ejemplo si el disco duro del servidor está lleno no se podrá crear el archivo de texto)

 $ar = fopen("datos.txt", "a") or
    die("Problemas en la creacion"); 

Para la grabación de datos utilizamos la función fputs que tiene dos parámetros: la referencia al archivo donde grabamos y el string a grabar.

fputs($ar, $_REQUEST['nombre']);
  fputs($ar, "\n"); 

Para el salto de línea en el archivo de texto, usamos los caracteres \n.De esta forma cuando leamos el archivo de texto lo haremos línea a línea.

Cuando dejamos de trabajar con el archivo llamamos a la función fclose.

Hay que tener muy presente que el archivo se almacena en el servidor y no en la máguina de la persona que está navegando. Si nos dirigimos a la carpeta c:\xampp\htdocs encontraremos el archivo «datos.txt», tenga en cuenta que está en la máquina donde se ejecutó el script de PHP (normalmente en un servidor web). Luego veremos como leer el contenido del archivo y mostrarlo en otra página del sitio (En nuestro caso como utilizamos el equipo como cliente/servidor el archivo datos.txt se crea en la misma carpeta donde se alojan nuestras páginas php)