2012-05-09 3 views
2

私は、本質的に動的なmysql dbフィールドを使用してphpでテキストファイルを作成しています。私は列の幅をそのまま保つことができません、plは私が意味するものの良いアイデアを得るために、以下のデータと列を参照してください。PHPがMYSQLの問題から動的データを含むテキストファイルを作成する

テキストファイル出力:

   450 65445 90900 87954   112 
       90900 45875 24565 15484   KA01 23232 

上記のためのPHPスクリプト:今すぐ

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 

if ($quer2[DCNO1]>0){fwrite($fh, str_pad($quer2[DCNO1],19, " ", STR_PAD_LEFT));} if ($quer2[DCNO2]>0) {fwrite($fh, str_pad($quer2[DCNO2],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO3]>0) {fwrite($fh, str_pad($quer2[DCNO3],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO4]>0) {fwrite($fh, str_pad($quer2[DCNO4],6, " ", STR_PAD_LEFT));} 
fwrite($fh, str_pad($dchd2['PO_No'],13, " ", STR_PAD_LEFT)); 
$stringData = "\n"; 
fwrite($fh, $stringData); 

if ($quer2[DCNO5]>0) {fwrite($fh, str_pad($quer2[DCNO5],19, " ", STR_PAD_LEFT));} if ($quer2[DCNO6]>0) {fwrite($fh, str_pad($quer2[DCNO6],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO7]>0) {fwrite($fh, str_pad($quer2[DCNO7],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO8]>0) {fwrite($fh, str_pad($quer2[DCNO8],6, " ", STR_PAD_LEFT));} 
fwrite($fh, str_pad($dchd2['Vehicle_no'],20, " ", STR_PAD_LEFT)); 
$stringData = "\n"; 
fwrite($fh, $stringData); 

fclose($fh); 

列内の1つの値が0の場合、スペースがあるため、私のIF条件で削除される場合は、そのような中状況、どのように私はスペースを計算し、それらの余分なスペースを与えるのですか?

テキストファイルの出力値のいずれかが、私のIF条件に0であれば:

   450 90900   112 
       90900 45875 24565 15484   KA01 23232 
+0

[これを試す] [1]
str_pad(「」、20)のようなもの [1]:http://stackoverflow.com/questions/10460298/how-to-write-fixed-width-text-file-with-php-and-mysql-data?answertab=active#タブトップ – jayanthan

答えて

0

利用タブ( "\ tを")停止します。これは、異なる行の各項目が同じ列で始まることを保証します。

これは、アイテムが2文字分長く、4スペースタブを埋めることができない場合、2つの空白が追加されることを意味します。

注意:別のエディタではタブの概念が異なりますが、通常はタブの代わりにスペースが挿入されます。

編集:実際にはもっと簡単な解決策は、else節を持ち、str_pad( ""、20);と書くことです。

+0

まあ、同じ問題がありますが、8の倍数でしかありません。 –

+0

あなたは正しいです、彼はすべてのコード実行パスでそれを一貫して使用していないので、問題です。 –

+0

@LukaRamishvili elseオプションはベットオプションです。それはうまく動作します。どうもありがとうございます。 – user1114409

0

あなたのコードは非常に忙しく、「0」を1か所で処理できる機能を使用してコードを集中管理してみてください。 。また、正常に動作しますが、また、リンクを試してみてください;下記(このコードはテストされていない、しかし、あなたは右のアイデアを与える必要があり

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 

function writepad($str,$pad) 
{ 
    global $fh; 
    if($str==0) $str=" "; //handle the case where str is 0, replace it with a space 
    fwrite($fh,str_pad($str,$pad,STR_PAD_LEFT)); 
} 
writepad($quer2[DCNO1],19); 
writepad($quer2[DCNO2],6); 
writepad($quer2[DCNO3],6); 
writepad($quer2[DCNO4],6); 
writepad($quer2['PO_No'],13); 

fwrite($fh, "\n"); 

writepad($quer2[DCNO5],19); 
writepad($quer2[DCNO6],6); 
writepad($quer2[DCNO7],6); 
writepad($quer2[DCNO8],6); 
writepad($quer2['Vehicle_no'],20); 

fwrite($fh, "\n"); 

fclose($fh); 
関連する問題