Ver Mensaje Individual
  #12 (permalink)  
Antiguo 18/02/2010, 08:44
Avatar de juanmacastillo
juanmacastillo
 
Fecha de Ingreso: agosto-2008
Ubicación: Madrid
Mensajes: 12
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: filtrar contenido de archivo txt

Mi respuesta al tema. Te permite modificar los datos casi como si fuera una hoja de cálculo...

A ver qué os parece!

<?php session_start() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Modificar datos en txt</title>
</head>

<body>

<?php


if (!isset($_SESSION["tabla"])) {
loadTabla();
} else {
grabaCambios();
}

function loadTabla() {
$info = file("datos.txt");
foreach($info as $datos) {
$datos = split("#", $datos);
$tabla[] = $datos;
$numDatos = count($datos);
} // fin foreach
$_SESSION["tabla"] = $tabla;
$_SESSION["numDatos"] = $numDatos;
printFormulario($numDatos);
} // fin loadTabla


function printFormulario($numDatos) {
$tabla=$_SESSION["tabla"];
$formulario="";
$formulario.=<<<HERE
<form action="" method="post">
<table>
HERE;
for ($fil=0; $fil<count($tabla); $fil++) {
$formulario.="<tr>\n";
for ($col=0; $col<$numDatos; $col++) {
$valor = $tabla[$fil][$col];
$formulario.=<<<HERE
<td><input type="text" name="$fil$col" value="$valor" /></td>
HERE;
}// fin col loop
$formulario.="</tr>\n";
} // fin fil loop
$formulario.="</table>";
$formulario.=<<<HERE
<input type="hidden" name="cambios" value="true">
<button type="submit">Guardar cambios</button>
</form>
HERE;
print $formulario;
}

function grabaCambios() {
$tabla=$_SESSION["tabla"];
$numDatos=$_SESSION["numDatos"];

// Retomar respuestas
$datosGrabar="";
for ($fil=0; $fil<count($tabla); $fil++) {
$format="";
for ($col=0; $col<$numDatos; $col++) {
$sacar = filter_input_array(INPUT_POST);
$dato = $sacar["$fil$col"];
$dato = rtrim($dato);
$format.=$dato."#";
}// fin col loop
$format = substr($format, 0, strlen($format)-1);
$datosGrabar.=$format."\n";
} // fin fil loop

// Grabar cambios en el archivo
$fp = fopen("datos.txt","w");
fputs($fp,$datosGrabar);
fclose($fp);
print"<h3>Datos guardados</h3>";

unset($_SESSION["tabla"]);
unset($_SESSION["numDatos"]);

print<<<HERE
<form action="" method="post">
<button type="submit">Volver a cambiar</button>
</form>
HERE;
} // fin grabaCambios
?>
</body>
</html>