2012-01-24 25 views
2

クイックブックに読み込むために使用できるタブ区切りファイル出力を作成しようとしています。ヘッダーに次のコードを使用しています。タブ区切りファイルの作成

header("Content-type: text/plain"); 
header("Content-Disposition: attachment; filename=\"my-data.txt\""); 

私には2つの問題があります。

最初は、コンテンツの一部がテキストであるが、その中にコンマ,が含まれている(これは私がタブ区切りを使用していた理由である)。テキストファイルとそれ以降はアカウントパッケージに格納されていますが、これを実行しないようにSQLを諦めたり、テキストファイルの内容を取り除く方法はわかりません。

第2に、スクリプトの最初の出力はecho文タブ等が続く。?実際の出力しかし初めに余分な行が含まれて私は私が結合している

から来ている場所を確認カント(Iは、ASCII 0Aが挿入されたことを確認することができます)私が使用しているコードは、何か明白でないものがある場合に備えています。

感謝

<?php 
header("Content-type: text/plain"); 
header("Content-Disposition: attachment; filename=\"my-data.txt\""); 
// Open standard includes 
include ('./includes/protect.php'); //User name and password control 
require_once('Connections/Dragonnet.php'); 
mysql_select_db($database_Dragonnet, $Dragonnet); //Connect to database 
?> 

<?php 

$batch1 = $_GET["batch1"]; 
$batch2 = $_GET["batch2"]; 
$query = "SELECT invtrans.StdInvNar1 AS 'invtrans StdInvNar1', 
        invtrans.StdInvNar2 AS 'invtrans StdInvNar2', 
        invtrans.StdInvNar3 AS 'invtrans StdInvNar3', 
        invtrans.StdInvNar4 AS 'invtrans StdInvNar4', 
        invtrans.StdInvNar5 AS 'invtrans StdInvNar5', 
        invtrans.StdInvNar6 AS 'invtrans StdInvNar6', 
        invtrans.StdInvNar7 AS 'invtrans StdInvNar7', 
        invtrans.StdInvNar8 AS 'invtrans StdInvNar8', 
        invtrans.StdInvNar9 AS 'invtrans StdInvNar9', 
        invtrans.StdInvNar10 AS 'invtrans StdInvNar10', 
        invtrans.InvNar1 AS 'invtrans InvNar1', 
        invtrans.InvNar2 AS 'invtrans InvNar2', 
        invtrans.InvNar3 AS 'invtrans InvNar3', 
        invtrans.InvNar4 AS 'invtrans InvNar4', 
        invtrans.InvNar5 AS 'invtrans InvNar5', 
        invtrans.InvNar6 AS 'invtrans InvNar6', 
        invtrans.InvNar7 AS 'invtrans InvNar7', 
        invtrans.InvNar8 AS 'invtrans InvNar8', 
        invtrans.InvNar9 AS 'invtrans InvNar9', 
        invtrans.InvNar10 AS 'invtrans InvNar10', 
        invtrans.Charge AS 'invtrans Charge', 
        invtrans.Cost AS 'invtrans Cost', 
        invtrans.VATtype AS 'invtrans VATtype', 
        invtrans.VATRate AS 'invtrans VATRate', 
        invtrans.SiteName AS 'invtrans SiteName', 
        invtrans.SiteTown AS 'invtrans SiteTown', 
        invtrans.UnitPrice AS 'invtrans UnitPrice', 
        invtrans.Type AS 'invtrans Type', 
        invtrans.InvBatch AS 'invtrans InvBatch', 
        invoiceheaders.Name AS 'invoiceheaders Name', 
        invoiceheaders.Addr1 AS 'invoiceheaders Addr1', 
        invoiceheaders.Addr2 AS 'invoiceheaders Addr2', 
        invoiceheaders.Addr3 AS 'invoiceheaders Addr3', 
        invoiceheaders.Town AS 'invoiceheaders Town', 
        invoiceheaders.County AS 'invoiceheaders County', 
        invoiceheaders.Country AS 'invoiceheaders Country', 
        invoiceheaders.PostCode AS 'invoiceheaders PostCode', 
        invoiceheaders.EMail AS 'invoiceheaders EMail', 
        invoiceheaders.Fax AS 'invoiceheaders Fax', 
        invoiceheaders.InvNo AS 'invoiceheaders InvNo', 
        invoiceheaders.InvDate AS 'invoiceheaders InvDate', 
        invoiceheaders.InvType AS 'invoiceheaders InvType', 
        invoiceheaders.DelType AS 'invoiceheaders DelType' 
FROM (invtrans invtrans 
    INNER JOIN invoiceheaders invoiceheaders ON (invoiceheaders.InvNo = invtrans.InvNumber)) 
WHERE 
(
    invtrans.InvBatch = "."'".$batch1."'"." OR invtrans.InvBatch = "."'".$batch2."'".") 
ORDER BY invoiceheaders.InvNo 

"; 

$result = mysql_query($query) or die(mysql_error()); 

//Create Headers 

    echo "Customer Ref"; 
    echo chr(9); 
    echo "Account Ref"; 
    echo chr(9); 
    echo "TxnDate"; 
    echo chr(9); 
    echo "Invoice No"; 
    echo chr(9); 
    echo "BillingAddress1"; 
    echo chr(9); 
    echo "BillingAddress2"; 
    echo chr(9); 
    echo "BillingAddress3"; 
    echo chr(9); 
    echo "BillingAddressTown"; 
    echo chr(9); 
    echo "BillingAddressCounty"; 
    echo chr(9); 
    echo "BillingAddressCountry"; 
    echo chr(9); 
    echo "BillingAddressPostcode"; 
    echo chr(9); 
    echo "Phone"; 
    echo chr(9); 
    echo "Fax"; 
    echo chr(9); 
    echo "email"; 
    echo chr(9); 
    echo "Description"; 
    echo chr(9); 
    echo "Rate"; 
    echo chr(9); 
    echo "UnitOfMeasure"; 
    echo chr(9); 
    echo "SalesTaxCode"; 
    echo chr(9); 
    echo "Amount"; 
    echo chr(9); 
    echo chr(13); 

while($row = mysql_fetch_array($result)) 

    { 
    //create variables 
    $description = $row['invtrans StdInvNar1']." ".$row['invtrans StdInvNar2']." ".$row['invtrans StdInvNar3']." ".$row['invtrans StdInvNar4']." ".$row['invtrans StdInvNar5']." ".$row['invtrans StdInvNar6']." ".$row['invtrans StdInvNar7']." ".$row['invtrans StdInvNar8']." ".$row['invtrans StdInvNar9']." ".$row['invtrans StdInvNar10']; 
    $description = $description." ".$row['invtrans InvNar1']." ".$row['invtrans InvNar2']." ".$row['invtrans InvNar3']." ".$row['invtrans InvNar4']." ".$row['invtrans InvNar5']." ".$row['invtrans InvNar6']." ".$row['invtrans InvNar7']." ".$row['invtrans InvNar8']." ".$row['invtrans InvNar9']." ".$row['invtrans InvNar10']; 


    //output file 
    echo $row['invoiceheaders Name']; 
    echo chr(9); 
    echo "Account Ref"; 
    echo chr(9); 
    echo $row['invoiceheaders InvDate']; 
    echo chr(9); 
    echo $row['invoiceheaders InvNo']; 
    echo chr(9); 
    echo $row['invoiceheaders Addr1']; 
    echo chr(9); 
    echo $row['invoiceheaders Addr2']; 
    echo chr(9); 
    echo $row['invoiceheaders Addr3']; 
    echo chr(9); 
    echo $row['invoiceheaders Town']; 
    echo chr(9); 
    echo $row['invoiceheaders County']; 
    echo chr(9); 
    echo $row['invoiceheaders Country']; 
    echo chr(9); 
    echo $row['invoiceheaders PostCode']; 
    echo chr(9); 
    echo "01212331234"; 
    echo chr(9); 
    echo $row['invoiceheaders Fax']; 
    echo chr(9); 
    echo $row['invoiceheaders EMail']; 
    echo chr(9); 
    echo $description; 
    echo chr(9); 
    echo $row['invtrans Charge']; 
    echo chr(9); 
    echo "UnitOfMeasure"; 
    echo chr(9); 
    echo "SalesTaxCode"; 
    echo chr(9); 
    echo $row['invtrans Charge']; 
    echo chr(9); 
    echo chr(13); 
    } 

?> 

答えて

8

1

異なる文字セットのタブを読んで、「あなた自身がロール」しようとしている「\トン」のセパレータよりもむしろに内蔵されたfputcsv()機能を使用してヘルプを異なっている。また、タブは、それらの作成に使用されるIDEに応じてスペース(およびスペース[3/4]の数)とタブの間で変更することができます。

別の区切り記号を選択する必要があります...パイプ '|'それは英語やHTMLで使われていないので、特別なキャラクターとして取り上げられて取り除かれるかもしれません。

+0

、私はタブ区切りのファイルは、すべて実現 –

+0

人々が気づく誰ずに何年ものために非常に多くの用途で使用されており、すべての主要なアプリケーションがいない理由です驚いていますこれを使って。私はそれが動作する可能性があることを言及しなかった、あなたはそれをあまりにも定期的に取得する方法を見つけることができるかもしれませんが、それはすべてがファイルの作成と送受信の両面で完璧であると仮定しています。 – Relic

+0

主なアプリケーションはどれですか? Excelが、それはかなりの主要なアプリケーションです...(それは文字で区切られたファイルをインポートするためのデフォルトの文字です)のインポート/エクスポートオプションとして、それを提供しています同様にQuickbooksの(他のOPがそれを必要としない)...空白の数です固定列幅ファイルにのみ関連し、タブまたはコンマ区切りではない –

2

まず、タブ区切りファイルは非常にうまく機能します。私はそれらをほぼ毎日使っています。彼らはとても多くのデータがその中にコメント(姓、名、および例えば住所)を持っているので、カンマでファイルを区切りに比べて作業する方がはるかに簡単です。

あなたはそれを認識せずにあなた自身で改行を挿入しています。 このタグ?>からこのタグ?phpまでのすべてがブラウザに送信されます。あなたの改行があります。

追加の引用符については、trim文を使用してください。アウトラインこれらすべての問題に

echo trim($row['invtrans Charge']); 
関連する問題