Hola,
Creo que esto te podrá dar una idea; tienes que considerar si el archivo tiene retornos de carro formato ANSI vs Linux; así como la codificación de caracteres del archivo XHTML ISO vs UTF-8.
Lo que realiza el código es mostrar las lineas que están en el archivo, que representan las habitaciones en un ComboBox, y dependiendo de la selección, cuando se presiona enviar, lee el archivo completo y lo vuelve a escribir linea a linea, cambiando solamente la que representa la habitación a modificar.
Saludos,
Archivo habitacion.php :
Código:
<?php
$nombre = 'habitaciones.txt';
if (isset($_POST['Submit']) && $_POST['Submit'] == 'Enviar') {
$archivo = file($nombre); // SLURP
$cuenta = count($archivo);
$out = fopen($nombre, "w+");
for ($i = 0; $i < $cuenta; $i++) {
if ($_POST['habitacion'] == substr($archivo[$i], 0, 4)) {
fwrite($out, substr($archivo[$i], 0, 4) . '-' . $_POST['estado'] . "\r\n"); // ANSI \\r\\n vs LINUX \\n
} else {
fwrite($out, $archivo[$i]);
}
}
fclose($out);
}
?>
<!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" /><!-- Windows vs UTF-8 -->
<title>Habitaciones</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="habitacion.php">
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td><label for="habitacion" accesskey="h">Habitación</label></td>
<td><select name="habitacion" id="habitacion">
<?php
$archivo = file($nombre);
$cuenta = count($archivo);
for ($i = 0; $i < $cuenta; $i++) {
?>
<option value="<?php echo substr($archivo[$i], 0, 4); ?>"><?php echo substr($archivo[$i], 0, 4); ?></option>
<?php
}
?>
</select></td>
</tr>
<tr>
<td><label for="estado" accesskey="e">Estado</label></td>
<td><select name="estado" id="estado">
<option value="1">Ocupada</option>
<option value="0">Desocupada</option>
</select></td>
</tr>
<tr>
<td> </td>
<td><input name="Submit" type="submit" id="Submit" value="Enviar" /></td>
</tr>
</table>
</form>
</body>
</html>
ps:
Este es
solamente un ejemplo, puesto que
puede contener errores, tienes que revisar la seguridad que representa y donde se va a correr el script. Si alguien te manda el estado de habitación 3; que no existe, etc. Normalmente no posteo código a más que sea necesario, pero bueno ... en este caso bueno ... ya está.