Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/12/2008, 05:28
sadai
 
Fecha de Ingreso: diciembre-2008
Mensajes: 6
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación [Solucionado] Borrar líneas *.txt con datos separadas por comas

El problema rezaba asi:

Tengo una serie de datos agrupados por líneas y separados por comas en un TXT, es decir:

Línea uno: numerox,colorx,marcax,saborx...
Línea dos: ynumero,ycolor,ymarca,ysabor...

Problema: En un formulario, el usuario me indíca el segundo dato con el objetivo de que se borre la línea del txt y se suprima el vacío que deja.

Hasta donde he llegado:Tengo una página con un bucle while que busca en el txt el dato que da el usuario. Lo encuentra... pero a lo máximo que he llegado es a borrar todo el archivo, no solo la línea con un file/str_replace.

Código:(para muestra un botón)
[
Código PHP:
// recuperando las variables del trabajo buscado y seleccionado para borrar

$nueva=$_REQUEST["nueva"];
$busca=$_REQUEST["numerotrabajo"]; //buscamos ya que asignamos el nombre original a la del vector
$tecnic=$_REQUEST["tecnica"];
$cantidad=$_REQUEST["cantidad"];
$articulo=$_REQUEST["articulo"];
$texto=$_REQUEST["texto"];
$c1=$_REQUEST["c1"];
$c2=$_REQUEST["c2"];
$cliente=$_REQUEST["cliente"];
$fichero=@fopen("sinasignar/$tecnic.txt",'r'); 
// abro archivo lectura 
    
if (!$fichero)  {
    echo(
"");
    }else{
while ( !
feof$fichero ) ) 
// no parar hasta que acabe el archivo 
{

$c fgets$ficherofilesize("sinasignar/$tecnic.txt") ); 

// separa cada dato
$v=explode(",","$c"); 
$nueva=$v[0];
$numerotrabajo=$v[1];
$tecnica=$v[2];
$cantidad=$v[5];        
$articulo=$v[6];    
$texto=$v[7];                    
$c1=$v[8];        
$c2=$v[9];
$cliente=$v[10];
if ( 
$busca==$numerotrabajo 
// SI hay coincidencia
{
:
'(:'(:'(:'(:'(:'(:'(:'(:'(:'(
}}} 
La solucion:

Código PHP:
// recuperando las variables del trabajo buscado y seleccionarlo para borrar

$nuevar=$_REQUEST["nueva"];
$busca=$_REQUEST["numerotrabajo"]; //buscamos ya que asignamos el nombre original a la del vector
$tecnicar=$_REQUEST["tecnica"];
$cantidadr=$_REQUEST["cantidad"];
$articulor=$_REQUEST["articulo"];
$textor=$_REQUEST["texto"];
$c1r=$_REQUEST["c1"];
$c2r=$_REQUEST["c2"];
$clienter=$_REQUEST["cliente"];

$fichero=@fopen("sinasignar/$tecnicar.txt",'rb');
$tmp=@fopen("sinasignar/temp.txt",'wb');
   
   while ( !
feof$fichero ) ) // no parar hasta que acabe el archivo
{
// lee hasta(\n),EOF 
$c fgets$ficherofilesize("sinasignar/$tecnicar.txt") ); 
            
// separa cada dato
$v=explode(",","$c"); 
$nueva=$v[0];
$numerotrabajo=$v[1];
$tecnica=$v[2];
$cantidad=$v[5];        
$articulo=$v[6];    
$texto=$v[7];                    
$c1=$v[8];        
$c2=$v[9];
$cliente=$v[10];

    if ( 
$busca!=$numerotrabajo ){
fputs($tmp,"$c");
}
}
fclose("$fichero");
fclose("$tmp");

//renombrar machacar el original

$dir="sinasignar/$tecnicar.txt"//puedes usar dobles comillas si quieres 
if(file_exists($dir)) 

if(
unlink($dir)) 
print 
"El archivo fue borrado"

else 
print 
"Este archivo no existe"


$dir2="sinasignar/temp.txt"//puedes usar dobles comillas si quieres 
if(file_exists($dir2)) 

if(
rename($dir2 "sinasignar/$tecnicar.txt")) 
print 
"El archivo fue renombrado"

else 
print 
"Este archivo no existe"

Última edición por sadai; 31/12/2008 a las 01:45 Razón: solucionado