Foros del Web » Programando para Internet » PHP »

Eliminar fila especifica de un txt con PHP

Estas en el tema de Eliminar fila especifica de un txt con PHP en el foro de PHP en Foros del Web. Que mas amigos Foros del Web mi comentario es el siguiente: Resulta que estoy ingresando informacion a un archivo txt por medio de un formulario ...
  #1 (permalink)  
Antiguo 29/03/2012, 18:09
Avatar de RikardoWeb  
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 7 años, 8 meses
Puntos: 0
Eliminar fila especifica de un txt con PHP

Que mas amigos Foros del Web mi comentario es el siguiente:

Resulta que estoy ingresando informacion a un archivo txt por medio de un formulario que recibe el email dejo saltos entre cada uno de los registros y todo hasta ahi resulta perfecto.

este es le codigo para insertar en el txt :

index.php
Código PHP:
$page.=$_POST['txtEmail'];
$page.="\r\n";
$fd fopen ('DBtext.dat''a');
fwrite ($fd$page);
fclose($fd);
header('location:index.php'); 
Hago la lista de esos registros y hasta ahi todo anda... este el codigo

listar.php

Código PHP:
<?php
  $ar
=fopen("DBtext.dat","r") or die("No se pudo abrir el archivo");
  while (!
feof($ar)){
    
$linea=fgets($ar);
    
$lineasalto=nl2br($linea);
    if(
$lineasalto!=""){ ?>
        <a href="delete.php?id=<?php echo $lineasalto?>" onclick="return confirm('¿Está seguro de eliminar este registro?');">°</a>
<?php 
    
}
    echo 
$lineasalto;
  }
  
fclose($ar);
?>
<br>
<a href="delete.php?id2=all" onclick="return confirm('¿Está seguro de eliminar todos los registros?');">All delete</a>
<br>
<a href="index.php">Back</a>

El problema radica al momento de eliminar o borrar una fila en especifico pues esto lo hago por medio de un link y me lo manda a un archivo llamado delete.php por url destaco que $id es el nombre del registro que quiero eliminar e $id2 es el nivel de eliminar si son todos o el especifico el codigo es el sgte:


Código PHP:
$archivo file('DBtext.dat');
$id=$_GET['id'];
$id2=$_GET['id2'];

if(
$id2=='all'){
    foreach(
$archivo as $a => $va1){
        if(
$archivo[$a] = $id ){
            unset(
$archivo[$a]);
        }
    }
    
file_put_contents('DBtext.dat'implode $archivo"\n") );
    
header('location: index.php');
}
else{
 foreach(
$archivo as $a => $var){
    
$explode explode(' '$var); 
        if(
trim($explode[0] == $id )){
            unset(
$archivo[$a]);
        }
    }
    
    
$cont_new implode(''$archivo); 
    
$f fopen('DBtext.dat''w'); 
    
fwrite($f$cont_new); 
    
fclose($f); 
    
    
header('location: index.php');

En el 1er condicional me borra todos los archivos (esa es la idea) pero en el sino es donde presento el problemita que en el unset() no me esta tomando el registro ke hago en la comparacion del if

Agradezco a todo el que me pueda ayudar! :) este es mi primer post jejeje
Gracias de ante mano!
  #2 (permalink)  
Antiguo 30/03/2012, 09:06
Avatar de RikardoWeb  
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 7 años, 8 meses
Puntos: 0
Respuesta: Eliminar fila especifica de un txt con PHP

Bueno amigos despues de dar tantas vueltas por los foros del web... me encontre con un pequeño codigo que me funciono a la perfeccion, al comienzo tuve problemitas por que una vez que hacia la "eliminada" hacia que redireccionara con un header(location) al index y no me eliminaba entonces lo que hice fue colocar un <a href> que me linkiara hacia el index y resulto esa la solucion comparto el codigo de eliminar

Código PHP:
$archivo file('DBtext.dat');
$id=$_GET['id'];
$id2=$_GET['id2'];

if(
$id2=='all'){
    foreach(
$archivo as $a => $va1){
        if(
$archivo[$a] = $id ){
            unset(
$archivo[$a]);
        }
    }
    
file_put_contents('DBtext.dat'implode $archivo"\n") );
}
else{
    unset(
$archivo[$id]); 
    
file_put_contents('DBtext.dat'join(''$archivo));  
}
?> 
<a href="index.php">Home</a> 
Foros del Web un super lugar para solucionar problemas a los webmaster!

Etiquetas: hhtml, txt
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:58.