tpl_mainpage = 'contents/recomend_search.tpl'; $this->tpl_mainno = 'contents'; $this->tpl_subnavi = ''; $this->tpl_subno = ""; } /** * Page のプロセス. * * @return void */ function process() { $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { $objSess = new SC_Session(); $objDb = new SC_Helper_DB_Ex(); // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); if (!isset($_POST['mode'])) $_POST['mode'] = ""; if ($_POST['mode'] == "search") { // POST値の引き継ぎ $this->arrForm = $_POST; // 入力文字の強制変換 $this->lfConvertParam(); $where = 'del_flg = 0'; /* 入力エラーなし */ foreach ($this->arrForm as $key => $val) { if($val == "") { continue; } switch ($key) { case 'search_name': $where .= " AND name ILIKE ?"; $arrval[] = "%$val%"; break; case 'search_category_id': list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($val); if($tmp_where != "") { $where.= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")"; $arrval = array_merge((array)$arrval, (array)$tmp_arrval); } break; case 'search_product_code': $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code LIKE ? GROUP BY product_id)"; $arrval[] = "$val%"; break; default: break; } } $order = "update_date DESC, product_id DESC"; $objQuery = new SC_Query(); // 行数の取得 if (empty($arrval)) $arrval = array(); $linemax = $objQuery->count("dtb_products", $where, $arrval); $this->tpl_linemax = $linemax; // 何件が該当しました。表示用 // ページ送りの処理 if(isset($_POST['search_page_max']) && is_numeric($_POST['search_page_max'])) { $page_max = $_POST['search_page_max']; } else { $page_max = SEARCH_PMAX; } // ページ送りの取得 $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX); $this->tpl_strnavi = $objNavi->strnavi; // 表示文字列 $startno = $objNavi->start_row; // 取得範囲の指定(開始行番号、行数のセット) $objQuery->setLimitOffset($page_max, $startno); // 表示順序 $objQuery->setOrder($order); // FIXME 商品コードの表示 // 検索結果の取得 $this->arrProducts = $objQuery->select("*", SC_Product::alldtlSQL(), $where, $arrval); } // カテゴリ取得 $this->arrCatList = $objDb->sfGetCategoryList(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } /* 取得文字列の変換 */ function lfConvertParam() { /* * 文字列の変換 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 * C : 「全角ひら仮名」を「全角かた仮名」に変換 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します * n : 「全角」数字を「半角(ハンカク)」に変換 */ $arrConvList['search_name'] = "KVa"; $arrConvList['search_product_code'] = "KVa"; // 文字変換 foreach ($arrConvList as $key => $val) { // POSTされてきた値のみ変換する。 if(isset($this->arrForm[$key])) { $this->arrForm[$key] = mb_convert_kana($this->arrForm[$key] ,$val); } } } } ?>