1

チェックボックス要素の送信された値をチェックし、それらがチェックされている場合はそれらの値を出力する次のphpスクリプトがあります。

<?php
echo '<table class="features-table">';

echo "<tbody>";
for ($i=1;$i<=2284;$i+=1) {
  if($_POST[$i]) {
    echo"<tr>";
            echo "<td><a href=http://www.m-w.com/dictionary/" . $_POST[$i] . ">" . $_POST[$i].  "</a></td>";
    echo "</tr>";
  }
}

?>

このデータをユーザーに表示し、テキスト ファイルとしてダウンロードできるようにしたいと考えています。ダウンロードボタンの作り方を教えてください。その場合、別の php スクリプトが必要ですか?この php スクリプトに送信されたフォーム データを取得するにはどうすればよいですか?

Google検索から、以下のようなコードを使用する必要があることがわかりました

header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=list.txt");
header("Pragma: no-cache");
header("Expires: 0");
echo 'data1,data2,data3...';

しかし、現在のphpスクリプトと統合する方法がわかりません。

ありがとう

4

2 に答える 2

1

将来的に他の人を助けるかもしれないコードを投稿する

sudipによる回答の後、次の変更を行いました

<?php
$list = "Unknown words from GSL\n\n";
    echo '<table class="features-table">';
    echo "<tbody>";
    for ($i=1;$i<=2284;$i+=1) {
      if($_POST[$i]) {
        echo"<tr>";
                echo "<td><a href=http://www.m-w.com/dictionary/" . $_POST[$i] . ">" . $_POST[$i].  "</a></td>";
                $list = $list . $_POST[$i] . "\n";
        echo "</tr>";
      }
    }

echo'
   <form action="download.php" method="post">
   <input type="hidden" name="wordlist" value="'. $list . '">

   <center><input type="submit" name="submit_parse" style="margin-bottom: 20px; margin-top: 10px;width:200px; font-face: "Comic Sans MS"; font-size: larger; " value=" Download as a text file "> </center>
   </form>
';
?>

通常の HTML タグ、ファイル内の空白行、または PHP のいずれかによって、実際の出力が送信される前に header() を呼び出す必要があるため、別の php ファイルを作成する必要がありました。

download.php の内容

<?php
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=list.txt");
header("Pragma: no-cache");
header("Expires: 0");
echo $_POST["wordlist"] ;
?>
于 2012-04-09T05:33:17.780 に答える
1

その場でファイルを作成する必要はありません。

私は次の方法でそれを行います....

データを非表示フィールドとして使用できるようにし、フィールドをダウンロード ボタンとともにフォーム タグで囲みます。ユーザーがダウンロード ボタンをクリックすると、すべてのフォーム データがスクリプトで利用可能になります。その後、データに対して実行したい任意のアクションを実行できます。

于 2012-04-07T23:34:59.273 に答える