0

クエリを取得してcsvのようにエクスポートするのに役立つコードを作成していますが、すべて正常に機能しますが、/ query.phpにアクセスすると、クリックしたいときにcsvファイルがすぐにダウンロードされます。ダウンロードするために。

これを行う方法について教えてもらえますか?

これがコードです。

  $query = sprintf( 'SELECT * FROM hostess' );
  $result = mysql_query( $query, $conn ) or die( mysql_error( $conn ) );

  header( 'Content-Type: text/csv' );
  header( 'Content-Disposition: attachment;filename=export.csv' );

  $row = mysql_fetch_assoc( $result );
  if ( $row )
  {
    echocsv( array_keys( $row ) );
  }

  while ( $row )
  {
    echocsv( $row );
    $row = mysql_fetch_assoc( $result );
  }

  function echocsv( $fields )
  {
    $separator = '';
    foreach ( $fields as $field )
    {
      if ( preg_match( '/\\r|\\n|,|"/', $field ) )
      {
        $field = '"' . str_replace( '"', '""', $field ) . '"';
      }
      echo $separator . $field;
      $separator = ',';
    }
    echo "\r\n";
  }
?>
4

2 に答える 2

3

CSV 生成スクリプトへのリンクを含むページを作成します。

編集

クエリ文字列を使用してパラメーターを CSV スクリプトに渡す単純な HTML フォームを作成できます。例:

<form action="export.php" method="get" target="_blank">
    <input type="text" name="param1">
    <input type="text" name="param2">
    ...
    <input type="submit">
</form>

CSV エクスポート スクリプトを変更する必要はほとんどありません。クエリ文字列変数を処理してクエリを作成する必要があります。何かのようなもの:

$where = "1 = 1";
if ($param1 = filter_input(INPUT_GET, "param1"))
{
    $where .= " AND param1 = '" . mysql_real_escape_string($param1) . "'";
}
if ($param2 = filter_input(INPUT_GET, "param2"))
{
    $where .= " AND param2 = '" . mysql_real_escape_string($param2) . "'";
}
...
$query = sprintf( 'SELECT * FROM hostess WHERE $where' );

フォームを送信すると、クエリ文字列でパラメーターを渡すエクスポート ページが要求されます (例: export.php?param1=foo¶m2=bar)。スクリプトは CSV ファイルをディスパッチします。target=_blankCSV ファイルが新しいタブ/ウィンドウに読み込まれるように、属性がフォームに追加されます。

于 2012-06-19T09:02:19.400 に答える
2

リンクで別のページを設定します。そうすれば、どのページからでも CSV ファイルにリンクできます。

于 2012-06-19T09:02:14.283 に答える