0

1 年前に iPhone 壁紙ギャラリーの PHP スクリプトを購入しましたが、問題なく動作しています。私はあちこちで微調整をしながら、ゆっくりと PHP と MySQL を学んでいます。

カテゴリを表示するための URL は ですが、 SEO の理由www.example.com/index.php?catid=27から に変更したいと考えています。www.example.com/index.php?catid=apple.htaccess を使用して URL をさらに整理できることはわかっていますが、最初にこの単語スラッグを取得したいだけです。

これは、カテゴリ ページを生成すると思われるコード ( index.php内) です。

if (($_REQUEST['catid']) && ($_REQUEST['catid'] > 1)) {
        $catid = $_REQUEST['catid'];
        if (is_numeric($catid)) {
            $tempitemarray = $myitems->getItemsByCategory($catid);
            $catnav = "&catid=" . $catid;
            $tempcat = new Category();
            $tempcat->getCategory($catid);
            $maintitle = "<h1>" . $tempcat->getCategoryName() . " " . $itemplural . "</h1>";
        }

そのコードはitemList.phpという別の PHP ページを呼び出し、そのページ内に次のコードを見つけました。

public function getItemsByCategory($catid) {
        $this->retrieveSQL = "select * from items i, item_category_lookup l where livedate < '" . $this->currentdate . "' and  i.active = " . $this->showApproved . " and l.categoryid = $catid and i.id = l.itemid order by i.livedate desc limit " . $this->startRow . "," . $this->numRows;
        $this->countSQL = "select * from items i, item_category_lookup l where livedate < '" . $this->currentdate . "' and  i.active = " . $this->showApproved . " and l.categoryid = $catid and i.id = l.itemid";
        $this->retrieveItems();
        return $this->items;
    }

これは ' items ' テーブルです:

    id | itemname | itemdec | itemkeywords | createdate | viewcount | active | rating | livedate | sourcedesc | sourceurl
-----------------------------------
    64 | Apple Logo

これは「item_category_lookup」テーブルです:

categoryid | itemid
-------------------------
27         | 64

これは、以下の「カテゴリ」テーブルです。上記のクエリでは呼び出されませんが、実際のカテゴリ名があります。どうすれば実装できますか?

id | categoryid
------------------
27 | Apple
4

2 に答える 2

0

これを試してください: URL の例: www.example.com/index.php?catid=27-apple

if ( isset( $_REQUEST['catid'] ) ) {
    $catSEO = explode( '-', $_REQUEST['catid'] );
}
$catid = is_numeric( $catSEO[0] ) ? $catSEO:0;
于 2013-05-10T19:27:46.880 に答える
0

$this->retrieveSQL = ...のSQLを次のように変更できます

if (!is_number($catid)) {
        $this->retrieveSQL = "select * from items i, item_category_lookup l, category j where livedate < '" . $this->currentdate . "' and  i.active = " . $this->showApproved . " and i.id = l.itemid and j.id = l.categroyid and j.categoryid = "$catid" order by i.livedate desc limit " . $this->startRow . "," . $this->numRows;
}
于 2013-05-10T19:20:58.897 に答える