Foros del Web » Programando para Internet » PHP »

borrar linea de un fichero de texto dinamicamente

Estas en el tema de borrar linea de un fichero de texto dinamicamente en el foro de PHP en Foros del Web. hola, me llamo Ángel y estoy haciendo una práctica para la universidad en php que nos han mandado, pero como los profesores son muy majos ...
  #1 (permalink)  
Antiguo 05/11/2005, 06:24
 
Fecha de Ingreso: noviembre-2005
Mensajes: 8
Antigüedad: 18 años, 4 meses
Puntos: 0
Exclamación borrar linea de un fichero de texto dinamicamente

hola, me llamo Ángel y estoy haciendo una práctica para la universidad en php que nos han mandado, pero como los profesores son muy majos y nos proporcionan gran cantidad de información y tutorías, pues tengo q recurrir a este foro para comentaros una dudilla rápida

vereis, tengo un fichero de texto tal que asíN:

Memorias 500 2
Ratones 3000 0.40
Teclados 220 10
Pantallas TFT 30 40
Impresoras 400 1

y mediante un formulario un cliente introduce el elemento y la cantidad q quiere comprar (primera y segunda columna, la tercera es el precio pero es irrelevante), de manera que si el usuario solicita todas las unidades del producto tengo que borrar de la lista esa fila, y supongo que se podrá hacer dinámicamente mediante el empleo de alguna funcion en lugar de reescribir todo el archivo de nuevo...

un saludo y muchas gracias por vuestra atención
  #2 (permalink)  
Antiguo 05/11/2005, 09:08
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 1 mes
Puntos: 0
Lo que se me ocurre que podés hacer es:
1. Usar file() para guardar el contenido en un array
2. Recorrerlo haciendo explode() de cada línea, para que te separe artículo, cantidad y precio.
3. Cuando encuentras el artículo verificás si la cantidad que pide es igual a la que tenés registrada, y en ese caso hacés unset() de ese elemento en el array principal (no del que obtuviste con explode)
4. Con implode transformás el array resultante en una cadena de nuevo
5. Abrís el archivo en modo w para borrar su contenido y escribís la cadena

Código PHP:
$cont file('arch.txt');
foreach(
$file as $id => $art) {
   
$articulo explode(' '$art);
   if(
$articulo[0] == $producto_pedido && $articulo[1] == $cantidad_pedida) {
       unset(
$cont[$id]);
   }
}
$cont_new implode(''$cont);

$f fopen('arch.txt''w');
fwrite($f$cont_new);
fclose($f); 
La verificación de los procesos te la dejo a vos ;)

Una cosa, si el nombre del producto tiene espacios vas a tener problemas. Te recomiendo que como separador uses otro(s) caracter(es) menos usados. Cualquier combinación medianamente rara puede servir (nombre#-#cant#-#precio, x ej)

Sino podés usar bases de datos, y en caso de no contar con ningún motor, SQLLite, que te permite crear en una base de datos en un archivo.

Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #3 (permalink)  
Antiguo 05/11/2005, 12:40
 
Fecha de Ingreso: noviembre-2005
Mensajes: 8
Antigüedad: 18 años, 4 meses
Puntos: 0
muchísimas gracias, me has resuelto el problema :)
  #4 (permalink)  
Antiguo 05/11/2005, 12:45
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 1 mes
Puntos: 0
De nada, qué bueno que te haya servido ;)
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:02.