Foros del Web » Programando para Internet » PHP »

Aporte: Tabla de datos como archivos de texto

Estas en el tema de Aporte: Tabla de datos como archivos de texto en el foro de PHP en Foros del Web. Hacer una "tabla" de datos con archivos de texto no es muy complicado, ya que solo usaremos arreglos. La funcion file() de PHP, extrae los ...
  #1 (permalink)  
Antiguo 03/06/2008, 19:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 3 meses
Puntos: 2534
Aporte: Tabla de datos como archivos de texto

Hacer una "tabla" de datos con archivos de texto no es muy complicado, ya que solo usaremos arreglos.

La funcion file() de PHP, extrae los datos de un archivo (cualquiera) y lo trata como un arreglo, basado en el identificadores de linea \r y/o \n
En algunas ocasiones esto no se da asi, y se debe a la falta de configuracion en el php.ini, en concreto: auto_detect_line_endings = On

Una ves entendido esto, simplemente se debe cargar el archivo siempre que lo utilizemos. Siendo no necesario el uso de ciclos para cargar el archivo dentro de un arreglo.

¿Como crear una tabla?

Esto no parece gran ciencia, solo es crear un archivo "ejemplo.dat" y pensar en el como si fuera una tabla.
Una linea es una fila, y tenemos que determinar un separador para las columnas... pueden ser varios caracteres, una secuencia o solo uno, etc.

En los ejemplos usaremos el caracter de tabulacion \t por lo tanto, ningun dato deberia contener tal caracter... y por eso deberemos escaparlo o eliminarlo.

¿Como inserto un dato?

Sabiendo que es un dato nuevo, se agregara al final del archivo en una fila nueva.

- $datos es la linea o fila, formateada y escapada previamente.
Código PHP:
// digamos que usamos 4 columnas
// -----------------------------------
//   ID  |  Nick  |  Email  |  Pass

$datos "13\tpateketrueke\[email protected]\txihmetecuhtli";

// hay que notar el uso de comillas dobles para confirmar el uso de tabulaciones \t 
- $archivo es la variable que contiene la ruta de "ejemplo.dat"
Código PHP:
$tmp fopen($archivo'a'); // modo 'append'

// escribimos agregando el caracter de linea nueva al final...
// deberia bastar, si la configuracion de auto-detectar-fin-de-linea esta ON
fwrite($tmp"$datos\n");

fclose($tmp); // cerramos 
¿Como selecciono un dato?

Bueno, hacer una seleccion es muy simple... por linea o por dato (aun podria ser mas complejo)

Hagamoslo por dato, nosotros usaremos algo sencillo: comparacion por ID

Considerando el formato de nuestra "tabla" y la posicion de la columna de ID, y obviamente que ID es un numero entero seria asi...

- $id es el dato a comparar, ya sea obtenido por GET/POST etc.
- $datos es el arreglo que almacenara la seleccion
Código PHP:
$tabla file($archivo); // cargamos tabla

// iteramos la tabla en busqueda de...
foreach ($tabla as $linea => $datos)
{
  
$datos explode("\t"$datos); // separamos
  
  // ID en este caso es el indice cero
  
if ($datos[0] === $id)
  {
    
// OK, salimos y $datos seran conservados despues del ciclo...
    
break;
  }
}

// aqui, nuestro codigo con $datos 
¿Como actualizo un dato?

Bueno, ya seleccionamos nuestros datos y modificamos algunos de ello, vamos a actualizarlos.

- $nuevos_datos es $datos pero... modificado
Cita:
Eje-je muchachito, eje-je
.... esto es igual a seleccionar un dato... ya que al hacerlo, estaremos en la linea adecuada para el "actualizaje"

Entonces, ¿repito lo que hice al seleccionar el dato y luego?

- Ahora, no uses break y justamente reemplaza $tabla[$linea] con $nuevos_datos
Tiene que ser asi, ya que estas sobre-escribiendo el indice real de la tabla real... y no la variable volatil dentro del ciclo.

- Guarda igual que cuando insertaste un dato, pero ahora en el modo "w+" ya que re-escribiras todo el contenido del archivo y no solo la linea modificada.

¿Como elimino un dato?

Igual que con el proceso de actualizado, primero seleccionas o mas bien... te ubicas en la linea adecuada y simplemente usas la funcion unset() con $tabla[$linea]

- Ahora, vuelve a usar break... al final deberas re-escribir el archivo completo, recuerda abrir el archivo en modo "w+"
- Cuando escribas en el archivo, ya sabes que debes usar join('', $tabla) para unir los datos, siendo conservados los caracteres de salto de linea.
- En el momento de re-escribir todo el archivo, en varios casos... no deberas usar el caracter de salto de linea final, solo cuando se agreguen mas datos al archivo.

RECOMENDACIONES:

- Creo que para este nivel, ya se deben usar bien ciclos y arreglos... funciones
- A mi punto de vista todo esto debe ser agrupado en funciones, para que sea mas facil el trabajo...
- La verdad tampoco es un metodo muy fiable, sobre todo si usas muchos datos... ya sean columnas o filas, mas de 400 creo seria un rollo (pero no estoy seguro)

Gracias.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 04/06/2008 a las 00:41
  #2 (permalink)  
Antiguo 01/12/2009, 04:51
Avatar de tepitenio  
Fecha de Ingreso: noviembre-2008
Mensajes: 1.188
Antigüedad: 15 años, 8 meses
Puntos: 88
Respuesta: Aporte: Tabla de datos como archivos de texto

Me sirvio mucho, gracias!
__________________
Tepi
(Si te gusto mi opinion... por que no me das karma???)
  #3 (permalink)  
Antiguo 28/02/2010, 06:43
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Aporte: Tabla de datos como archivos de texto

Yo lo estuve viendo y me parecio excelente, aunque no lo pude adaptar a mi codigo
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

SíEste tema le ha gustado a 4 personas




La zona horaria es GMT -6. Ahora son las 03:34.