ECCUBEの管理画面にCSV出力が行える所を、カスタマイズしていると、ある事に気がつきました。
商品管理にて、商品情報をCSVで出力した時に、とある商品がCSVに出力されていない!
最初は、dtb_csvテーブルのSQLの記述がおかしいのかと思い、SQLを見直してみましたが、特に問題なし...
SQLにて取得できるデータにも問題なく取得出来ている。
ここで予想したのが、特殊文字等が入っているとfputcsvで書き出す事が出来なくなるのでは?と思い、テストで特殊文字を出力するPHPプログラムを作成し、実行してみても問題なし。
何が問題なのだ...と思い、細かーく見ていくと、下記プログラムがおかしい事がわかりました。
記載するのを忘れてましたが、バージョンは2.13.5です。
ファイル:data/class/helper/SC_Helper_CSV.php
/** * CSV 出力用のファイルポインタリソースを開く * * @return resource ファイルポインタリソース */ public static function &fopen_for_output_csv($filename = 'php://output') { $fp = fopen($filename, 'w'); stream_filter_append($fp, 'convert.iconv.utf-8/cp932'); stream_filter_append($fp, 'convert.eccube_lf2crlf'); return $fp; }
/** * CSV 出力用のファイルポインタリソースを開く * * @return resource ファイルポインタリソース */ public static function &fopen_for_output_csv($filename = 'php://output') { $fp = fopen($filename, 'w'); //stream_filter_append($fp, 'convert.iconv.utf-8/cp932'); // 「//TRANSLIT」を追加 stream_filter_append($fp, 'convert.iconv.utf-8/cp932//TRANSLIT'); stream_filter_append($fp, 'convert.eccube_lf2crlf'); return $fp; }
無料相談・お問い合わせ Web制作・システム開発に関する
ご相談はこちらよりご連絡ください。
お客様のビジネスの成長と成功を支えるパートナーとして、
どんなご相談でもお待ちしております。お気軽にお問い合わせください。