こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP CSV 出力

失礼します。
現在PHPで指定したパスに置いてあるCSVを出力したいのですが、
CSVは出力できているのですが、HTMLが先頭に入ってしまいます。
htmlファイルに設置したボタンに対して
phpファイルで処理をしています。

どこかおかしい部分があればご教授頂きたいです。

HTMLファイル
<?php $self = $_SERVER["SCRIPT_NAME"]; ?>
<form method='POST' action='<?php $self ?>'>
<input type='submit' value='CSV出力' name='get_csv'>
</form>

PHPファイル
function This_Month(){
$filepath = 'hoge.csv'; //ダウンロードしたいファイルパス
$filename = 'test.csv'; //ダウンロードした際のファイル名
if(!file_exists($filepath)){
die("Error:File(".$filepath.") does not exist");
}
//オープンできるか確認
if(!($fp = fopen($filepath,"r"))) {
die("Error:Cannot open the file(".$filepath.")");
}
fclose($fp);
//ファイルサイズの確認
if(($content_length = filesize($filepath)) == 0){
die("Error:File size is 0.(".$filepath.")");
}
//ファイルの処理方法
header('Content-Disposition: attachement; filename="'.$filename.'"');
//ファイルタイプ指定
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding:binary');
//ファイルサイズ
header('Content-Length: '.filesize($filepath));
mb_convert_encoding($filepath,'utf-8','shift-jis');
readfile($filepath);
exit();
}


//ボタンに合わせて条件を変えていく
if(isset($_POST["get_csv"])){
//ユーザーから来たデータをエスケープする
$csv_output = htmlspecialchars($_POST["get_csv"], ENT_QUOTES, "UTF-8");
switch ($csv_output) {
case "CSV出力": ”This_Month(); 
break;
default: echo "エラー"; exit;
}
}

投稿日時 - 2016-11-29 11:13:49

QNo.9261715

困ってます

質問者が選んだベストアンサー

<html>
<head>
<meta http-equiv="Conte・・・・・
~~~~
</head>
<body>
<?PHP
//ここにCSV吐き出すロジック
function This_Month(){
  ~~~~
?>

とかは流石にやってないですよね。

投稿日時 - 2016-11-29 12:23:01

補足

ご回答ありがとうございます。
はい、phpとhtmlは分けているのでそのようにはなってはいないです。
また、先ほど
<?php $self = $_SERVER["SCRIPT_NAME"]; ?>
<form method='POST' action='<?php $self ?>'>
<input type='submit' value='CSV出力' name='get_csv'>
</form>
のhtmlファイルの部分を
<form method='POST' action='upload-file.php'>
<input type='submit' value='CSV出力' name='get_csv'>
</form>
と直接action部分にphpファイルを指定しましたら、htmlの内容は吐かなく
なりました。

しかしA1列だけが文字化けを起こしている状態です。

投稿日時 - 2016-11-29 13:06:07

お礼

失礼しました。どうやら他に原因があったみたいです。失礼しました。

投稿日時 - 2016-12-12 16:04:44

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問