前提・実現したいこと
現在、以下のような2つのPHPファイルを作っており、問題なく動作しています。
・index.php:input項目とcsv出力ボタンがあり、formのアクション先にdownload.phpを設定。
・download.php:index.phpから受け取った値でDBを抽出し、該当したデータをcsvに出力してダウンロード。
■実現したいこと
download.phpでDBからの検索結果が0件だった場合は、header( "Location: ./index.php" );でリダイレクトし元の画面に戻っているが、その際に「対象データは0件でした」のメッセージを表示させたい。
該当のソースコード
php
1 2<?php 3$file_name = date("YmdHis").".csv"; 4header("Content-Type: application/octet-stream"); 5header("Content-Disposition: attachment; filename={$file_name}"); 6header("Content-Transfer-Encoding: binary"); 7 8$results = SQLを記述している部分; 9 10if( $results ){ 11 $rows[] = csvに出力する内容; 12 $fp = fopen('php://output', 'w'); 13 stream_filter_append($fp, 'convert.iconv.UTF-8/CP932//TRANSLIT', STREAM_FILTER_WRITE); 14 foreach ( $rows as $row ) { 15 $row = array_map( function( $value ){ return "\"{$value}\"";}, $row ); 16 $row = implode( ',', $row ); 17 $csv .= $row . "\r\n"; 18 } 19 fwrite( $fp, $csv ); 20 fclose( $fp ); 21 22// DBでの検索結果が0件の場合 23}else{ 24 header( "Location: ./index.php" ); 25} 26return;
試したこと
リダイレクトの際に末尾にパラメータを付けることでエラーメッセージは表示できたのですが、元の画面のURLが変わってしまうので別の方法を取りたいです。
header( "Location: ./index.php?err_cd=1" );
PHP初心者なので、やり方自体に問題があるかもしれませんが、何かヒントをいただけるとありがたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/12 23:05