質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

1934閲覧

PHPでcsv出力の際に全部出力されてしまうので指定した場所からcsv出力としたい

moitaro

総合スコア443

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/01/24 09:32

編集2022/01/12 10:55

お世話になっております。

csvで出力するファイルを作成しようとしております。
https://www.sejuku.net/blog/25648
を参考に

PHP

1echo 'なんか色々処理'; 2 3//https://www.sejuku.net/blog/25648を参考に以下は動作しました。 4$data = [ 5 ['ID', 'name', 'age'], 6 ['1', '田中', '30'], 7 ['2', '小林', '26'], 8 ['3', '江口', '32'] 9]; 10$fp = fopen('data/member.csv', 'w'); 11foreach ($data as $line) { 12 fputcsv($fp, $line); 13} 14fclose($fp); 15//って上だとdata/member.csvが出来るだけっぽいのでそれを下で出力 16 17//https://www.sejuku.net/blog/25648 18//の後半に書いてある事…… 19// ダウンロードするサーバのファイルパスもじバケる…… 20$filepath = 'data/member.csv'; 21 22// HTTPヘッダを設定 23header('Content-Type: application/octet-stream'); 24header('Content-Length: '.filesize($filepath)); 25header('Content-Disposition: attachment; filename=download.csv'); 26 27// ファイル出力 28readfile($filepath); 29

とするとcsvファイルには文字列

なんか色々処理

も入ってしまうのですが
標準出力全てcsvに出力ではなく
csvには指定した場所からもうひとつ指定した場所まで出力としたい場合
どのように表記するのが良いのかご助力頂けないでしょうか?

お忙しい所大変申し訳無いのですが上記お問い合わせ致します。

【追記】
PHPでサーバー側の
data/member.csv
をクライアント側のローカルにダウンロードさせたい
googleさんで調査するには何とググればよろしいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

普通考えれば

echo 'なんか色々処理';

の出力をやめればいいだけだと思いますが、意図がわかりません。
あえて手間を掛けてでもやりたいならバッファリングで処理します

PHP

1<?PHP 2ob_start(); 3echo 'なんか色々処理'; 4ob_end_clean(); 5echo '出力したい処理'; 6?>

※出力したくない箇所の上下をob_start()とob_end_clean()で囲む。

投稿2019/01/24 09:50

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moitaro

2019/01/25 00:50

yambejp様 コメントありがとうございます。 標準出力で複数あるテーブルのどのテーブルを出力するか選択するためhtml出力しているので ob_start();ob_end_clean();で括るのは難しいです…… サーバー側の data/member.csv をクライアント側のローカルにダウンロードさせたい のですがこの考えはよろしくないのでしょうか? お忙しい所大変申し訳無いのですが上記お問い合わせ致します。
yambejp

2019/01/25 01:22

ご自身で「echo 'なんか色々処理';」をしているのに 出力したくないという状況がわかりません。 「なんか色々処理」が意図しない出力をしてしまうだけなら ob_*処理はできますよね? ソースの先頭にob_start() httpヘッダ出力の直前にob_end_clean()するだけです。 それができないなら逆になにもきないと思うのですが?
退会済みユーザー

退会済みユーザー

2019/01/25 01:51

一本のphpで「CSVダウンロードさせる処理」と「選ばせてCSV出力させる処理」を兼ねていて、こっちやるときのあっちの処理が邪魔っていうだけなんだろうから、phpファイルを分けるとか出力制御をしっかり場合分けるしかないと思うんだが。
moitaro

2019/01/25 01:57

yambejp様 度々コメント本当にありがとうございます。 echo 'なんか色々処理'; で複数のファイルからどれを出力する?と文字列を表示しているので 出来ないかと思っていましたが もし入力が正常だったらob_start()とやってみます。 コメントありがとうございました。
moitaro

2019/01/25 01:57

m6u様 仰る通りですね…… ちょっとファイルを分ける方法も考えてみます。 コメントありがとうございました。
guest

0

header()使ってファイルのダウンロードをさせる処理を、
先にechoうんたらやったあとに書いてしまってはダメです。

別phpファイルを起こして

//https://www.sejuku.net/blog/25648 //の後半に書いてある事…… // ダウンロードするサーバのファイルパスもじバケる…… $filepath = 'data/member.csv'; // HTTPヘッダを設定 header('Content-Type: application/octet-stream'); header('Content-Length: '.filesize($filepath)); header('Content-Disposition: attachment; filename=download.csv'); // ファイル出力 readfile($filepath);

だけにして、
echoうんたらやってる方でhtmlやjs駆使して、
リンクをクリックするとダウンロードできるとか
あるいは出力が終わったらダウンロードするようリダイレクトをかけるとか
そういう仕掛けがいるんじゃないですかね。

テーブルを選ばせる処理がどういうものなのかがわからないので
ざっくりとした回答しかできませんけど。

投稿2019/01/25 02:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moitaro

2019/01/25 03:26

m6u様 ありがとうございますっ 仰る通り別ファイルにするのも手ですよね…… 時間が出来たら実装したいち思います。 本当にコメントありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問