皆様 いつも大変お世話になっております。
こちらの記事 https://blog.supersonico.info/?p=869
を参考にPHPでのCSVデータのダウンロードに挑戦中です。
適用方法が分からなくてお問い合わせさせて頂きました。

こちらの起動を果たすため、当方はHTML兼PHPのWebページに INPUT要素(SUBMITボタン)を配置して実行するようにしてみました。
すると、CSVファイルは確かに提供されるのですが、以下のコードがそのまま収まって提供されてしまいます。(DOCTYPE htmlから/htmlまで)

===質問===
WebページのINPUT要素(SUBMITボタン)の押下から この機能を正常に機能させるには
本来どういった適用を行うべきなのでしょうか?
初歩的なことと思いますが よろしくお願い致します。

====追記=====
実は本件が未だ解決していません...というのもCSVデータ云々以前の話で悩んでいて。
cubickさんyyzさんのご見解から、CSV出力指示の画面とCSVデータを提供するPHPを別にしようと考え始めました。
CSV出力指示の画面は、利用者が任意に指定する内容(パラメータ)をTableへ表示するためのsubmitボタンを既に有しており、この隣にCSVデータを出力するためのsubmitボタンを追加で配置しました。

一フォーム内で2つ目のsubmitボタンを配置してしまった為、CSVデータ用途のsubmitボタンを押下しても
Table表示用途のsubmitが押下された際同様 Tableが表示されてしまう事態が起こってしまっています。
かといって、一Webページ内に別フォーム要素を設けて、こちらにCSVデータ出力用のsubmitボタンを格納してしまうと利用者が任意に指定する内容(パラメータ)が元フォーム側に配置しているため利用できない...また全く同じDBへのアクセス・SELECT発行なので、Table表示内容のデータ取得部分までは、既存のPHPロジックを活用したい、という点で思い悩んいます。

指示画面のPHPとは別のPHPで CSVデータの提供を達成する、の解決策で
指示画面側にユーザ指定値が入力されるケースではどういった対応手順を検討すべきなのでしょうか?
データセット(配列?)の取得までは指示画面側のロジックを流用したい、というのはやはり怠惰な考え方でしょうか
想像以上に初心者ですみません

====更に追記====
CSV出力のために別PHPを動作させる方法が分からなく 現在も試行錯誤中です...。以下に示したコードでは『CSVファイルにデータ以外のHTMLが現れている状況です』。

EXECとやらを利用するのでしょうか??上部の$stmt->execute();の結果を別PHPで利用するようなことを達成したいのですが...。試しにheader関数部分のみを別PHPに記載してこのPHPをEXECで呼び出すようにしてみたら、当該phpがエディタとしてあがってくるだけでした。
またcubickさんのご見解で「HTML中にPHPを埋め込んで」との記載がありましたので、/htmlの下でPHPを再開させ header関数部分のみを記載するようにしてみましたが、状況は変わらず『出力されるCSVファイルにデータ以外のHTMLが現れていしまう状況でした』。
CSV出力の実行指示画面はTableを生成して表示するPHPも兼ねているので、現在のところHTMLの中でTeble用のDB抽出も行ってしまっている状況です。
考え方を改めるべきか、ただ単に別PHPの起動方法を理解すべきなのか、ちょっと分からなくなってしまいました。
どうすれば、CSVにデータのみを出力できるのでしょうか?

$stmt->execute();       //★流用したい

//★テーブルのページインデックス押下か、検索ボタン(submit)押下
if (!isset($_POST["extbtn"]) || $_POST["extbtn"] != "CSV") {
    $recset = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $recCount = count($recset);
//★CSVボタン(submit)押下
} else {                    

    $file_path = "sample.csv";
    $export_csv_title = ["申請№", "№", "種別", "受領書確認", "営業所名", "担当者名", "受注先名称", 
    "施設名称", "出庫日", "品名CD", "品名名称", "容量", "ロット№", "数量", "単価", "金額", "経費負担部所", 
    "受付予定者", "受付結果", "受付実施者", "受付実施日", "承認予定者", "承認結果", "承認実施者", 
    "承認実施日", "更新日", "社内備考"];

    foreach($export_csv_title as $key => $val) {
        $export_header[] = mb_convert_encoding($val, 'SJIS-win', 'UTF-8');
    }

    if (touch($file_path)){
        $file = new SplFileObject($file_path, "w");

        $file->fputcsv($export_header);

        while($row_export = $stmt->fetch(PDO::FETCH_ASSOC)){
            $export_arr = "";

            foreach( $row_export as $key => $val ){
                $export_arr[] = mb_convert_encoding($val, 'SJIS-win', 'UTF-8');
            }
                                                $file->fputcsv($export_arr);
        }

        $dbh = null;

        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=temporary.csv'); 
        header('Content-Transfer-Encoding: binary');
        header('Content-Length: ' . filesize($file_path));
        readfile($file_path);
    }
    exit;
//goto lb_finish;
}
//****以降 テーブル表示・ページインデックス生成のコーディング

画像の説明をここに入力