Foros del Web » Programando para Internet » PHP »

Eliminar fila especifica con PHP

Estas en el tema de Eliminar fila especifica con PHP en el foro de PHP en Foros del Web. Buen día a todos, he estado buscando y buscando un código bueno para eliminar una fila especifica de un archivo PHP, encontre un codigo pero ...
  #1 (permalink)  
Antiguo 02/06/2012, 11:26
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Pregunta Eliminar fila especifica con PHP

Buen día a todos, he estado buscando y buscando un código bueno para eliminar una fila especifica de un archivo PHP, encontre un codigo pero no funciona, alguien me podria ayudar con el error?

El codigo es el siguiente:

Código PHP:
<?php
$numlinea 
20;
$aux = array();
$archivo fopen('datos.php','r');
while (
$linea fgets($archivo))
{
  if (
$_GET['linea'] != $numlinea)
  {
    
$aux[] = $linea;
  }
  
$numlinea++;
}
fclose($archivo);
$aux implode($aux'');
file_put_contents('datos.php'$aux);
?>
y el archivo datos.php esta algo asi

1- Juan
2- Esther
3- Carlos
4- Humberto
.......
......
.....
....
20- Armando

suponiendo que la fila 20 es la que quiero eliminar en base a ese codigo
  #2 (permalink)  
Antiguo 02/06/2012, 11:47
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Eliminar fila especifica con PHP

No me parece la forma más indicada de manejar datos, además no se supone que $numlinea debe iniciar desde 0 ó 1?, si inicia en 20 nunca se dará la condición a no ser que se indique una línea mayor que 20

Evalúe lo que esta haciendo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 02/06/2012, 15:21
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Respuesta: Eliminar fila especifica con PHP

Ahora mismo se me ocurre esto, para intentar mantener un poco la escrutura de lo que pones tu:

Código PHP:
$numlinea 20
$lineas file("datos.php") ;

foreach (
$lineas as $nLinea => $dato)
{
    if (
$nLinea != $numlinea )
        
$info[] = $dato ;
}
$documento implode($info''); 
file_put_contents('datos.php'$documento); 

Y tal como te dicen, con esta estructura, la primera linea es la 0, no la 20 , por lo que si quieres borrar la 20, tendrias que borrar la 19
__________________
» Presupuesto Pagina Web
  #4 (permalink)  
Antiguo 04/06/2012, 13:17
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Exclamación Respuesta: Eliminar fila especifica con PHP

Muchas gracias por sus respuestas y observaciones pero miSko, pongo el codigo que me pasaste y me imprime "> $dato) { if ($nLinea != $numlinea ) $info[] = $dato ; } $documento = implode($info, ''); file_put_contents('datos.php', $documento);"


Cita:
Iniciado por miSko Ver Mensaje
Ahora mismo se me ocurre esto, para intentar mantener un poco la escrutura de lo que pones tu:

Código PHP:
$numlinea 20
$lineas file("datos.php") ;

foreach (
$lineas as $nLinea => $dato)
{
    if (
$nLinea != $numlinea )
        
$info[] = $dato ;
}
$documento implode($info''); 
file_put_contents('datos.php'$documento); 

Y tal como te dicen, con esta estructura, la primera linea es la 0, no la 20 , por lo que si quieres borrar la 20, tendrias que borrar la 19
  #5 (permalink)  
Antiguo 04/06/2012, 15:36
Avatar de ruben5191  
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 22
Respuesta: Eliminar fila especifica con PHP

No sería más fácil utilizar un archivo txt?

En vez de datos.php un archivo datos.txt, luego haces el bucle y recoges el contenido de cada línea en un array y eliminas la posición (fila) que quieras.

Para acabar guardas de nuevo el archivo ya modificado y listo.
  #6 (permalink)  
Antiguo 04/06/2012, 15:43
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Exclamación Respuesta: Eliminar fila especifica con PHP

Gracias Ruben, cual seria el codigo apropiado para realizarlo de la manera que me indicas, ya que no hay ningun problema en modificar mi archivo a txt

Cita:
Iniciado por ruben5191 Ver Mensaje
No sería más fácil utilizar un archivo txt?

En vez de datos.php un archivo datos.txt, luego haces el bucle y recoges el contenido de cada línea en un array y eliminas la posición (fila) que quieras.

Para acabar guardas de nuevo el archivo ya modificado y listo.
te agradecería el codigo.
  #7 (permalink)  
Antiguo 04/06/2012, 16:03
Avatar de ruben5191  
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 22
Respuesta: Eliminar fila especifica con PHP

Aquí lo tienes:

Código PHP:
<?
$archivo 
'datos.txt';
if(
file_exists($archivo)) {
        
$file fopen($archivo,'r');
        while(!
feof($file)) { 
            
$name fgets($file);
            
$lineas[] = $name;
        }
        
fclose($file);
}
// Todas las lineas quedan almacenadas en $lineas
// Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0)
unset($lineas[14]);
$lineas array_values($lineas);
print_r($lineas);
// GUARDAMOS
$file fopen($archivo"w");
foreach( 
$lineas as $linea ) {
    
fwrite$file$linea );

fclose$file );  
?>
Acuerdate bien de que la fila "X" de tu archivo será la posición "X-1" en el Array.

Un saludo
  #8 (permalink)  
Antiguo 06/06/2012, 10:29
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Exclamación Respuesta: Eliminar fila especifica con PHP

Ruben, muchas gracias por tu aporte, disculpa la tardanza pero lo acabo de probar y no me funciona, y no entiendo el porque...

Cita:
Iniciado por ruben5191 Ver Mensaje
Aquí lo tienes:

Código PHP:
<?
$archivo 
'datos.txt';
if(
file_exists($archivo)) {
        
$file fopen($archivo,'r');
        while(!
feof($file)) { 
            
$name fgets($file);
            
$lineas[] = $name;
        }
        
fclose($file);
}
// Todas las lineas quedan almacenadas en $lineas
// Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0)
unset($lineas[14]);
$lineas array_values($lineas);
print_r($lineas);
// GUARDAMOS
$file fopen($archivo"w");
foreach( 
$lineas as $linea ) {
    
fwrite$file$linea );

fclose$file );  
?>
Acuerdate bien de que la fila "X" de tu archivo será la posición "X-1" en el Array.

Un saludo
  #9 (permalink)  
Antiguo 06/06/2012, 10:51
 
Fecha de Ingreso: junio-2012
Ubicación: En mi casa (?
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Eliminar fila especifica con PHP

Usar MySql no está en tus posibilidades?
  #10 (permalink)  
Antiguo 06/06/2012, 12:07
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Eliminar fila especifica con PHP

Cita:
Iniciado por NicoSinisterra Ver Mensaje
Usar MySql no está en tus posibilidades?
depende del caso, por ejemplo con ajax longpolling es más rápido un archivo que hacer N consultas SQL
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #11 (permalink)  
Antiguo 07/06/2012, 14:23
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Eliminar fila especifica con PHP

buen dia, por lo que veo es un poco complejo yo lo que busco es eliminar datos de un archivo php o txt ya sea la primera, ultima o cualquier fila. Alguien me podría decir que esta mal en este codigo:

<?
$archivo = 'datos.txt';
if(file_exists($archivo)) {
$file = fopen($archivo,'r');
while(!feof($file)) {
$name = fgets($file);
$lineas[] = $name;
}
fclose($file);
}
// Todas las lineas quedan almacenadas en $lineas
// Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0)
unset($lineas[14]);
$lineas = array_values($lineas);
print_r($lineas);
// GUARDAMOS
$file = fopen($archivo, "w");
foreach( $lineas as $linea ) {
fwrite( $file, $linea );
}
fclose( $file );
?>

o si hay alguna otra forma me la pueden hacer saber pero menos MySQL
Muchas gracias y saludos!
  #12 (permalink)  
Antiguo 07/06/2012, 14:48
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Eliminar fila especifica con PHP

Cita:
Alguien me podría decir que esta mal en este codigo:
Acabo de testear este código y funciona perfecto.
No tendrás un problema de permisos de escritura sobre dicho archivo?
  #13 (permalink)  
Antiguo 07/06/2012, 14:53
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Eliminar fila especifica con PHP

no se si sera o no muy tonto.. pero... no sera problema de SHORT TAG??

o sea usar <? en vez de usar <?php... suele pasar que los server locales y algunos en la red no tienen habilitado su uso, por lo que se recomienda usar <?php para iniciar el script
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #14 (permalink)  
Antiguo 07/06/2012, 14:58
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Exclamación Respuesta: Eliminar fila especifica con PHP

No creo ya que puedo escribir perfectamente en el en base a php con fopen.
en que forma lo ejecutaste?
mi archivo esta de la siguiente manera.

Código PHP:
<?php
if($_POST['validacion']=="si"){
$archivo './datos.txt';
if(
file_exists($archivo)) {
        
$file fopen($archivo,'r');
        while(!
feof($file)) { 
            
$name fgets($file);
            
$lineas[] = $name;
        }
        
fclose($file);
}
// Todas las lineas quedan almacenadas en $lineas
// Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0)
unset($lineas[14]);
$lineas array_values($lineas);
print_r($lineas);
// GUARDAMOS
$file fopen($archivo"w");
foreach( 
$lineas as $linea ) {
    
fwrite$file$linea );

fclose$file );
}
?>
<table style='font-size:10px; text-align:center' align='center' bgcolor='#FFFFFF' border='1' bordercolor='#999999' cellpadding='0' cellspacing='0' width='800'><tr><td colspan="6" width='50%'><form action="" method="post" enctype="multipart/form-data"><input type="hidden" name="validacion" value="si"><input type="submit" value="Aprobar Ticket" /></form></td><td><form action="" method="post" enctype="multipart/form-data"><input type="hidden" name="validacion" value="no"><input type="submit" value="Desaprobar Ticket" /></form></td></tr></table>
Lo resumí un poco quitándote el html

Cita:
Iniciado por oscartt67 Ver Mensaje
Acabo de testear este código y funciona perfecto.
No tendrás un problema de permisos de escritura sobre dicho archivo?
  #15 (permalink)  
Antiguo 07/06/2012, 15:11
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Eliminar fila especifica con PHP

En tu código hay un error de cierre del if, tiene que ir hasta el fin, pero ese no creo sea tu principal problema.
Código PHP:
if($_POST['validacion']=="si"){ 
    
$archivo './datos.txt'
    if(
file_exists($archivo)) { 
        
$file fopen($archivo,'r'); 
        while(!
feof($file)) {  
            
$name fgets($file); 
            
$lineas[] = $name
        } 
        
fclose($file); 

        
// Todas las lineas quedan almacenadas en $lineas 
        // Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0) 
        
unset($lineas[14]); 
        
$lineas array_values($lineas); 
        
print_r($lineas); 
        
// GUARDAMOS 
        
$file fopen($archivo"w"); 
        foreach( 
$lineas as $linea ) { 
            
fwrite$file$linea ); 
        }  
        
fclose$file );
    }


te aparecen en el navegador el resultado de print_r($lineas)? tiene este aspecto.
Cita:
Array ( [0] => pato1 [1] => pato2 [2] => pato3 [3] => pato4 [4] => pato5 [5] => pato6 [6] => pato7 [7] => pato8 [8] => pato9 [9] => pato10 [10] => xpato1 [11] => xpato2 [12] => xpato3 [13] => xpato4 [14] => xpato6 [15] => xpato7 [16] => xpato8 [17] => xpato9 [18] => xpato10 )
...lo de los patos, era mi archivo datos.txt....
  #16 (permalink)  
Antiguo 07/06/2012, 15:21
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Eliminar fila especifica con PHP

Ya me funciona pero como comentas oscar me se imprimen las filas del array
cual es la solucion a esto ?

Cita:
Iniciado por oscartt67 Ver Mensaje
En tu código hay un error de cierre del if, tiene que ir hasta el fin, pero ese no creo sea tu principal problema.
Código PHP:
if($_POST['validacion']=="si"){ 
    
$archivo './datos.txt'
    if(
file_exists($archivo)) { 
        
$file fopen($archivo,'r'); 
        while(!
feof($file)) {  
            
$name fgets($file); 
            
$lineas[] = $name
        } 
        
fclose($file); 

        
// Todas las lineas quedan almacenadas en $lineas 
        // Ahora eliminas la fila 15 por ejemplo, en el array sería la posicion 14 (empezamos por la 0) 
        
unset($lineas[14]); 
        
$lineas array_values($lineas); 
        
print_r($lineas); 
        
// GUARDAMOS 
        
$file fopen($archivo"w"); 
        foreach( 
$lineas as $linea ) { 
            
fwrite$file$linea ); 
        }  
        
fclose$file );
    }


te aparecen en el navegador el resultado de print_r($lineas)? tiene este aspecto.


...lo de los patos, era mi archivo datos.txt....
  #17 (permalink)  
Antiguo 07/06/2012, 15:24
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Eliminar fila especifica con PHP

elimina esta línea, que es la que pinta los patos.

print_r($lineas);

Saludos!
  #18 (permalink)  
Antiguo 07/06/2012, 15:45
Avatar de ZonaRLX  
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 3 meses
Puntos: 2
De acuerdo Respuesta: Eliminar fila especifica con PHP

Muchas gracias por tu ayuda Oscar, ya funciono tal y como lo queria!

Cita:
Iniciado por oscartt67 Ver Mensaje
elimina esta línea, que es la que pinta los patos.

print_r($lineas);

Saludos!

Etiquetas: con+php, eliminar+fila, especifica
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 22:17.