Foros del Web » Programando para Internet » PHP »

Separar y extraer varios campos de una fila, Array

Estas en el tema de Separar y extraer varios campos de una fila, Array en el foro de PHP en Foros del Web. hola, espero que me puedan echar una mano. el asunto es el siguiente: deseo separar una cadena de datos del tipo.. 143958520 000204603401112011IB01224AI-TP000000000000900062LOLA BARRERA donde ...
  #1 (permalink)  
Antiguo 01/12/2011, 18:02
 
Fecha de Ingreso: diciembre-2011
Ubicación: localhost/cuca/
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Separar y extraer varios campos de una fila, Array

hola, espero que me puedan echar una mano. el asunto es el siguiente: deseo separar una cadena de datos del tipo..

143958520 000204603401112011IB01224AI-TP000000000000900062LOLA BARRERA

donde la segunda cadena la debo separar en varios campos. para luego mostrarlos en pantalla acorde a una estructura. Estos datos provienen de un archivo plano " ***.dat"

necesito definir el criterio del array para que separe por ciclos del carácter numero inicial hasta el carácter final y así sucesivamente en la misma fila y continué haciéndolo por los registros siguientes. les dejo un ejemplo de lo que he hecho hasta ahora:

parte1. php
<?
$file = fopen($_FILES['archivo']['tmp_name'], "r");
$num_lineas = 0;
$caracteres = 0;
while (($info = fgetcsv ($file , ";")) !== FALSE ) {
foreach($info as $linea){
echo $linea;
$num_lineas++;
$caracteres += strlen($linea);
}
}
echo "Total Filas: " . $num_lineas;
echo "Total Caracteres: " . $caracteres;
?>
ejemplo de imagen: http://www.all-systems.com.co/prueb1.jpg
  #2 (permalink)  
Antiguo 01/12/2011, 18:05
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 1 mes
Puntos: 13
De acuerdo Respuesta: Separar y extraer varios campos de una fila, Array

Has intentado con explode(), para separar la cadena por el espacio que tienen en medio.
__________________
Juguetes Sexuales
  #3 (permalink)  
Antiguo 01/12/2011, 18:19
 
Fecha de Ingreso: diciembre-2011
Ubicación: localhost/cuca/
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Separar y extraer varios campos de una fila, Array

gracias por tu respuesta,

viste la imagen del link al final que he agregado al tema?

si he intentado con el explode del modo:
<?php
$cadena = "131544mundoses";
$numero = "";

for( $index = 0; $index < strlen($cadena); $index++ )
{
if( is_numeric($cadena[$index]) )
{
$numero .= $cadena[$index];
}
}


$cadena_nueva = ereg_replace("[0-9]", "", $cadena);

echo "El numero es "; echo $numero;
echo '<br>';
echo "el texto es "; echo $cadena_nueva;
?>

pero como hago para aplicarlo en mi caso??? estoy un poco confuso, dado mi novatex
  #4 (permalink)  
Antiguo 01/12/2011, 18:24
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 1 mes
Puntos: 13
Busqueda Respuesta: Separar y extraer varios campos de una fila, Array

Bueno, podria ser asi:
Usar el explode para separar la primera seccion contra el otro complemento( las otras secciones despues del espacio)
y luego separarlos segun el numero de caracteres si es que no existe un patron para separa la cadena... si no existe la unica es segun la cantidad de caracteres.
__________________
Juguetes Sexuales
  #5 (permalink)  
Antiguo 01/12/2011, 21:51
 
Fecha de Ingreso: diciembre-2011
Ubicación: localhost/cuca/
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Separar y extraer varios campos de una fila, Array

hey Richi gracias por tus respuestas, pero podrias ilustrar esa idea en algun script de ejemplo.

yo entiendo lo del explode. pero no se como aplicarlo en mi caso y si bien me toca separarlos segun el numero de caracteres segun dices arriba pues asi tambien lo estoy planteando,
te agradezco en lo q puedas colaborar!!
  #6 (permalink)  
Antiguo 02/12/2011, 14:43
 
Fecha de Ingreso: diciembre-2011
Ubicación: localhost/cuca/
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Separar y extraer varios campos de una fila, Array

bueno he hecho una breve solucion inicial para leer las cadenas datos del archivo plano.
<?php
$i=0; // variable Inicial para comprobar si se encontró algun valor
//Si no está vacio y si la variable existe
if((!empty($_POST['codigo']))|| isset($_POST['codigo'])){
// abriendo el archivo de texto que se encuentra en el mismo directorio
//que los archivos html y php
$file = fopen ("cuadrilla.dat", "r");
//Para el indice de mi array
$v=0;
//recorrido del archivo datos
while (!feof($file)) {
// consideramos linea por linea
$linea = fgets($file,10000);
//linea por linea enviamos a un array
$cadena[$v]=$linea;
//contador incremental
$v++;
}
//obtenido los datos del archivo cerramos el archivo
fclose ($file);
// recorremos nuestro array y trabajarlo con nuestro algoritmo
foreach($cadena as $pasar)
{
// comparo si el codigo ingresado en el TEXTBOX
//coincide con alguno que tengo en archivo
if($_POST['codigo']==substr($pasar,0,9))
{
// si es asi mostramos los datos que corresponden
echo "<br>";
echo "ID_ORDEN :".substr($pasar,0,9);
echo "<br>";
echo "FECHA_CREACION : ".substr($pasar,10,10);
echo "<br>";
echo "SE : ".substr($pasar,21,9);
echo "<br>";
echo "TIPO_ORDEN : ".substr($pasar,30,10);
echo "<br>";
echo "RUTA_LECTURA : ".substr($pasar,42,13);
echo "<br>";
echo "NOM_CLIENTE : ".substr($pasar,56,25);
echo "<br>";
echo "DIRECCION : ".substr($pasar,86,49);
echo "<br>";
echo "UBICACION : ".substr($pasar,136,49);
echo "<br>";
echo "CIUDAD : ".substr($pasar,186,19);
echo "<br>";
echo "MUNICIPIO : ".substr($pasar,206,19);
echo "<br>";
echo "LOCALIDAD : ".substr($pasar,226,19);
echo "<br>";
echo "BARRIO : ".substr($pasar,226,19);
echo "<br>";
echo "TELEFONO : ".substr($pasar,246,19);
echo "<br>";
echo "N_MEDIDOR : ".substr($pasar,266,14);
echo "<br>";
echo "MARCA_MED : ".substr($pasar,281,6);
echo "<br>";
echo "MOD_MED : ".substr($pasar,287,100);
echo "<br>";
echo "TARIFA : ".substr($pasar,388,19);
echo "<br>";
echo "C_1 : ".substr($pasar,408,1);
echo "<br>";
echo "TAREA_1 : ".substr($pasar,414,100);
echo "<br>";
echo "TAREA_2 : ".substr($pasar,514,100);
echo "<br>";
echo "TAREA_3 : ".substr($pasar,614,299);
echo "<br>";

// indica que encontró algo
$i=1;
}
}
}
// Si no se encontró nada simplemente mostramos este texto
if($i=='0')
{
echo "Su Nro Id_Orden no fué encontrado ....";
echo "<br> Intente nuevamente ";
echo '<A HREF="pguno.php">Anterior</A>';
}
?>
claro que solo me arroja el resultado de la id a consultar. mi pregunta es:como hago para meter lo hecho en un ciclo para ver todas las filas de la primera a la ultima en una tabla y en campos separados?

agradezco y me colaboren... aportenme sus ideas!!!
  #7 (permalink)  
Antiguo 29/12/2011, 14:13
 
Fecha de Ingreso: diciembre-2011
Ubicación: localhost/cuca/
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Separar y extraer varios campos de una fila, Array

Gracias, Encontre la solucion.

######## Comparto aqui mi solucion ###############
<?php

include("../../require/conexion-db.php");
$link=Conectarse();

$aDatos = array();
$file = $_FILES['archivo']['tmp_name'];

$contenido = file("$file");
$i = 0;
foreach($contenido as $c){

$aDatos[$i]['id_orden'] = substr($c,0,9);
$aDatos[$i]['se'] = substr($c,10,10);
$aDatos[$i]['fecha_creacion'] = substr($c,20,8);
$aDatos[$i]['cod_ejecutor'] = substr($c,28,6);
$i++;
}
foreach($aDatos as $d){
$id_orden = $d['id_orden'];
$fecha_creacion = $d['fecha_creacion'];
$se = $d['se'];
$cod_ejecutor = $d['cod_ejecutor'];

$insertar = "INSERT INTO mitabla values(campo1, campo2,....)";
mysql_query($insertar, $link ) or die (mysql_error ());
}

?> Hasta ahi todo bien......... porque selecciono el archivo que cargo a la BD desde el formulario y se hace seleccionandolo uno a uno.

################################

Ahora lo que estoy buscando mejorar....... es no seleccionando el archivo tal cual lo estoy haciendo... sino que al clickear un link me cargue todos los archivos de los subdirectorios.

Explico mejor:

hacer que me lea una única ruta por ejemplo ("/base") donde se almacenan todos los directorios y cada uno de estos tienen subdirectorios pero solo uno de estos subdirectorios contiene los archivos que me interesan cargar a la BD.
No se si me explico, pero lo que deseo es una forma de automatizar la importacion de datos y cargar todos los archivos a la BD en un solo paso.

Agradezco enormemente su colaboracion.........

P.D. ya he buscado con la function.scandir y readdir, bien me arroja las rutas... pero como aplicarlo a lo que tengo

Etiquetas: campos, fila, registro
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 18:53.