hamada
bungu****@leo*****
2005年 12月 15日 (木) 09:52:27 JST
こんにちわ。 On Wed, 14 Dec 2005 19:51:32 +0900 karu <karu****@ipc-t*****> wrote: > 失礼しました。他の商品は90000以下です。 ごめんなさい。これ当方の書き間違いなんですけど、たぶん「90000未満」が正 しいと思われます(^_^;) > を書き換えてしまえば良いのでしょうか? はい、そうです。で、 > 大変お恥ずかしいのですが、どこに書けばよいかわかりませんでした。 は、(既述のとおり)「その上」です。 > 大変お手数で申し訳ないのですが、どの部分をどのように書き換えればよいのか、 > お教えいただけないでしょうか? データベースアプリケーションにはセオリーがありまして、 ・データの取り出しはDBに任せる ・「データがある間」ループする 大体↑こんな風に書きます。 > $result = tep_db_query("投げるSQL"); > > while ($data = tep_db_fetch_array($result)) { > > 処理する内容 > > } osC風に書くと↑こんな感じ。データの条件判定とかは全部DBに任せちゃって、 プログラム側は 「$dataがfalseにならない限り」 (DBから返す行がなくなるとFALSEを返してきます) という単純な条件でループするだけ。 この辺は、当方がいちいち説明するよりも、適当なPHP+MySQLの解説本を1冊読 んで頂く方が早いと思いますが。 http://jp2.php.net/manual/ja/function.mysql-fetch-array.php ということで、先の当方の投稿では上記の「投げるSQL」を$sqlという変数にし て分離し、 「SQL中のデータ取り出し条件記述を状況に応じて変える」 ことで目的に沿おうとしてました。 > あと、さらに、わたしの説明不足で申し訳ないのですが、「products_model」が > 90000〜99999番となりますので、「products_model」で処理したいのですが、ど > のように書けばよろしいでしょうか? 「 and p.products_model not like '9%'」とかでいけませんかね? この手は、 下位品番が「00009」という書き方じゃないと使えませんが。 (products_modelにはインデックス張っとく事を強く推奨) > これでは駄目でしょうか。 考え方としては「駄目ではない」です。なんらかの目的(大体はDBの負荷軽減) でそういう書き方をする場合もあります。 ただ、「DBを使うアプリケーションのセオリー」からは外れてますし、文法も違っ てます。また現在のプログラム構造から外れますんで、例外処理等、あちこちに 手当てが要りそう。 > $HTTP_GET_VARS['products_model'] > に入る予定でした、、(^^; products_modelは引数に使われてないので、GET変数では(当然)取得出来ない と思います。products_idから自分で引くしかないかと。 > $product_info_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'"); > $product_info = tep_db_fetch_array($product_info_query); > $products_model = $product_info['products_model']; ↑何処からパクって来たか、モロバレ(^_^;) で、取得した$products_modelの0文字目が「9」かどうか > if ($products_model{0} == '9') { とかで判定し、DBに投げるSQLの抽出条件を変えれば宜しいかと。 はまだ