先日より質問に対しコメントありがとうございます。
教えていただいた内容と自分でやった結果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>
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が作成されている。
どうしたらファイルをローカル側に作成できるのでしょうか。
※できればサーバにファイルを残したくない。
よろしくお願いします。
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から返ってこ...
-
MySQLのUPDATE実行結果を受け取...
-
縦に長い<table>でなく横に長い...
-
PHPからMySQL・異なるDBにコピー
-
MySQLのデータを使ってプルダウ...
-
PHP + MySQLを使用して詳細画面...
-
php テーブルを作れない
-
VBAをつかってクエリの情報を抽...
-
エラー3011
-
MySQLのINSERT時にたまに重複に...
-
テキストボックスに入れた内容...
-
エクセルVBAについて
-
エクセルVBAのデータベース接続...
-
外部結合で参照列が複数あるSQL
-
PHP 勤務時間の合計を出したい
-
テーブル内の文字によりログイ...
-
phpのif文について
-
アカウント検索(データベース...
-
データをDBからひっぱってき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql_fetch_objectのエラー
-
XAMPPで画面が真っ白になります。
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHP+mysqlでSQL文に文字数制限...
-
stringaddslashes 半角¥が消える
-
phpのエラーについてです
-
PHPで絞り込み検索結果の件数を...
-
PHPエラーが出て困ってます
-
PDOを使いたい
-
CSVをダウンロードさせた際、CS...
-
mysql_query等でレコード数を変...
-
Resource id #3 をフィールドの...
-
ボタンのonclick時における関数...
-
XAMMPが起動しません。
-
SQL文2つ実行
-
PHPのSQLインジェクションはspr...
-
SQLの結果が返ってこない
-
MySQLのデータを使ってプルダウ...
-
会員登録したらメールが送られ...
おすすめ情報