![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
先日より質問に対しコメントありがとうございます。
教えていただいた内容と自分でやった結果3つのSQLでデータを出力し出力順を揃えた方法で表ができました。
これをCSV形式で出力したいのですがこのまま出力できるのでしょうか?それとも別途方法をとる必要があるのでしょうか。
自分の中で今ひとつまとまらないので改めて質問させていただきます。
ソースへの指摘併せコメントよろしくお願いします。
※現ソース
<HTML>
<BODY>
<?PHP
//DB接続部省略
$sql="SELECT I.ITEM_ID,I.ITEM_NAME FROM ITEMS AS I,LIST AS L・・・(略)";
$sql2="SELECT A.SHOP_ID,A.SHOP_NAME,A.ITEM_NAME,
IF(L.ITEM_ID=A.ITEM_ID,'○','') FROM・・・(略)";
$sql3="SELECT S.SHOP_ID,S.SHOP_NAME FROM SHOP AS S ・・・(略)";
$rs=mysql_query($sql,$db);
$rs2=mysql_query($sql2,$db);
$rs3=mysql_query($sql3,$db);
$line=mysql_num_rows($rs);
$line2=mysql_num_rows($rs2);
$line3=mysql_num_rows($rs3);
print("<TABLE border=1>");
print("<TR>");
print("<TD>店舗名</TD>");
for($i=0;$i<$line;$i++)
{
$row=mysql_fetch_row($rs);
print("<TD>".$row[1]."</TD>");
}
print("</TR>");
print("<TR>");
for($i=0;$i<$line3;$i++)
{
$row3=mysql_fetch_row($rs3);
print("<TD>".$row3[2]."</TD>");
for($j=0;$j<$line;$j++)
{
$row2=mysql_fetch_row($rs2);
if($row2[3] == "")
{
print("<TD width=25> </TD>");
}
else
{
print("<TD width=25>".$row2[3]."</TD>");
}
}
print("</TR>");
}
print("</TABLE>");
mysql_free_result($rs);
mysql_free_result($rs2);
mysql_free_result($rs3);
mysql_close($db);
?>
</BODY>
</HTNL>
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
下記URLにマニュアルがありますが、PHPにはfputcsvという便利な関数があります。
文字通りCSV形式で配列を出力してくれます。PHPのバージョンにもよりますので、まずは下記URL内のサンプルが動くかどうか試してはいかがでしょうか。
それができればこのような感じでしょうか、(試したコードではないので、間違っていたらすみません。)
$fp = fopen('file.csv', 'w');
foreach (mysql_fetch_row($rs) as $item) {
fputcsv($fp, $item);
}
fclose($fp);
のようにすれば、$itemをaaa,vvv,fgfgg,ghhh\r\nのように書き出してくれるようです。
参考URL:http://php.plus-server.net/function.fputcsv.html …
この回答への補足
ありがとうございます。
PHPが5.1.4、MySQLが5.0.21です。
PHPのバージョンがどうかが原因かわからないのですが、
教えていただいたページの例のソースだけをファイルに
書いてPHPファイルに保存し、IEで呼び出しましたが動きませんでした。
テスト方法が誤っているのか使えないのかどちらでしょうか?
補足後の経過ですが、サンプルは以下のソースで動きましたが
数点不明な動きがあります。
※ソース
<?PHP
Header("Content-Disposition: attachment");
Header("Content-Type: application/octet-stream; filename=test.csv");
$list = array ('aaa,bbb,ccc,dddd','123,456,789','"aaa","bbb"');
$fp = fopen('test.csv', 'w');
foreach ($list as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
?>
この状態でPHPから呼び出すと、
1.開く/保存のポップに表示されるファイル名がソースのPHPファイル名になっている。(例えばdownlord.php)
2.上記で開く/保存すると、空のようなファイルが開く。
また、開いたファイルのファイル名が「download[1].php」のようになる。
3.サーバ側にはtest.csvが作成されている。
どうしたらファイルをローカル側に作成できるのでしょうか。
※できればサーバにファイルを残したくない。
よろしくお願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?5a7ff87)
No.2
- 回答日時:
動作しないとのことですが、エラーメッセージが出たのでしょうか。
$fp = fopen('file.csv', 'w');
とありますので、このスクリプトを実行した同じフォルダ(ディレクトリ)にファイルを保存します。
ttp://localhost/test/testcsv.php を実行した場合
ttp://localhost/test/file.csv というファイルが生成されるということになります。
Linux/Unixの場合は、ディレクトリに書き込み権限がないと書き込みができません。
この回答への補足
ありがとうございます。
機能はしたのですが、 #1 のお礼に書いているような問題が発生しています。
ちなみにOSはWindowsです。
また、不安な点ですが、CSVの場合HTMLのTableのように
何列目から出力というような事ができるのか・・・。
ご存知でしたら併せてご意見よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysql_connect関数の使い方
-
テーブルのレコード数を取得し...
-
phpのエラーについてです
-
MySQLに登録したデータをPHPで...
-
PHP/MySQL SQLエラーについて。
-
SQL文2つ実行
-
データベースから多次元連想配...
-
PHP と Mysql の連携時に発生す...
-
"と'の使い方を教えていただけ...
-
変数同士の引き算が出来ない
-
PHPの簡易データ検索プログラム...
-
INSERT,DELETEを同時に
-
phpでmysqlを使ってデータベー...
-
エラー3011
-
実行時エラー3131 FROM 句の構...
-
JAVA SQLServerException 列名 ...
-
MySQLでデータベースにデータin...
-
phpで複数の検索語を検索対象に...
-
csvをDBへ読み込んだら、NULLが...
-
テキストボックスに入れた内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
SQL文2つ実行
-
phpのエラーについてです
-
stringaddslashes 半角¥が消える
-
mysql_fetch_objectのエラー
-
XAMPPで画面が真っ白になります。
-
XAMMPが起動しません。
-
縦に長い<table>でなく横に長い...
-
PHP+mysqlでSQL文に文字数制限...
-
会員登録したらメールが送られ...
-
Resource id #3 をフィールドの...
-
MySQLのデータを使ってプルダウ...
-
PHPで絞り込み検索結果の件数を...
-
MySQLのUPDATE実行結果を受け取...
-
mysql_query等でレコード数を変...
-
住所録を作りたい
-
DB(MySQL)から複数行のデータを...
-
CSVをダウンロードさせた際、CS...
-
SQLの結果が返ってこない
おすすめ情報