Page 1 of 1

dbf to text file

Posted: Tue Mar 13, 2007 1:18 pm
by bouncer

Code: Select all

$db = dbase_open('Exist.dbf', 0) or die (error());

if ($db) {
  $record_numbers = dbase_numrecords($db);
  for ($i = 1; $i <= $record_numbers; $i++) {

  }
}

dbase_close($db);
i have this code to open a dbf file, now how can i export/writte the info from dbf to a text file inside loop ?


thanks in advance

Posted: Tue Mar 13, 2007 1:26 pm
by volka
Get the records with dbase_get_record_with_names and write the array's values to the file, e.g. via fwrite

Posted: Tue Mar 13, 2007 1:51 pm
by bouncer

Code: Select all

$filename = 'out.txt';

$db = dbase_open('Exist.dbf', 0) or die (error());

if ($db) {
     $record_numbers = dbase_numrecords($db);
     $fp = fopen($filename, "w") or die (error());

      for ($i = 1; $i <= $record_numbers; $i++) {
           $row = dbase_get_record_with_names($db, $i);
           fwrite($fp, " ");
     }

     fclose($fp);
}

dbase_close($db);
what come inside " ", and if the file already exists it will be overwrited ?

thanks in advance

Posted: Wed Mar 14, 2007 10:39 am
by bouncer

Code: Select all

$filename = 'out.txt';

$db = dbase_open('Exist.dbf', 0) or die (error());

if ($db) {
	$record_numbers = dbase_numrecords($db);
	$fp = fopen($filename, "w") or die (error());

	for ($i = 1; $i <= $record_numbers; $i++) {
		$row = dbase_get_record_with_names($db, $i);
		fwrite($fp, $row "\r\n");
	}

	fclose($fp);
}

dbase_close($db);
can someone tell me what is wrong in fwrite function ?
if i make a print_r of $row i see something like this:
Array ( [MREF] => 907108 [MARM] => 40 [MEXIS] => 0 [MEXCL] => 0 [MEXFR] => 0 [deleted] => 0 )
how can i transform that into something like this:
907108,40,0,0,0
thanks in advance

Posted: Wed Mar 14, 2007 12:03 pm
by mikeq

Code: Select all

$filename = 'out.txt'; 

$db = dbase_open('Exist.dbf', 0) or die (error()); 

if ($db) { 
        $record_numbers = dbase_numrecords($db); 
        $fp = fopen($filename, "w") or die (error()); 

        for ($i = 1; $i <= $record_numbers; $i++) { 
                $row = dbase_get_record_with_names($db, $i);
                $StringOfDBaseValues = implode(",",$row); 
                fwrite($fp, $StringOfDBaseValues."\r\n"); //dont forget to use the . when joining the variable to "\r\n"
        } 

        fclose($fp); 
} 

dbase_close($db);

Posted: Wed Mar 14, 2007 12:10 pm
by bouncer
thanks mikeq

Posted: Wed Mar 14, 2007 12:15 pm
by mikeq

Code: Select all

$filename = 'out.txt'; 

$db = dbase_open('Exist.dbf', 0) or die (error()); 

if ($db) { 
        $record_numbers = dbase_numrecords($db); 
        $fp = fopen($filename, "w") or die (error()); 

        for ($i = 1; $i <= $record_numbers; $i++) { 
                $row = dbase_get_record_with_names($db, $i); 
                $StringOfDBaseValues = implode(",",$row);
                //find position of last comma in string
                $LastCommaPosition = strrpos($StringOfDBaseValues,",");
                //then use this to chop the string down
                $StringOfDBaseValues = substr($StringOfDBaseValues, 0, $LastCommaPosition - 1);
                fwrite($fp, $StringOfDBaseValues."\r\n"); //dont forget to use the . when joining the variable to "\r\n" 
        } 

        fclose($fp); 
} 

dbase_close($db);
something along those lines would work

Posted: Wed Mar 14, 2007 12:22 pm
by bouncer
thanks mikeq :wink: