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

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

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

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

受付中

CSVボタン押下時のCSVの出力です。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

1回答

0リアクション

0クリップ

404閲覧

投稿2022/07/27 04:56

前提

DBから取得したデータを一覧画面に表示し、CSVボタン押下後、CSVデータがダウンロードする
という機能をPHPで作っています。

実現したいこと

CSVボタン押下後、CSVデータがダウンロードする

発生している問題・エラーメッセージ

・ループした結果、最期の1件しか出力しない
・ボタン押下時でなく、ロード時にCSV出力の処理が動く

該当のソースコード

<tn0010.php>

// CSV出力 $sqlC = ""; $sqlC .= " SELECT "; $sqlC .= " KANRINO,"; $sqlC .= " keiti.KEITAINM AS KEITAINM,"; $sqlC .=" YOUTO,"; $sqlC .=" tant.TANTNM AS TANTNM,"; $sqlC .=" MAKER,"; $sqlC .=" OS,"; $sqlC .=" IPADDRESS,"; $sqlC .=" CPUNM,"; $sqlC .=" DOMEIN,"; $sqlC .=" CPU,"; $sqlC .=" KOASU,"; $sqlC .=" MEMORI,"; $sqlC .=" DESK1,"; $sqlC .=" DESK2,"; $sqlC .=" DESK3,"; $sqlC .=" DESK4,"; $sqlC .=" DESK5,"; $sqlC .=" OSLICENCE,"; $sqlC .=" OFFICE,"; $sqlC .=" CASE WHEN KONYUYM IS NULL THEN '-' ELSE SUBSTR(TO_CHAR(KONYUYM,'000000'),1,5) || '/' || SUBSTR(TO_CHAR(KONYUYM,'000000'),6,2) END KONYUYM, "; $sqlC .=" CASE WHEN HAIKIYM IS NULL THEN '-' ELSE SUBSTR(TO_CHAR(HAIKIYM,'000000'),1,5) || '/' || SUBSTR(TO_CHAR(HAIKIYM,'000000'),6,2) END HAIKIYM, "; $sqlC .=" BIKO,"; $sqlC .=" KANRINO_OYA"; $sqlC .= " FROM "; $sqlC .= " public.M_TANMATU tanm "; $sqlC .= " LEFT JOIN "; $sqlC .= " public.M_TANT tant "; $sqlC .= " ON "; $sqlC .= " tanm.tantcd = tant.tantcd "; $sqlC .= " LEFT JOIN "; $sqlC .= " public.M_KEITAI keiti "; $sqlC .= " ON "; $sqlC .= " tanm.keitaikb = keiti.keitaikb "; $sqlC .= " ORDER BY" ; $sqlC .= " kanrino"; $resC = dbGetList($pdo_conn, $sqlC); $datalistC = dbGetList($pdo_conn, $sqlC); foreach($resC as $row) { $KANRINO[$count2] = $row['kanrino']; $KANRINO_OYA[$count2] = $row['kanrino_oya']; $IPADDRESS[$count2] = $row['ipaddress']; $KEITAINM[$count2] = $row['keitainm']; $YOUTO[$count2] = $row['youto']; $TANTNNM[$count2] = $row['tantnm']; $MAKER[$count2] = $row['maker']; $OS[$count2] = $row['os']; $CPUNM[$count2] = $row['cpunm']; $DOMEIN[$count2] = $row['domein']; $CPU[$count2] = $row['cpu']; $KOASU[$count2] = $row['koasu']; $MEMORI[$count2] = $row['memori']; $DESK1[$count2] = $row['desk1']; $DESK2[$count2] = $row['desk2']; $DESK3[$count2] = $row['desk3']; $DESK4[$count2] = $row['desk4']; $DESK5[$count2] = $row['desk5']; $OSLICENCE[$count2] = $row['oslicence']; $OFFICE[$count2] = $row['office']; $KONYUYM[$count2] = $row['konyuym']; $HAIKIYM[$count2] = $row['haikiym']; $BIKO[$count2] = $row['biko']; $W_CSV = array( "kanrino" => $KANRINO[$count2] ,"kanrino_oya" =>$KANRINO_OYA[$count2] ,"ipaddress" => $IPADDRESS[$count2] ,"keitainm" => $KEITAINM[$count2] ,"youto" => $YOUTO[$count2] ,"tantnm" =>$TANTNM[$count2] ,"mekar" => $MAKER[$count2] ,"OS" => $OS[$count2] ,"cpunm" => $CPUNM[$count2] ,"domein" => $DOMEIN[$count2] ,"CPU" => $CPU[$count2] ,"koasu" => $KOASU[$count2] ,"memori" => $MEMORI[$count2] ,"desk1" => $DESK1[$count2] ,"desk2" => $DESK2[$count2] ,"desk3" => $DESK3[$count2] ,"desk4" => $DESK4[$count2] ,"desk5" => $DESK5[$count2] ,"OSlicence" => $OSLICENCE[$count2] ,"Office" => $OFFICE[$count2] ,"konyuym" => $KONYUYM[$count2] ,"haikiym" => $HAIKIYM[$count2] ,"biko"=> $BIKO[$count2] ); $count2+=1; } function putCsv($data) { try { //CSV形式で情報をファイルに出力のための準備 $csvFileName = '/tmp/'. 'tanmatu.csv'; $res = fopen($csvFileName, "w"); if ($res === FALSE) { throw new Exception('ファイルの書き込みに失敗しました。'); } // 項目名先に出力 $header = ["kanrino", "kanrino_oya", "ipaddress", "keitainm","youto","tantnm","mekar","OS","cpunm","domein","CPU","koasu","memori", "desk1","desk2","desk3","desk4","desk5","OSlicence","Office","konyuym","haikiym","biko"]; fputcsv($res, $header); // ループしながら出力 foreach($data as $dataInfo) { // 文字コード変換。エクセルで開けるようにする mb_convert_variables('SJIS', 'SJIS', $dataInfo); // ファイルに書き出しをする fputcsv($res, (array)$dataInfo); } // ファイルを閉じる fclose($res); // ダウンロード開始 // ファイルタイプ(csv) header('Content-Type: application/octet-stream'); // ファイル名 header('Content-Disposition: attachment; filename=' . $csvFileName); // ファイルのサイズ ダウンロードの進捗状況が表示 header('Content-Length: ' . filesize($csvFileName)); header('Content-Transfer-Encoding: binary'); // ファイルを出力する readfile($csvFileName); } catch(Exception $e) { // 例外処理をここに書きます echo $e->getMessage(); } } putCsv($W_CSV);   $smarty->assign("W_KENSAKU", $W_KENSAKU); $smarty->assign("datalist", $datalist); $smarty->display("tn0010.tpl");

<tn0010.tpl>

<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="./style.css"> <TITLE>test</TITLE> 中略 <TD><INPUT type="button" name="sa" value="CSV出力"></TD> 中略 <FORM name="form2" action="tn0010.php" method="POST"> <INPUT type="hidden" name="W_CSV" value=""> </FORM> </BODY> </HTML>

試したこと

functionの処理を.tplで試して、<INPUT type="hidden" name="W_CSV" value="" Onclick = "function名"();>にするのを試しました。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/07/27 06:47

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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