hamada
bungu****@leo*****
2002年 12月 19日 (木) 14:39:39 JST
こんにちわ。 オンラインのphpマニュアルとか読んでみたところ、 「どうも、phpの条件分岐ってのはif(式)の下にやりたいことを書くだけでいい みたい」 ということで、初めてif〜elseif〜elseを使ってみました。 生成される一覧表は 「メーカー」「品名」「品番」「価格」「カテゴリー」 形式で、条件によって「品名→該当商品紹介ページ」「カテゴリー→該当カテゴ リー商品一覧ページ」へのリンクを張ります。 分岐する条件は、 categoriesテーブルのstatusが0> カテゴリーがアクティブじゃないので、カテゴリー商品一覧に対するリンクも商 品紹介に対するリンクも生成しない productsテーブルのproducts_statusが0> カテゴリーはアクティブだが商品がアクティブではないので、カテゴリー商品一 覧へのリンクは生成するが商品紹介へのリンクは生成しない それ以外> カテゴリー商品一覧へのリンクも商品紹介へのリンクも生成する 以上3パターン。 ・/catalog(default.phpと同じトコ)に設置 ・スクリプトの文字コードがeuc ・「サーチエンジン対策のURLを使用(開発中)」がTrue 動作環境として上の条件を要求します(必須) これ以外の環境で動作させられ る場合は改造をお願いします。出力する一覧表のデザインも非常にダサいんで、 やっぱり改造して使われる方がいいと思います。 (ちょっと直しましたが、それでも人間が読むにはちとツライ感じです) 一覧表の並び順は取り敢えず > ORDER BY m.manufacturers_name , c.categories_name , p.products_model メーカー名→カテゴリー名→型番としていますが、上記部分を書き換えることで どうにでも変わります。 オプション値の組み込みは当方の手に負えませんでした。説明文の組み込みは、 ファイルサイズの肥大化を嫌って行なっていません(代わりにリンクを張るので、 クローラーがリンクを追えば説明も読まれます) なお、このスクリプトは基本的にlist.php、もしくはlist.phtmlですが、 > AddType application/x-httpd-php .php .phtml .html という設定が可能な環境の方でしたら、そのままlist.htmlとして動作させるこ とが可能です。list.htmlとして動作させると 「出力から動的なコンテンツであるとは識別出来ない」 ハズなので、動的コンテンツを好まないサーチエンジン/クローラー対策として かなり有効であろうと思います。 http://lists.sourceforge.jp/pipermail/tep-j-general/2002-December/000311.html このスクリプトをTEPにシームレスに組み込むには↑こちらの田村さんの文書を ご参照ください。 ただし、TEPにシームレスに組み込んだ場合tep_href_linkでのリンクとなる→ク ローラーへのリンク生成時にセッションIDが付く→そもそもの問題である 「TEPの中身が検索エンジンに拾ってもらえない」 に引っかかるようになると思われますんで、検索エンジン対策としての意義は低 くなってしまうと思われます。 検索エンジン対策としては ・なるべく高位のhtmlから ・<a href="catalog/list.html">全商品一覧</a>のような単純リンクで ・出来るだけ沢山リンクを張る ことが有効かと思いますが、以上はまったく検証してませんので信憑性はほとん どありません。というか、どなたか当方に結果を教えてください。 当方のような本当の素人がこのような場所に拙作を出して良いものかどうか今ひ とつ自信が無いのですが、オンライン販売において検索エンジン対策はかなり大 きな要素を占めると思われますので、恥を忍んで投稿させて頂きます。 どなたかが、このソースをたたき台に“もっとまともな”検索エンジン対策を出 して下さることを期待して。 (複数のループをネストさせ、カテゴリーとかメーカーごとの一覧表を作れない ものかと悪戦苦闘したあげく、すっかり断念しました。<title>タグにメーカー 名とかカテゴリー名とか挟みたかったのですが…。とほほ。) はまだ list.php ---------- <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html dir="LTR" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>全商品一覧</title> </head> <body> <A href="default.php">ショップに戻る</A><br><br> <?php require ('includes/configure.php'); $db = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD); mysql_select_db(DB_DATABASE,$db); $result = mysql_query("SELECT m.manufacturers_name, p.products_id, d.products_name, p.products_model, p.products_price, t.categories_id, c.categories_name, p.products_status, k.status FROM manufacturers m, products p, products_description d, products_to_categories t, categories_description c, categories k WHERE p.products_id=d.products_id and p.manufacturers_id=m.manufacturers_id and p.products_id=t.products_id and t.categories_id=c.categories_id and t.categories_id=k.categories_id ORDER BY m.manufacturers_name , c.categories_name , p.products_model",$db); echo "<table bgcolor=\"#fafaff\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\" bordercolor=\"#cccccc\">\n"; echo "<tr bgcolor=\"#eeeeee\"><td>メーカー</td><td>品名</td><td>品番</td><td align=\"right\">価格(円)</td><td>カテゴリー</td></tr>\n"; while ($myrow = mysql_fetch_row($result)) { if ($myrow[8] == 0) printf("<tr><td>%s</td><td>%s</td><td>%s</td><td align=\"right\">%s</td><td>%s</td></tr>\n", $myrow[0], $myrow[2], $myrow[3], $myrow[4], $myrow[6]); elseif ($myrow[7] == 0) printf("<tr><td>%s</td><td>%s</td><td>%s</td><td align=\"right\">%s</td><td><a href=\"default.php/cPath/%s\">%s</a></td></tr>\n", $myrow[0], $myrow[2], $myrow[3], $myrow[4], $myrow[5], $myrow[6]); else printf("<tr><td>%s</td><td><a href=\"product_info.php/products_id/%s\">%s</a></td><td>%s</td><td align=\"right\">%s</td><td><a href=\"default.php/cPath/%s\">%s</a></td></tr>\n", $myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[4], $myrow[5], $myrow[6]); } echo "</table>\n"; ?> <br><A href="default.php">ショップに戻る</A><br> </body> </html>