• 締切済み

CSVダウンロードができません。

PHP4とMySQL4.1.21で開発しています。 CSVダウンロードをしようと下記のように記述しましたが動きません。どこがおかしいでしょうか?教えてください。 print mb_convert_encoding("メールアドレス\n","SJIS","EUC-JP"); while ($Row = mysql_fetch_array($result, MYSQL_ASSOC)) { $mail=mb_convert_encoding($Row['mail'],"SJIS","EUC-JP"); print $vmem_mail."\"\n"; }

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • f_motion
  • ベストアンサー率53% (7/13)
回答No.1

Mysql4.0.25で動かした物ですが、多分大丈夫だと思います。 ファイル名は、その日の日付になってますので、 後は、filenameを適当に変えて下さい。 header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename={$date}.csv"); $host = "xxx"; $db_id = "xxx"; $db_pass = "xxx"; $db_name = "xxx"; if (!$conn = mysql_connect($host,$db_id,$db_pass)){ die ("error"); } mysql_select_db($db_name,$conn); $rs = mysql_db_query($db_name,"SELECT * FROM form"); //csvファイル作成 for($i=0;$i<mysql_num_fields($rs);$i++){ print(mysql_field_name($rs,$i).","); } print("\n"); for($j=0;$j<mysql_num_rows($rs);$j++){ for($k=0;$k<mysql_num_fields($rs);$k++){ $str=mysql_result($rs,$j,$k); $str = mb_convert_encoding($str,"SJIS","EUC-JP"); print($str.","); } print("\n"); } mysql_close($db);

eccschool
質問者

補足

質問内容でどこが悪いか指摘いただけるとうれしいのですが。

関連するQ&A

  • 取得値の複数使用

    $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { $id = mb_convert_encoding($row['id'] , "SJIS", "EUC"); $name = mb_convert_encoding($row['name'], "SJIS", "EUC"); echo $id.":".$name; } 一度DBより取得した値 $resultの中身を複数回使用したいのですが・・・。 毎回、DBにアクセスしないとダメですか?

    • 締切済み
    • PHP
  • csvしたいのですが

    現在 tab形式で出力している以下のプログラムを CSV形式で出力できるようにしたいのですが、教えてください。 $filename = "history.tab"; header("Content-Type: text/tab-separated-values"); header("Content-Disposition: attachment; filename=$filename"); while($row = mysql_fetch_array($rs)) { $x =$row['sirial'] . "\t". $row['e_date'] . "\t". $row['regdate']."\r\n"; echo mb_convert_encoding($x, "SJIS","EUC-JP");}

    • ベストアンサー
    • PHP
  • CSVダウンロードがうまくいきません

    CSVダウンロードがうまくいきません。 次のように書いています。 OCIExecute($stmt); // データのFetch while (OCIFetch($stmt)) { $a = trim(OCIResult($stmt, "A")); $b = mb_convert_encoding(OCIResult($stmt, "B"), "SJIS", "EUC-JP"); $c = mb_convert_encoding(OCIResult($stmt, "C"), "SJIS", "EUC-JP"); $d = mb_convert_encoding(OCIResult($stmt, "D"), "SJIS", "EUC-JP"); $e = mb_convert_encoding(OCIResult($stmt, "E"), "SJIS", "EUC-JP"); $f = trim(OCIResult($stmt, "F")); $g = trim(OCIResult($stmt, "G")); ?> <?=$a ?>,"<?=$b ?>","<?=$c ?>","<?=$d ?>","<?=$e ?>",<?=$f ?>,<?=$g ?>, <? } エラーがたくさん出ています。教えてください! $a=number型 $b=verchar2型 $c=verchar2型 $d=verchar2型 $e=verchar2型 $f=number型 $g=date型

    • 締切済み
    • PHP
  • MySQL5のデータを、SQL文を使いcsv形式でダウンロードさせると文字化けします

    環境:Apache2&PHP5&MySQL5 MySQL5のデータを、SQL文を使いcsv形式でダウンロードさせると文字化けします。 -- <?php header("Content-Type: application/octet-stream"); ?> <?php header("Content-Disposition: attachment; filename=output.csv"); ?> <?php $srv = "localhost"; // サーバー名 $id = "root"; // ユーザーID $passwd = "******"; // パスワード $dbn = "sample"; // データベース名 $sql = "SELECT * FROM result"; // SQL文 $db=mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs=mysql_query($sql,$db); for($i=0; $i<mysql_num_fields($rs); $i++){ print(mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP").","); } print("\n"); for($j=0 ;$j<mysql_num_rows($rs); $j++) { for($k=0; $k<mysql_num_fields($rs); $k++) { $str=mysql_result($rs,$j,$k); print(mb_convert_encoding($str,"SJIS","EUC-JP").","); } print("\n"); } mysql_close($db); ---ダウンロードしたCSVは半角英数文字はそのまま出ますが、 日本語(全角)が、?に化けます。(下記の参照してください) 24 2 1 444 4444 2008/7/3 15 ? 1E+18 ??? ????? ?????? 25 2 1 444 kojiide 2008/7/3 30 ? 1E+18 ??? ????? ?????? 26 2 1 444 kojiide 2008/7/3 30 ? 1E+18 ??? ????? ?????? --- print(mb_convert_encoding($str,"SJIS","EUC-JP").","); でSJISになっていると思うのですが、どなたかアドバイスいただけると幸いです。

    • ベストアンサー
    • PHP
  • PHP+Postgres 「髙」が文字化け

    DB上に格納した文字列を取得し、PHPで出力すると、 「髙」(はしごだか)等、一部の文字が「□・」のような見た目に化けてしまいます。 環境は以下です。 Linux(CentOS 5) PHP 5.1.6 Apache 2.2.3 PostgreSQL 8.4.3 文字コードは以下です。 Postgres:EUC-JP PHPソース:EUC php.ini の[mbstring]はコメントのまま変更していません。 文字コードの変換を試してみたのですが、「髙」としては出力できませんでした。 Windows上では「CP51932」に変換すると正常に出力できましたが、Linux上ではやはり駄目でした。 mb_language("uni"); mb_internal_encoding("euc-jp"); mb_http_input("auto"); mb_http_output("euc-jp"); $str = "髙橋"; print(mb_convert_encoding($str, "EUCJP-win")); print(mb_convert_encoding($str, "EUCJP-win","EUC-JP")); print(mb_convert_encoding($str, "SJIS")); print(mb_convert_encoding($str, "SJIS","EUC-JP")); print(mb_convert_encoding($str, "SJIS-win")); print(mb_convert_encoding($str, "SJIS-win","EUC-JP")); print(mb_convert_encoding($str, "UTF-8")); print(mb_convert_encoding($str, "UTF-8","EUC-JP")); print(mb_convert_encoding($str, "EUC","SJIS")); print(mb_convert_encoding($str, "Unicode")); print(mb_convert_encoding($str, "Unicode","EUC-JP")); print(mb_convert_encoding($str, "UTF-8", "sjis-win")); print(mb_convert_encoding($str, "CP51932")); print(mb_convert_encoding($str, "MS932")); print(mb_convert_encoding($str, "MS932","EUC-JP")); print(mb_convert_encoding($str, "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win" ), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win","EUC-JP"), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "EUCJP-win","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "EUCJP-win","SJIS-win")); http://blog.livedoor.jp/loopus/archives/50160285.html 上記サイトによると、解決法は「EUC-JPで出力しないこと」という事でしたが、 文字コードを変換して出力できるような事を書いているサイトもあり、結論が出せずにいます。 ソースを書き換えるのは避けたいのですが、いい方法がありましたらご教示ください。

    • ベストアンサー
    • PHP
  • 文字設定に関して

    教えて下さい。 自身の環境の文字設定が把握できておらず申し訳ありません。 以下のようにSQLを投げ、取得したデータを表示させようとしていますが、取得はできている ものの $tmp_kenmei を表示させようとしたところ、表示されません。 echo で中身を確認した際には、問題なくセットされていました。 また、where句で条件を指定しない場合は、問題なく取得できます。 文字設定か何かの問題かと思われますが、、、 何が原因でしょうか、、、教えて下さい。 よろしくお願いします。 《内容》 $tmp_kenmei = mb_convert_encoding($tmp_kenmei,"UTF-8","SJIS"); $con = mysql_connect("localhost", "root", "999999"); //データベースへ接続する if (!$con) { die('接続できませんでした: ' . mysql_error()); } $sql = "select kenmei from tbl_AAA where kenmei like '%" . $tmp_kenmei . "%'"; if (!mysql_select_db('db', $con)) { echo 'Could not select database'; exit; } $result = mysql_query($sql,$con); mysql_query("set names sjis"); if (!$result) { echo "DB Error, could not query the database\n"; echo 'MySQL Error: ' . mysql_error(); exit; } $row = mysql_num_rows($result); $count = 1; for($i=0;$i<$row;$i++) { $array = mysql_fetch_array($result); //件名 $tmp_kenmei[$count] = mb_convert_encoding($array[0],"SJIS","UTF-8"); echo mb_convert_encoding($array[0],"SJIS","UTF-8"); $count++; }

    • ベストアンサー
    • PHP
  • mb_send_mailの2重投稿を防止したい

    初めて質問させていただきます。 動作環境はPHP4.3.0になります。 <? $to = "test@test.com"; $subject = "テスト"; $addheader = "From: $_POST[mail]\n"; $msg = "*************"; $to = mb_convert_encoding($to, "SJIS", "EUC-JP"); $subject = mb_convert_encoding($subject, "SJIS", "EUC-JP"); $msg = mb_convert_encoding($msg, "SJIS", "EUC-JP"); $addheader = mb_convert_encoding($addheader, "SJIS", "EUC-JP"); mb_language("Ja"); mb_internal_encoding("SJIS"); mb_send_mail($to, $subject, $msg, $addheader); setcookie("formdata", $posted , time()-1200); }; ?> 上記の用に記述をして、メールが届くのは確認をしたのですがなぜか9割位の確立でメールが二通届きます。 mb_send_mailの前後にecho分で文字を表示させたのですが、ループしている気配もありません。 どなたかこの現象を回避できる方法をお知りでしたらご教授下さい。 何卒、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPでjavascriptの2次元配列を宣言する

    はじめまして。 とっても困ってるので質問させてください。 「データベースからの取り出したデータをjavascriptで扱いたい」 下記のソースでjavascriptの2次元配列を宣言しているつもりなのですが、 データの取り出しが上手くいきません。。。 宣言自体ができてないのでしょうか??? PHPのソースを貼り付けます↓ echo "<script type=\"text/javascript\">"; echo "//<![CDATA["; echo "var SKind_name=new Array(".$temp.");"; for ($i=1;$i<=$cat_dtcnt;$i++) { $sql_scat_cnt = "SELECT COUNT(*) AS cnt FROM `map_subkind` WHERE kind_id = '".$i."'"; $res_scat_cnt = mysql_query($sql_scat_cnt) or die("データ抽出エラー"); $row_scat_cnt = mysql_fetch_array($res_scat_cnt, MYSQL_ASSOC); $scat_dtcnt = $row_scat_cnt["cnt"]; $temp = $scat_dtcnt+1; echo "SKind_name[".$i."]=new Array(".$temp.");"; echo "SKind_name[".$i."][0]=".$scat_dtcnt.";"; $sql_subcat= "SELECT * FROM `map_subkind` WHERE kind_id = '".$i."'"; $rst_subcat=mysql_query($sql_subcat) or die("データ抽出エラー"); $scatcnt = 1; while($row_scat=mysql_fetch_array($rst_subcat)) { echo "SKind_name[".$i."][".$scatcnt."] = \"".mb_convert_encoding($row_scat["skind_name"],"SJIS","EUC-JP")."\";"; $SKind_name_array[$i][$scatcnt] = mb_convert_encoding($row_scat["skind_name"],"SJIS","EUC-JP"); $scatcnt ++; } $scatcnt--; } echo "// --></script>";

  • Shift-JISからUTF-8への変換が出来ません

    初歩的な質問で申し訳ありませんが、大変困っております。ただいまimagettftext()を使って日本語主力したく悪戦苦闘しております。  ページ自体はShift-JISで制作していますのでimagettftext()で日本語を出力する場合はUTF-8へ変換して出力するところまでは知れべていて分かりました。しかしいざmb_convert_encoding()で変換しようとするとなぜかUTF-8へ変換されません。 $str = mb_convert_encoding($str,"UTF-8","SJIS"); print mb_detect_encoding($str);  結果→SJIS しかしこれがEUC-JPなら変換されます。 $str = mb_convert_encoding($str,"EUC-JP","SJIS"); print mb_detect_encoding($str);  結果→EUC-JP なぜなのか原因が分からなく困っております。 どなたかご教授願いませんでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • mysqlからmysqliへの変更点

    お世話になります。 PHPでmysqlのデータをhtmlで表示するソースを組んでいます。 初心者なもので、サンプルを見ながら組んでいるのですが、 そのサンプルがmysql_queryなどを使っていました。 しかし、今は推奨されず、mysqli_queryなどを使うとか。 そこで、単純にiを付け加えただけなのですが、そう簡単に 行きませんでした。 どの部分をどのように修正すればよいのかを教えてください。 ------------------------------------------------- <?php header("Content-Type:text/html;charset=SHIFT_JIS"); ?> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <?php $srv = "localhost"; // サーバー名 $id = "xxxxx"; // ユーザーID $passwd = "xxxxx"; // パスワード $dbn = "sample"; // データベース名 $sql = "SELECT * FROM sample1"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); $num = mysql_num_fields($rs); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE border='1'><TR>"); for($i=0; $i<$num; $i++) { print("<TH>".mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP")."</TH>"); } print("</TR>"); while($row = mysql_fetch_array($rs)) { print("<TR>"); for($j=0; $j<$num; $j++) { print("<TD>".mb_convert_encoding($row[$j],"SJIS","EUC-JP")."</TD>"); } print("</TR>"); } print("</TABLE>"); mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> </BODY> </HTML> ---------------------------------------------- 他サイト様からの引用ですが、何卒よろしくお願いいたします。

    • 締切済み
    • PHP