hamada
bungu****@leo*****
2006年 4月 8日 (土) 09:03:20 JST
こんにちわ。 On Fri, 07 Apr 2006 09:04:58 +0900 hamada <bungu****@leo*****> wrote: > てゆーか、PHPで作れば宜しいんじゃないでしょか?(^_^;) ということで、さくっと書いてみました。 高橋さんの書かれてたSQLでは「必須」とされてるURLや特価が取得出来ないよう に思いますし、制限なし→全商品が出力され上限の1,000個を越えちゃうように 思うんですが、これでホントに大丈夫だったんでしょか? 当方のも、言語や税率や端数処理や「検索エンジン対策のurl」を決め打ちした り、文字数制限を一部にしか実装してなかったり、かなり激しく手抜きです。あ くまでも叩き台と言う事で。 一応、自分では“なるべく台にし易いよう”書いてるつもりです。 たぶん、真っ先に問題になるのはYahoo!言うところの「パス」、osCの「カテゴ リ」の処理でしょう。 直接所属カテゴリを表示するのか、上位カテゴリを表示するのか。重複登録カテ ゴリをどう処理するか等でいろんなケースが考えられましたので、ココは全部端 折ってます。必要な場合は適当に実装してください。 はまだ osCの/catalogに設置されることを想定してます。 ----------------------------------------------- <?php require('includes/application_top.php'); //初期設定 $limit = 1000; $encode = "SJIS"; $file = "yahoolist.txt"; $separator = "\t"; $tax = 1.05; //クエリを投げる $sql = "select p.products_id, pd.products_name, IF(s.status, s.specials_new_products_price, p.products_price) as price, pd.products_description, p.products_image, p.products_model from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_id = pd.products_id and pd.language_id = '4' order by p.products_id desc limit " . $limit; $result = tep_db_query($sql); //ファイルの書込み処理 $fp=fopen($file, "w"); flock($fp,2); //データ見本部の書込み $str = "id" . $separator . "title" . $separator . "url" . $separator . "price" . $separator . "desc" . $separator . "image" . $separator . "no" . "\n"; fwrite($fp, $str); //メインループ while($data = tep_db_fetch_array($result)) { //1行分のデータを作成 $str = $data['products_id']; $str .= $separator; $str .= $data['products_name']; $str .= $separator; $str .= HTTP_SERVER . DIR_WS_CATALOG . FILENAME_PRODUCT_INFO . "/products_id/" . $data['products_id']; //「検索エンジン対策のurl」がfalseなら"?products_id=" $str .= $separator; $str .= round($data['price'] * $tax); //手抜き(^^;; $str .= $separator; $str .= mb_strimwidth(strip_tags(ereg_replace("\n|\r", "", $data['products_description'])), 0, 256); $str .= $separator; $str .= HTTP_SERVER . DIR_WS_CATALOG . DIR_WS_IMAGES . $data['products_image']; $str .= $separator; $str .= substr($data['products_model'], 0, 20); $str .= "\r\n"; //文字コードの変換 $str = mb_convert_encoding($str, $encode); //書込み fwrite($fp, $str); } //書込み終了処理 flock($fp,3); fclose($fp); ?>