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

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

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

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

Q&A

1回答

3771閲覧

phpでcsvデータ出力(ダウンロード)

DaikiYamada

総合スコア11

PHP

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

0グッド

0クリップ

投稿2015/11/21 15:43

下記のsales.csvを読み込み、実行結果をブラウザに表示する。
ブラウザに表示させた実行結果をcsvファイルとして出力(ダウンロード)したいです。

ダウンロードはできるのですが、エディターに記述した下記のコードが全てcsvに書き込まれ
しかも文字化けしているようです。。。

原因が分からないので、どなたかお助けください〜。

php

1<?php 2 3$dataName = "sales.csv"; 4$rows= file($dataName, FILE_IGNORE_NEW_LINES); 5//var_dump($lines); 6 7$memberNum = 0; 8$memberNum = count($rows) - 1; 9$saleSum = 0; 10$avr = 0; 11//var_dump($memberNum); 12 13$record = array(); 14 15foreach ($rows as $row) { 16 $record = explode(",", $row); 17 $saleSum += $record[1]; 18} 19 20$avr = $saleSum / $memberNum; 21 22if (!empty($_POST['download'])) { 23 $fileName = "report.csv"; 24 $csv = ""; 25 $csv = "こんにちは"; 26 $fp = fopen($fileName, 'ab'); 27 flock($fp, LOCK_EX); 28 fputcsv($fp, $csv); 29 fclose($fp); 30 echo("社員数,売上合計,売上平均\n$memberNum,$saleSum,$avr"); 31 header('Content-Type: application/octet-stream'); 32 header('Content-Disposition: attachment; filename=' . $fileName); 33 echo mb_convert_encoding($csv,"SJIS","EUC-JP"); 34 exit; 35} 36 37// $filename = "report.csv"; 38// file_put_contents($filename, "社員数,売上合計,売上平均\n$memberNum,$saleSum,$avr"); 39 40 41?> 42 43<!DOCTYPE html> 44<html> 45<head> 46 <meta charset="utf-8"> 47 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 48 <title>CSVファイルの読み込み・出力</title> 49 <link rel="stylesheet" href=""> 50</head> 51<body> 52<table> 53 <tr> 54 <th>社員数:</th> 55 <td><?php echo $memberNum."<br>"; ?></td> 56 </tr> 57 58 <tr> 59 <th>売上合計:</th> 60 <td><?php echo $saleSum."<br>"; ?></td> 61 </tr> 62 63 <tr> 64 <th>売上平均:</th> 65 <td><?php echo $avr."<br>"; ?></td> 66 </tr> 67</table> 68<form method="post"> 69<input type="submit" name="download" value="CSVでダウンロードする"> 70</form> 71</body> 72</html>

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

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

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

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

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

guest

回答1

0

まずは文字化け以前に

php

1<?php 2//必ず記入する 3ini_set('display_errors', 1); 4error_reporting(E_ALL); 5 6$dataName = "sales.csv"; 7$rows= file($dataName, FILE_IGNORE_NEW_LINES); 8//var_dump($lines);

ここでは、SJISEUC-JP

php

1echo mb_convert_encoding($csv,"SJIS","EUC-JP"); 2 exit; 3} 4?>

ここでは UTF-8

html

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8">

いくら文字化けの問題とはいえ、文字コードが3つも登場するのはおかしいと思いませんかねえ…

投稿2015/11/21 15:59

編集2015/11/21 18:29
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問