Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/05/2005, 10:32
Avatar de dwaks
dwaks
 
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Saludos.

Bueno hace unos dias me pude a desarrollar una función que se encargue de cargar datos de un archivo txt a un array multidimensional.

Esto lo deje en etapa inicial pero te servira para lo que deseas.

Te explicare paso a paso como incorporarlo a tu sistema y asi poder usarlo entendiendo la ideologia que pense yo. No esta super depurado pero funciona ya e realizados pruebas y a trabajado.

Comenzemos:
1- Crea un archivo llamado datatext_function.php y agregale adentro estos codigos:
Código PHP:
<?php
function datatext_start($dt_archivo){
global 
$char_campo,$char_texto,$char_divisor;
if(
file_exists($dt_archivo)){
$datafile file($dt_archivo,"r");
$lineas $datafile[0];
$campos explode($char_divisor,$lineas);

 
# aqui se recorre la primera linea del archivo
 # y se crean los campos que estaran disponibles
 
foreach($campos as $n_campo) {
    
$n_campo eregi_replace($char_campo,"",$n_campo);
    
agregar_campo($n_campo);
 }

  
# aqui se recorre el file para agregar los datos.
  
for($i=1;$i<count($datafile);$i++){
        
$dt_data explode($char_divisor,$datafile[$i]);
        
$posicion 0;
        foreach(
$dt_data as $dt_data_valor) {
        
$dt_data_valor eregi_replace($char_texto,"",$dt_data_valor);
        
agregar_datos($dt_data_valor,$posicion);
        
$posicion++;
        }
  }
return 
true;
}  
else{
return 
false;
}
}

function 
agregar_datos($dt_data_valor,$posicion){
    global 
$datatext;
    global 
$dt_campos_posicion;
    
$dt_data_valor trim($dt_data_valor);
    
array_push($datatext["$dt_campos_posicion[$posicion]"],$dt_data_valor);
}

function 
agregar_campo($n_campo){
$n_campo trim($n_campo);
global 
$datatext;
global 
$dt_campos_posicion;
if(!isset(
$datatext)){
 
$datatext = array(
  
"$n_campo" => array()
 );
 
$dt_campos_posicion = array("$n_campo");
}
else{
 
$temp_data = array(
  
"$n_campo" => array()
 );
 
$datatext array_merge($datatext,$temp_data);
 
array_push($dt_campos_posicion,"$n_campo");
}
}
?>
2- Cuando lo vayas a utilizar incluyes dentro del archivo php que mostrara los resultados el datatext_function.php
Código PHP:
<?php include("datatext_function.php")?>
3- Para usarlo necesitaras darle valores a unas variables que la funcion necesitara y que llamara de forma global:
Código PHP:
<?php
$dt_archivo 
"data/data.dt";
$char_campo "~";
$char_texto "#";
$char_divisor "^";
?>
Aqui te defino para que sriven las variables:
1- $dt_archivo es donde diras que archivo deseas abrir con su ruta.
2- $char_campo este caracter es para saber cuales seran los campos que formaran la estructura de tu archivo, aqui me refiero a que tu dijiste que tienes: nombre,apellido,email como campos o maneras de estructurar tu txt.
La primera linea de tu txt debe ser:
~id^nombre^apellido^email

Asi la funcion sabe que la linea inicial osea la primera linea del archivo de texto son los campos porque inician con ~, fijate que el separador que uso para dividir los campos es el signo ^

3- $char_texto esta es la detecta que las demas lineas de contenido son las que inician por # puedes poner otro signo si deseas que las lineas de contenido inicien con % o cualquier otro signo.

4- $char_divisor este es el que se encarga de dividir los contenidos y los campos, podras ver que el divisor en el ejemplo de los campos era ^.

Ejemplo de un archivo txt ya formatiado con esta estructura que la funcion usara y no dara errores:

~id^nombre^apellido~email
#1^Manuel^Gonzalez^[email protected]
#2^Luis^Patiño^[email protected]
#3^Alberto^Castrellon^[email protected]

Alli ves como esta estructurado un archivo adecuadamente para que la funcion y las variables de configuracion trabajen bien., asi se leera sin error todo y se cargara a un array que sera $datatext

Es impredecible que el primer campo se llame id y que el contenido de cada nombre y apellido lleve delante un id unico para que asi tengan una ubicacion fija en todo esto.

5- Despues de tener todo solo llamas a la funcion que cargara todo y convertira a la variable array como global para que la puedas accesar.
Código PHP:
<?php
# Aqui se inicia la funcion y carga todo el contenido del txt
datatext_start($dt_archivo);

# aqui se muestra en pantalla los contenidos recorriendo
# el array con un for., hasta el momento funciona bien con for.
for($i=0;$i<count($datatext["id"]);$i++) {
 echo 
"<b>".$datatext["nombre"][$i];
 echo 
"</b><br>";
 echo 
$datatext["apellido"][$i]."<br>";
 echo 
$datatext["email"][$i]."<hr>";
}
?>
has las pruebas con la estructura que te dije y usando la funcion y veras que funcionara bien, despues dentro del for puedes hacer validaciones como por ejemplo:
Código PHP:
<?php
for($i=0;$i<count($datatext["id"]);$i++) {
 if(
$datatext["nombre"][$i]=="Manuel"){
  echo 
$datatext["email"][$i]."<br>";
 }
}
?>
Ese ejemplo dice que si el nombre coincide con Manuel que imprima el email sino que no imprima nada.

Espero te sirva cualquier consulta dejamela saber.