[PHP-users 19966]Re: テーブルのデータをEXCELに、コピーしたい

zai zai91210 @ sky.zero.ad.jp
2004年 1月 22日 (木) 00:00:12 JST


zaiです、毎度。

 Setoさん、kohei-wさん、渡辺(雄)@NTT-ITさん、ありがとうございます。


Setoさん:
>>  while ($myrow=mysql_fetch_array($result, MYSQL_ASSOC)) {}//この部分

> だいたい この処理は何もしてないですよね w

 はい。削除いたします

> ということであればREQUEST METHODによって処理を振り分けて
> ブラウザからの変数の妥当検査をして 妥当である場合のみ
> 2の処理をさせればいいと思います。

> ただしその場合も
> 前回正常に処理されたことによりファイルが存在しますから
> その辺の注意が必要になりますね。
>  前回のファイルが存在したら削除するロジックを組む

 この方法で、致します。

>  毎回異なるファイル名で作成するようにロジックを組む

>  上書き処理が可能な方法でロジックを組む(kohei-wさんの方法も一つ)
。


kohei-wさん:
> Satoさんの仰る通り、
> 「PHP・で・ CSVに出力させることもできますよ」
> と、言うことです。
> (ちょうど、私のときもSatoさんがレスくれていたんですね。
> 偶然ながらお世話になっております。)
> 
> この時点でずれていたなら、すいません。

> [CSVをダウンロードする]ボタンを配置したページを作って、
> サンプルスクリプトのページにアクセスするようにすると、
> ダウンロードできますよね。
> 私も、サンプルソースの
> 
> //SQL文 tab1表からnumber列の値の昇順にソートした全行を取り出す
> $sql = "select * from table_name order by number1";
> 
> の部分を書き換えるだけで、●月●日〜●月●日までのデータ抽出&CSVダウンロー
> ドを
> 実現しています。
> ([CSVをダウンロードする]ボタンを配置したページに月と日のリストを用意し
> て。)

> 参考になれば、うれしいのですが。
> 失礼します。
> Kohei-w

 ありがとうございます、お蔭様で、以下のものでtam.csvが、出力出来ました。

<?php
function sakusei($nday_f, $nday_e){
----追加部分----
  if (file_exists('c:\temp2\tam.csv')) {
    unlink('c:\temp2\tam.csv');
  }
----------------
  $svname = "localhost";
  $dbname = "db";
  $tbname = "tam";
  $usname = "root";
  $psname = "****";
  $mycon = mysql_connect($svname, $usname, $psname) or die("接続エラー");
  mysql_select_db($dbname) or die("接続エラー");

  $sql="SELECT * FROM $tbname WHERE nyuinday between '$nday_f' and '$nday_e' INTO OUTFILE
'c:/temp2/tam.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'";

  $result = mysql_query($sql);
----削除部分----
//  while ($myrow=mysql_fetch_array($result, MYSQL_ASSOC)) {}
------------
  mysql_close($mycon);
  return;
}
?>
<FORM method="post" action="<?php echo $PHP_SELF ?>">
期間開始日<input type="text" name="nday_f">
期間終了日<input type="text" name="nday_e">
<?php sakusei($nday_f, $nday_e); ?><p>
<input type="submit" value="ファイル出力">
</FORM>

また、[PHP-users 19949]の近藤さん、
>>         SELECT * FROM tam 
>>         WHERE nyuinday between '2000-01-01' and '2004-12-31' 
>>        INTO OUTFILE './db/temp/tam.csv' 
>>         FIELDS TERMINATED BY ',' 
>>         LINES TERMINATED BY '\r\n';
>
> ./db/tmp/tam.csv
> これをフルパスで書くとどうですか?

 うまくいきました。以前できなかったのは、
SQLとPHPで、パスの書き方の違いに、気づかなかったためでした。(ペコ
)ありがとうございました。


渡辺(雄)@NTT-IT:
> 
> >3.まだ、よく理解できませんので、先ず、tam.csvに出力することを目指して
> >おります。最終目標は、既存ファイルである tam.xlsに、出力して、その中のマ
> >クロを実行したいのです。既存ファイルtam.xlsに、レコードのみ新規出力する
> >方法。
> 
> CSV-Excel Converter
> って言うのがありますが、どうでしょう?

 早速downloadしてみます。また、一歩先に進めそうです、ありがとうございま
す。




PHP-users メーリングリストの案内