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

zai zai91210 @ sky.zero.ad.jp
2004年 1月 19日 (月) 23:51:48 JST


zaiです、毎度。

 皆様、ご回答ありがとうございます。
Tadashi Jokagiさん、近藤さん、Setoさん、kohei-wさん、ありがとうございま
す。


 Tadashi Jokagiさん:
> 「CSV の生成処理をまったくしていないから出てこないだと思います.」

 はい、そうですね。


kohei-wさん: 参考にして、CSV生成処理を、追加しました。

<?php
function sakusei($nday_f, $nday_e){
  $svname = "test";
  $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 './db/temp/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>


 近藤さんの
> また、ご存知だと思いますが、既にtam.csvがあると
> 書き込みしてくれないようですので注意が必要です。

 原因は、これでした。私の場合は、書き込まないのではなく、上書きでした。


 上のスクリプトで調べましたところ、
(Setoさん:
> 直前または直後の$sqlの内容は確認されましたか?
> 内容をそのままコピーしてMySQLのコマンドで実行してみてどうでしょうか?
 お蔭様で、以下のテストが出来ました。
)

1.以下の警告を出しますが、

 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in C:xxxxxx.php on line nn

 サイズ0のtam.csvファイルが抽出されます。

2.その後で、入力ボックスの指定期間で抽出を再度実行します。しかし、先に
1で作成されたtam.csvが存在しますので、なぜかサイズ0(?)で、上書きしま
す。

3.結果、出力されなかったように、見える。


 1.の処理をせず(警告の非表示)、2.の処理だけをさせるには、どうすれ
ばよいのでしょうか。ご指導お願いいたします。

> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3




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