PHP - Archivo plano ascii

 
Vista:

Archivo plano ascii

Publicado por Vicente Cayo B. (3 intervenciones) el 09/08/2006 02:01:12
Tengo un problema al parecer con el retorno de linea.
Necesito actualizar una tabla de una base de datos, la informacion la debo de tomar de un archivo texto (delimitado por comas), pero no puedo determinar donde concluye una linea.

En los datos de ejemplo que estoy poniendo abajo e insertado una linea en blanco entre linea y linea para no confundir.

Cuando empleo este comando me retorna en $lineas un arreglo con todos los datos de todas las filas, pero yo necesito solo los datos de una fila para asi poder hacer inser o update a mi tabla y posteriormente tomar la siguiente fila.

$lineas = split(',',$content);

Entorno
======
Linux Mandriva 2006, Postgresql 8 y PHP5.


Esta es la data (ENVLORDC.TXT)
========================

"200601068","02","5","07919","TAIMA INTERNATIONAL INC."," -",20060720,3852.0000,22726.80,"DOL","C30","Compra de Calzado","MGUTIERR",20060905,20060905,"CAL",""

"200601079","02","5","07777","MANUFACTURA BOLIVIANA S.A./MANACO","FABRICA DE CALZADO MANACO CASILLA 513 COCHABAMBA",20060719,600.0000,4710.00,"DOL","F90","Compra de Calzado","MGUTIERR",20060915,20060915,"CAL",""

"200600844","02","5","07796","LEA INTERNATIONAL","RM.1106 #18 XIBAH DONGLI CHAO YANG DISTR. -",20060614,2120.0000,13610.40,"DOL","C12","Compra de Calzado","MGUTIERR",20060730,20060730,"CAL",""


Este es el codigo
============

function pMigra_Ordenes3() {

print "Migrando datos de Ordenes de Compra a sComercial<br>";

//$cnx = gConecBD('ADODB', 'pgsql', 'scomercial');

$arch = "/var/www/htdocs/temporal/ENVLORDC.TXT";
$fp = fopen($arch,"rt");
$content = fread($fp,filesize($arch));
fclose($fp);
$lineas = split(',',$content);

//print_r($lineas)."<br>";
//echo count($lineas)."<br>";

// Aqui deberia recorrer linea por linea el archivo de texto.
for ($i=0; $i < count($lineas); $i ) {

//echo $lineas[0]."<br>";

// Aqui verifico si ya existe el registro.
$sql = "select nro_ocompra from tocompra where nro_ocompra = '".$lineas[0]."'";
//$cnx->debug = true;
$reg = $cnx->Execute($sql);
if ($reg === false) die($cnx->ErrorMsg());
$nReg = $reg->RecordCount();
unset($sql); $reg->close();

if ($nReg>0) {
// actualizo el registro
$sql = "update .......";
}else{
// inserto nuevo registro
$sql = "insert .......";
}

//$cnx->debug = true;
$reg = $cnx->Execute($sql);
if ($reg === false) die($cnx->ErrorMsg());
unset($sql); $reg->close();

}

//$cnx->close();
}

Muchas gracias por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Archivo plano ascii

Publicado por alvariux (3 intervenciones) el 09/08/2006 23:59:00
utiliza esto

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}

con eso lees linea por linea y despues de tener la variable buffer con algun valor usas el mismo comando split y para separarla en los campos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivo plano ascii

Publicado por Vicente Cayo B. (3 intervenciones) el 10/08/2006 02:35:08
Muchas gracias alvaro, salio muy bien el programa.

He leido que tambien se puede hacer con file($nombre_archivo), este comando retorna las lineas en una matriz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar