PHP – LECTURA, ESCRITURA Y MODIFICACION DE FICHEROS DE TEXTO CON PHP
Aunque no es algo habitual, ya que cuando manejamos bases de datos usaremos conexiones SQL, puede haber determinadas ocasiones en las que sea de utilidad manejar ficheros .txt para guardar cierta información.
Vamos a partir de la base de un ficher de texto cuyos registros se almacenan en filas y los campos se separan por el caracter «|»:
LECTURA:
El siguiente código nos valdróa para mostrar los registros de una forma muy sencilla:
function cargar(){
$fp = fopen(‘prueba.txt’, ‘r’);
if (!$fp) { echo ‘ERROR ABRIENDO EL ARCHIVO’; exit;}
$contador = 0;
echo «<table>»;
echo «<tr>»;
echo «<th> NOMBRE </th>»;
echo «<th> MAIL </th>»;
echo «<th> WEB </th>»;
echo «<th> TELÉFONO </th>»;
echo «</tr>»;
while (!feof($fp)) {
$contador++;
$line = fgets($fp);
$field[$contador] = explode (‘|’, $line); // AQUÍ GUARDAMOS EN UNA FILA DE LA MATRIZ LOS CAMPOS QUE ESTÁN EN EL FICHERO DELIMITADOS POR EL CARACTER |
echo «<table>»;
echo «<tr>»;
echo «<td>» . $field[$contador][0] .»</td>»;
echo «<td>» . $field[$contador][1] .»</td>»;
echo «<td>» . $field[$contador][2] .»</td>»;
echo «<td>» . $field[$contador][3] .»</td>»;
echo «</tr>»;
echo «</table>»;
}
echo «<br>»;
echo «<br>»;
echo «El número de registros es $contador»;
fclose($fp);
}
?>
INSERTAR:
El siguiente código permite insertar registros en el txt mediante un formulario:
<?php
function insertar(){
?>
Insertar <br>
<form action=»#» method=»post»>
Nombre: <br><input type=»text» name=»nombre»><br>
Mail: <br><input type=»text» name=»mail»><br>
Web: <br><input type=»text» name=»web»><br>
Teléfono: <br><input type=»text» name=»tel»><br>
<input type=»submit» id=»submitButton» value = «Insertar»>
</form>
<?php
if (isset ($_POST[‘nombre’])){
$n = $_POST[‘nombre’];
$m = $_POST[‘mail’];
$w = $_POST[‘web’];
$t = $_POST[‘tel’];
$fp = fopen(‘prueba.txt’, ‘a’);
if (!$fp) { echo ‘ERROR ABRIENDO EL ARCHIVO’; exit;}
fwrite($fp, PHP_EOL);
fwrite($fp, $n. «|» . $m . «|» . $w . «|» . $t);
fclose($fp);
}
}
?>
Modificar:
El siguiente código permite sustituír todos los registros que coincidan, en este caso, con el nombre introducido:
<?php
function modificar(){
?>
Modificar <br>
<form action=»#» method=»post»>
Nombre: <br><input type=»text» name=»nombre»><br>
Mail: <br><input type=»text» name=»mail»><br>
Web: <br><input type=»text» name=»web»><br>
Teléfono: <br><input type=»text» name=»tel»><br>
<input type=»submit» id=»submitButton» value = «Modificar»>
</form>
<?php
if (isset ($_POST[‘nombre’])){
$n = $_POST[‘nombre’];
$m = $_POST[‘mail’];
$w = $_POST[‘web’];
$t = $_POST[‘tel’];
$fp = fopen(‘prueba.txt’, ‘r+’);
if (!$fp) { echo ‘ERROR ABRIENDO EL ARCHIVO’; exit;}
$contador = 0;
while (!feof($fp)) {
$line = fgets($fp);
$longitud= strlen($line);
$field[$contador] = explode (‘|’, $line);
$desplazamiento = 0 – $longitud;
if ($field[$contador][0] == $n){
fseek($fp, $desplazamiento, SEEK_CUR);
fwrite($fp, $n. «|» . $m . «|» . $w . «|» . $t);
}
$contador++;
}
}
}