[FX.php List] Search Results To Text File

Malcolm Fitzgerald malcolm at notyourhomework.net
Mon Jul 13 15:59:07 MDT 2015


There are two other considerations. First, you must escape your field 
delimiters if they occur within the data. Second, what are the rules 
concerned your record delimiter, if it appears within the data. Lots of 
import programs give record delimiters a higher priority than field 
delimiters causing all sorts of mess.

This function was amongst the comments on the fputcsv page at php.net. I 
modified it slightly, the original by R dot Mansveld at Spider-IT dot 
de, didn't quote numerals.

|function fwritecsv($handle, $fields, $delimiter = ',', $enclosure = '"') {
     # Check if $fields is an array
     if (!is_array($fields)) {
         return false;
     }
     # Walk through the data array
     for ($i = 0, $n = count($fields); $i < $n; $i ++) {
             # Duplicate in-value $enclosure's and put the value in 
$enclosure's
             $fields[$i] = $enclosure . str_replace($enclosure, 
$enclosure . $enclosure, $fields[$i]) . $enclosure;
     }
     # Combine the data array with $delimiter and write it to the file
     $line = implode($delimiter, $fields) . PHP_EOL ;
     fwrite($handle, $line);

     # Return the length of the written data
     return strlen($line);
}|

Malcolm

On 14/07/2015 8:37 am, Dale Bengston wrote:
> Hi Trish,
>
> If your fields are in the same order coming off your FileMaker layout as you’d like them in the file, you can make a string out of each record's data and write it to your file, using fwrite instead of fputcsv:
>
> foreach ($searchResult as $record) {
> 	$line = ‘“‘ . implode(‘“,”’, $record) . ‘“‘ . “\n”;
> 	fwrite($fp, $line);
> }
>
> My email probably made those double quotes into typesetting quotes, so you’ll probably have to put them back to straight quotes if you copy from here.
>
> Just a thought.
>
> Dale
>
>> On Jul 13, 2015, at 2:53 PM, VanBuskirk, Patricia <pvanbuskirk at fsu.edu> wrote:
>>
>> Unfortunately, yes.  It is being FTP’d to a holding directory and then picked up and imported into a PeopleSoft inventory system.  So, either it CANNOT or they WILL NOT use any other formatting.  Either way, that is the “golden” program around here, and FileMaker is hated and looked down upon.  So the odds of getting that changed are lower than that of zombies invading the Earth.
>>   
>>   
>> From: fx.php_list-bounces at mail.iviking.org [mailto:fx.php_list-bounces at mail.iviking.org] On Behalf Of Malcolm Fitzgerald
>> Sent: Monday, July 13, 2015 3:46 PM
>> To: FX.php Discussion List
>> Subject: Re: [FX.php List] Search Results To Text File
>>   
>> Hi Patricia,
>>
>> Are you absolutely sure that every field MUST have double quotes around it?
>>
>> The whole point of CSV is to pass it onto another app. Is the app that you are passing the data to rejecting the file?
>>
>> Malcolm
>>
>>
>>
>> On 14/07/2015 6:44 am, VanBuskirk, Patricia wrote:
>> Hi guys, I think I’m really close.  I’m getting it to create the file, but I am struggling with the format. Each field needs to have double quotes around it, as in the following example:
>>   
>> "FSU01","RN260715","Facilities Department - MENDENHALL BUILDING A (MMA) - 969 LEARNING WAY","RN","OTC","OTC","1","OPEN","","5/19/2015","5/19/2016"
>> "FSU01","RN260815","Procurement Services & Help Desk - UNIVERSITY CENTER - BLDG. A (UCA) - 282 CHAMPIONS WAY","RN","OTC","OTC","1","OPEN","","5/20/2015","5/20/2016"
>> "FSU01","TSR0299915","Medicine College of Dean's Office - COM -THRASHER BLDG. 1115 W CALL ST","TSR","OTC","OTC","2","OPEN","","5/20/2015","5/20/2016"
>>   
>> Here’s how it’s coming out now.  It is putting a little square when the carriage return should be, and the fields are not being surrounded by quotation marks.  I tried using the $delimiter and $enclosure parameters, but they put random quotation marks in (maybe just around text fields?).  I can get it to echo to the page properly, by using  … ‘”’.$field1.’”,”’.field2 … etc.
>>   
>> <image001.png>
>>   
>> Here’s my code:
>>   
>> <?php
>>   
>> define('DEBUG', TRUE);
>> require_once('FX.php');
>> require_once('server_data.php');
>> require_once('FMErrors.php');
>>   
>>   
>> $search=new FX(FM_IP, FM_PORT, FM_VERSION);
>> $search->SetDBData('WorkOrders_TST.fp7','SeeALL');
>> $search->SetDBUserPass(FM_USERNAME, FM_PASSWORD);
>> $search->AddDBParam('Status_CD', 'OPEN');
>> $search->AddDBParam('ExportTimestamp', null);
>> $search->AddDBParam('REQ_Start_Dt', ' * ');
>> $search->AddDBParam('REQ_End_Dt', ' * ');
>> $search->AddDBParam('Descr254', ' * ');
>> $searchResult = $search->DoFXAction('perform_find');
>>   
>> $fp = fopen("C:\\Temp\\NewOMNI.txt", "w");
>>   
>> echo "<br>Found Records: ".count($searchResult)."<br>";
>>   
>> foreach ($searchResult as $record) {
>>   
>>              $linearray=array($record['Business_Unit'],$record['WO_ID'],$record['Descr254'],$record['WO_Type'],$record['Shop_ID']);
>>      fputcsv ( $fp , $linearray, $delimiter = ',', $enclosure = '"' )."\l" ;
>> }
>> fclose($fp);
>>   
>> echo("<br>Error Code: {$search->lastErrorCode}<br>");
>> echo("FileMaker Error Message: {$errorsList[$search->lastErrorCode]}<br><br>");
>> echo "Error: ".$searchResult['errorCode'];
>>   
>> ?>
>>   
>> I have been messing with this darn thing for several days now, so any tips or direction given will be greatly appreciated!
>>   
>> Trish
>>   
>>   
>> From: fx.php_list-bounces at mail.iviking.org [mailto:fx.php_list-bounces at mail.iviking.org] On Behalf Of Steve Winter
>> Sent: Thursday, July 9, 2015 4:01 PM
>> To: FX.php Discussion List
>> Subject: Re: [FX.php List] Search Results To Text File
>>   
>> Hi Patricia
>>   
>> So - if you’re already using FX, then it should be pretty simple. In pseudo code
>>   
>> 	• create a brand new layout and place the fields you need to export, in the order you need to export them on that layout from top to bottom (this may sounds mad, but what it will mean is that when the FX array of records comes back the fields will be in the right order)
>> 	• do a find for the records which need to be exported
>> 	• use http://php.net/manual/en/function.fopen.php to create a file resource
>> 	• feed the file resource and the FX array of returned records into http://php.net/manual/en/function.fputcsv.php which Joel suggested
>> 	• close the file using http://php.net/manual/en/function.fclose.php
>>   
>> HTH
>> Steve
>>   
>>   
>>   
>>
>> Hi Steve (and Joel),
>>
>> We are currently using FMS 11Adv, but have plans to upgrade to 14 as soon as budget is approved (as fast a herd of turtles around here).
>>
>> That robot has been in use using a script running plug-in for years, importing orders from the web, then creating a csv of certain info for our PeopleSoft folks to import into their inventory system (which is why ODBC is not an option).  They have very specific formatting that they must have or their import will fail.
>>
>> Anywho.... I have replaced the import portion of it through FX, but haven’t yet figured out how to do the export part.
>>
>> Thanks again for your responses!
>>
>> Trish
>>
>>
>> -----Original Message-----
>> From: fx.php_list-bounces at mail.iviking.org [mailto:fx.php_list-bounces at mail.iviking.org] On Behalf Of Steve Winter
>> Sent: Thursday, July 9, 2015 3:36 PM
>> To: FX.php Discussion List
>> Subject: Re: [FX.php List] Search Results To Text File
>>
>> Hi Patricia
>>
>> There are many different ways to solve this problem ;-)
>>
>> Which version of FM server are you using…? it’s certainly possible with both 13 and 14 to export records to csv with a server-side script, so this is going to be the simplest way to go about it.
>>
>> Otherwise either FX or the PHP API could also be used with a scheduled task.
>>
>> Cheers
>> Steve
>>
>>
>>
>>
>> Hi Group!
>>
>> Is there a way, using fx.php to create a csv text file of search results on the FM or web publishing server?
>>
>> Example of how we need the results,
>>
>> "FSU01","TSR0002216","Information Technology Services (ITS) - ","TSR","OTC","OTC","2","OPEN","","07/06/2015","07/06/2016"
>> "FSU01","TSR0002316","Arts & Sciences College of - ","TSR","OTC","OTC","2","OPEN","","07/08/2015","07/08/2016"
>> "FSU01","TSR0002916","Information Technology Services (ITS) - ","TSR","OTC","OTC","2","OPEN","","07/09/2015","07/09/2016"
>> "FSU01","TSR0003016","Alumni Association - ","TSR","OTC","OTC","2","OPEN","","07/09/2015","07/09/2016"
>>
>> We presently have a "script robot" set up that exports a file every 1/2 hour within a FM client.  We are trying to get rid of that FM installation and automate it through php.  I was actually trying to run a FM script through FM Server, but it seems export is not a permitted script step for server script scheduling.
>>
>> Any assistance would be greatly appreciated!
>>
>> Trish
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>
>> Steve Winter
>> +44 777 852 4776
>> steve at bluecrocodile.co.nz
>>
>>
>>
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>   
>> Steve Winter
>> +44 777 852 4776
>> steve at bluecrocodile.co.nz
>>   
>>   
>>   
>>
>>
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>   
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.iviking.org/pipermail/fx.php_list/attachments/20150714/38b90053/attachment-0001.html


More information about the FX.php_List mailing list