db = cs4_open(); if($p['keywords'] == null && $p['ing_genre'] == 0 && $p['genre'] == 0 && $p['cook'] == 0 && $p['kind'] == 0 && $p['calorie'] == 0) { $url = sprintf("%s/search_new/search_mix.php?no=1",KTY_BASE_URL); header("Location: ".$url); exit; } //- keywords文字化け対応(何故だ?) if(!empty($p['page']) && $p['mode'] == "keywords"){ $p['keywords'] = base64_decode($p['keywords']); } // ----------------------------------------------- // 検索ワードをDBに登録 2012.11.7 // ----------------------------------------------- if( empty( $p['page'] ) ) { $_add = array(); $_add['word'] = $p['keywords']; $_add['carrier'] = $p['carrier']; $_add['user_agent'] = $_SERVER['HTTP_USER_AGENT']; $_ret = addRecipeSearchWord( $_add ); } //-- 追加絞り込み検索対応 if(!empty($p['pre_terms'])){ //- 前回検索条件を unserialize() してセット $tmp_pre_terms = unserialize(base64_decode($p['pre_terms'])); $p['pre_terms'] = $tmp_pre_terms; //- 絞り込みキーワードを保持する(表示用) $add_keywords = ""; if("add" == $p['mode']){ $add_keywords = $p['keywords']; } //- mode を保持する $p['mode'] = ($p['mode'] != $p['pre_terms']['mode']) ? $p['pre_terms']['mode'] : $p['mode']; switch($p['mode']){ case "ing_select": $p['vegetable'] = $p['pre_terms']['vegetable']; $p['meat'] = $p['pre_terms']['meat']; $p['fish'] = $p['pre_terms']['fish']; $p['other'] = $p['pre_terms']['other']; break; case "mix_search": $p['genre'] = $p['pre_terms']['genre']; $p['ing_genre'] = $p['pre_terms']['ing_genre']; $p['cook'] = $p['pre_terms']['cook']; $p['kind'] = $p['pre_terms']['kind']; $p['calorie'] = $p['pre_terms']['calorie']; break; case "theme": $p['theme'] = $p['pre_terms']['theme']; break; case "keywords": //- keywords を保持する if(empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){ $p['keywords'] = $p['pre_terms']['keywords']; }elseif(!empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){ $p['keywords'] = sprintf("%s %s",$p['keywords'] ,$p['pre_terms']['keywords']); } break; case "rcp_name": //- keywords を保持する if(empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){ $p['keywords'] = $p['pre_terms']['keywords']; }elseif(!empty($p['keywords']) && !empty($p['pre_terms']['keywords'])){ $p['keywords'] = sprintf("%s %s",$p['keywords'] ,$p['pre_terms']['keywords']); } break; } //$p['keywords'] = (empty($p['keywords'])) ? $p['pre_terms']['keywords'] : $p['keywords']; } $terms = $p; /*if($p['carrier'] == 'i' && $p['f']){ $terms['keywords'] = mb_convert_encoding($terms['keywords'], mb_detect_encoding($terms['keywords'], "SJIS,EUC-JP")); }*/ //---- 該当条件レシピ一覧を取得 $rcp_list = search_getRcpList($this->db,$terms); if( preg_match( '/MA33/', $_SERVER['HTTP_USER_AGENT'] ) ) { error_log( var_export( $rcp_list,true )."\n",3,"/home/www/work/ihara/__ihara." .date( "ymd" ) . ".log" ); } //- mode毎にkeyphraseセット switch($terms['mode']){ case "keywords": $title = "キーワード(材料)から探す"; if(empty($terms['keywords'])){ if(!empty($terms['pre_terms']['keywords'])){ $tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['pre_terms']['keywords']))); } }else{ $tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['keywords']))); } $keyphrase[] = $tmp_key; break; case "rcp_name": $title = "キーワード(レシピ名)から探す"; if(empty($terms['keywords'])){ if(!empty($terms['pre_terms']['keywords'])){ $tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['pre_terms']['keywords']))); } }else{ $tmp_key = array('name' => 'keywords','phrase' => sprintf("・%s",urldecode($terms['keywords']))); } $keyphrase[] = $tmp_key; break; case "ing_select": $vegetable_list = array( '101' => 'トマト', '102' => 'キャベツ', '103' => 'ニンジン', '104' => 'タマネギ', '105' => 'ピーマン', '106' => 'ダイコン', '107' => 'ホウレンソウ', '108' => 'ナス', '109' => 'カボチャ', '110' => 'イモ類', '111' => 'キノコ類' ); $meat_list = array( '201' => '牛肉', '202' => '鶏肉', '203' => '豚肉', '204' => 'ひき肉', '205' => '加工品' ); $fish_list = array( '301' => 'あじ・いわし', '302' => 'かつお', '303' => 'さけ', '304' => 'さば', '305' => 'さんま', '306' => 'ぶり', '307' => 'いか・たこ', '308' => 'えび', '309' => '貝類', '310' => '缶詰・乾物・加工品' ); $other_list = array( '401' => '海藻類', '402' => '乾物・加工品', '403' => '卵・乳製品', '404' => '豆・豆加工品' ); $title = ""; $tmp_key = ""; if(empty($terms['vegetable'])){ if(!empty($terms['pre_terms']['vegetable'])){ $tmp_key = array('name' => 'vegetable','phrase' => sprintf("・野菜:%s",$vegetable_list[urldecode($terms['pre_terms']['vegetable'])])); } }else{ $tmp_key = array('name' => 'vegetable','phrase' => sprintf("・野菜:%s",$vegetable_list[urldecode($terms['vegetable'])])); } if(!empty($tmp_key)){ $keyphrase[] = $tmp_key; } $tmp_key = ""; if(empty($terms['meat'])){ if(!empty($terms['pre_terms']['meat'])){ $tmp_key = array('name' => 'meat','phrase' => sprintf("・お肉:%s",$meat_list[urldecode($terms['pre_terms']['vegetable'])])); } }else{ $tmp_key = array('name' => 'meat','phrase' => sprintf("・お肉:%s",$meat_list[urldecode($terms['meat'])])); } if(!empty($tmp_key)){ $keyphrase[] = $tmp_key; } $tmp_key = ""; if(empty($terms['fish'])){ if(!empty($terms['pre_terms']['fish'])){ $tmp_key = array('name' => 'fish','phrase' => sprintf("・お魚:%s",$fish_list[urldecode($terms['pre_terms']['fish'])])); } }else{ $tmp_key = array('name' => 'fish','phrase' => sprintf("・お魚:%s",$fish_list[urldecode($terms['fish'])])); } if(!empty($tmp_key)){ $keyphrase[] = $tmp_key; } $tmp_key = ""; if(empty($terms['other'])){ if(!empty($terms['pre_terms']['other'])){ $tmp_key = array('name' => 'other','phrase' => sprintf("・いろいろ素材:%s",$other_list[urldecode($terms['pre_terms']['other'])])); } }else{ $tmp_key = array('name' => 'other','phrase' => sprintf("・いろいろ素材:%s",$other_list[urldecode($terms['other'])])); } if(!empty($terms['keywords'])){ $keyphrase[] = array('name' => 'keywords','phrase' => sprintf("・絞り込み:%s",$terms['keywords'] )); } if(!empty($tmp_key)){ $keyphrase[] = $tmp_key; } break; case "mix_search": $title = "組み合わせから探す"; $ing_genre_arr = array( '200' => '肉類', '300' => '魚介類', '401' => '海藻類', '100' => '野菜類', '402' => '乾物・加工品', '403' => '卵・乳製品', '404' => '豆・豆加工品' ); $cal_arr = array( '1' => '100kcal未満', '2' => '100-199', '3' => '200-299', '4' => '300-399', '5' => '400-499', '6' => '500-599', '7' => '600以上' ); if(!empty($terms['genre']) && '0' != $terms['genre']){ $genre_detail = rcp_getMenuList($this->db,$terms['genre']); $tmp_key = array('name' => 'genre','phrase' => sprintf("・ジャンル:%s",$genre_detail['r_menu_nm'])); $keyphrase[] = $tmp_key; } if(!empty($terms['ing_genre']) && '0' != $terms['ing_genre']){ $tmp_key = array('name' => 'ing_genre','phrase' => sprintf("・素材:%s",$ing_genre_arr[$terms['ing_genre']])); $keyphrase[] = $tmp_key; } if(!empty($terms['cook']) && '0' != $terms['cook']){ $cook = bsc_get_rcp_howto_cook($this->db,$terms['cook']); $tmp_key = array('name' => 'cook','phrase' => sprintf("・調理法:%s",$cook)); $keyphrase[] = $tmp_key; } if(!empty($terms['kind']) && '0' != $terms['kind']){ $kind = bsc_get_rcp_kind($this->db,$terms['kind']); $tmp_key = array('name' => 'kind','phrase' => sprintf("・種類:%s",$kind[0]['r_knd_nm'])); $keyphrase[] = $tmp_key; } if(!empty($terms['calorie']) && '0' != $terms['calorie']){ $kind = bsc_get_rcp_kind($this->db,$terms['calorie']); $tmp_key = array('name' => 'calorie','phrase' => sprintf("・カロリー:%s",$cal_arr[$terms['calorie']])); $keyphrase[] = $tmp_key; } if(!empty($terms['keywords'])){ $keyphrase[] = array('name' => 'keywords','phrase' => sprintf("・絞り込み:%s",$terms['keywords'] )); } break; case "tmp_search": $title = "材料から探す"; if(!empty($terms['meat'])){ $meet = rcp_getIngDetail($this->db,$terms['ing_meet']); $keyphrase[] = array('name' => 'ing_meet','phrase' => sprintf("・肉類:%s",$meet['mtr_nm'])); } if(!empty($terms['fish'])){ $fish = rcp_getIngDetail($this->db,$terms['ing_fish']); $keyphrase[] = array('name' => 'ing_fish','phrase' => sprintf("・魚介類:%s",$fish['mtr_nm'])); } if(!empty($terms['vegetable'])){ $veget = rcp_getIngDetail($this->db,$terms['ing_veget']); $keyphrase[] = array('name' => 'ing_veget','phrase' => sprintf("・野菜類:%s",$veget['mtr_nm'])); } if(!empty($terms['other'])){ $other_ing = rcp_getIngDetail($this->db,$terms['ing_other']); $keyphrase[] = array('name' => 'ing_other','phrase' => sprintf("・その他:%s",$other_ing['mtr_nm'])); } break; case "theme": $style_arr = bsc_get_rcp_RcpStyle_arr($this->db); $title = "選択テーマ"; $keyphrase[] = array('name' => 'theme','phrase' => sprintf("・%s",$style_arr[$terms['theme']])); break; } //- ページ番号セット $terms['page'] = (empty($terms['page'])) ? "1" : $terms['page'] ; $count = ($rcp_list['list']) ? count($rcp_list['list']) : false ; // デバッグ if(constant('RECIPE_DEBUG_MODE')){ print "
-------------------
bh_recipe_search.php L178 Count -> "; var_dump($count); } // テンプレート読み込み $template =& loadTemplate( $p ); //- Keyphrase表示 for($i=0;$isetCurrentBlock('__SearchKey__'); $template->setVariable('keyphrase',$keyphrase[$i]['phrase']); $template->parseCurrentBlock(); } //- 検索エラーハンドリング if($count){ $template->setCurrentBlock('__SerachResult__'); $template->setVariable('count',$count); $template->parseCurrentBlock(); $template->hideBlock('__SearchError__'); //-- レシピ一覧作成 $start = ($terms['page'] - 1) * constant('RCP_LIST_COUNT'); $limit = (($start + constant('RCP_LIST_COUNT')) > $count) ? $count : $start + constant('RCP_LIST_COUNT'); $add_param = ""; for($i=0;$isetVariable('url',$detail_url); $template->setVariable('rcp_name',$rcp_list['list'][$i]['rcp_nm']); $img_f = sprintf("%s_n-s.jpg",$rcp_list['list'][$i]['uniq_id']); $img = sprintf("%s/%s",constant('IMG_DIR_RECIPE'),$img_f); if(($i + 1) % 2 == 1) { $template->touchBlock('__tr__'); $template->touchBlock('__td__'); $template->touchBlock('__tdb__'); } else { $template->touchBlock('__td__'); } if(file_exists($img)){ if($rcp_list['list'][$i]['rcp_img_flg'] == 2){ $template->setVariable('img',sprintf("",str_replace(KTY_SERVER_ROOT,"",$img))); }else{ $template->setVariable('img',sprintf("",str_replace(KTY_SERVER_ROOT,"",$img))); } } if(($i + 1) % 2 == 0) { $template->parse('__tdb__'); $template->parse('__td__'); $template->parse('__tr__'); } else { $template->parse('__td__'); } } //- サーチエラー処理 if(1 > $count){ switch($terms['mode']){ case "words": $template->TouchBlock('__SearchWords__'); break; case "ing": $template->TouchBlock('__SearchIng__'); break; case "calorie": $template->TouchBlock('__SearchCalorie__'); break; case "style": $template->TouchBlock('__SearchStyle__'); break; case "quick": default: break; } } //- キーワードが追加されたときは、既存に追加してセットする $base_keywords = ""; $base_keywords .= sprintf("%s ",$terms['keywords']); /* if(!empty($terms['keywords']) && '' != $terms['keywords']){ if( !strstr( $base_keywords, $terms['keywords'] ) ){ $base_keywords .= sprintf("%s ",$terms['keywords']); } } if(!empty($terms['add_keywords']) && '' != $terms['add_keywords']){ if( !strstr( $base_keywords, $terms['add_keywords'] ) ){ $base_keywords .= sprintf("%s ",$terms['add_keywords']); } } if(!empty($terms['pre_terms']['keywords']) && '' != $terms['pre_terms']['keywords']){ if( !strstr( $base_keywords, $terms['pre_terms']['keywords'] ) ){ $base_keywords .= sprintf("%s ",$terms['pre_terms']['keywords']); } } if(!empty($terms['pre_terms']['add_keywords']) && '' != $terms['pre_terms']['add_keywords']){ if( !strstr( $base_keywords, $terms['pre_terms']['add_keywords'] ) ){ $base_keywords .= sprintf("%s ",$terms['pre_terms']['add_keywords']); } } */ //- 新規検索フォーム表示(全mode共通) $template->touchBlock('__SearchForm__'); /* $template->setCurrentBlock('__SearchForm__'); if('0' < $count && $count != false){ $template->setVariable('mode',$terms['mode']); $template->setVariable('add',true); if(!empty($base_keywords)){ $template->setVariable('add_keywords',$base_keywords); } }else{ } if(!empty($terms['main']) && '0' != $terms['main']){ $holder_name = sprintf("m_selected_%d",$terms['main']); $template->setVariable($holder_name,'selected'); } if(!empty($terms['cook']) && '0' != $terms['cook']){ $holder_name = sprintf("c_selected_%d",$terms['cook']); $template->setVariable($holder_name,'selected'); } $template->parseCurrentBlock(); */ /* if(!empty($terms['kind']) && '0' != $terms['kind']){ $holder_name = sprintf("k_selected_%d",$terms['kind']); $template->setVariable($holder_name,'selected'); } */ $kind_arr = bsc_get_rcp_kind($this->db); if(!empty($kind_arr)){ for($i=0;$isetCurrentBlock('__Kind__'); $template->setVariable('val',$kind_arr[$i]['uniq_id']); $template->setVariable('show',$kind_arr[$i]['r_knd_nm']); if($kind_arr[$i]['r_knd_no'] == $terms['kind']){ $template->setVariable('selected','selected'); } $template->parseCurrentBlock(); } } if(constant('RECIPE_DEBUG_MODE')){ print "
Page Now -> ".$terms['page']."
\n"; print "Total Count -> ".$count."
\n"; print "Show Limit -> ".$limit."
\n"; } $key_str = ""; if($terms['page'] > '1'){ $template->setCurrentBlock('__PagePrev__'); $template->setVariable('prev_page',($terms['page'] - 1)); $template->setVariable('page_mode_pre',$terms['mode']); switch($terms['mode']){ case "ing_select": for($i=0;$isetVariable('terms',$key_str); break; case "keywords": case "rcp_name": $template->setVariable('terms',sprintf("&keywords=%s&kw_mode=%s",urlencode(base64_encode($terms['keywords'])),$terms['kw_mode'])); break; case "quick": for($i=0;$isetVariable('terms',$key_str); break; case "ing": for($i=0;$isetVariable('terms',$key_str); break; case "mix_search": //$template->setVariable('terms',sprintf("&p[calorie]=%s",$terms['calorie'])); for($i=0;$isetVariable('terms',$key_str); break; case "theme": //$template->setVariable('terms',sprintf("&p[%s]=%s",urlencode($terms['keywords']))); for($i=0;$isetVariable('terms',$key_str); break; default: break; } $template->parseCurrentBlock(); }else{ $template->hideBlock('__PagePrev__'); } if($count > $limit){ $template->setCurrentBlock('__PageNext__'); $template->setVariable('next_page',($terms['page'] + 1)); $template->setVariable('page_mode_next',$terms['mode']); switch($terms['mode']){ case "ing_select": for($i=0;$isetVariable('terms',$key_str); break; case "keywords": case "rcp_name": $template->setVariable('terms',sprintf("&keywords=%s&kw_mode=%s",urlencode(base64_encode($terms['keywords'])),$terms['kw_mode'])); //print "encode -> ".urlencode($terms['keywords'])."
"; //$template->setVariable('terms',sprintf("&p[keywords]=%s&p[test]=1",base64_encode($terms['keywords']))); //$template->setVariable('terms',sprintf("&p[keywords]=%s",$terms['keywords'])); break; case "quick": for($i=0;$isetVariable('terms',$key_str); break; case "mix_search": for($i=0;$isetVariable('terms',$key_str); break; case "cal": //$template->setVariable('terms',sprintf("&p[calorie]=%s",$terms['calorie'])); for($i=0;$isetVariable('terms',$key_str); break; case "theme": for($i=0;$isetVariable('terms',$key_str); break; default: break; } $template->parseCurrentBlock(); }else{ $template->hideBlock('__PageNext__'); } //- pre_terms を一旦消去 $terms['pre_terms'] = ""; if(!empty($base_keywords)){ $terms['keywords'] = trim($base_keywords); } if(!$count || '0' == $count){ $terms = ""; } if(constant('RECIPE_DEBUG_MODE')){ //print "\n
--- User Input Page ---\n
Set PreTerms Keywords -> "; //var_dump($terms['keywords']); } if($count){ //- 絞り込み検索(フリーワードセット) if(!empty($base_keywords)){ $_now_terms = serialize($terms); $now_terms = base64_encode($_now_terms); $template->setCurrentBlock('__SearchAddWords__'); $template->setVariable('add_keywords',mb_convert_kana(trim($base_keywords),"KV")); $template->setVariable('pre_terms',$now_terms); $template->parseCurrentBlock(); }else{ $template->touchBlock('__SearchAddWords__'); } } $template->parseCurrentBlock(); }else{ $template->TouchBlock('__SearchError__'); $template->setVariable('count', 0); } /* if($p['carrier'] == 'i'){ header( "Content-Type: application/xhtml+xml;charset=EUC-JP" ); }*/ $template->show(); cs4_close($this->db); } //var_dump($p); search_list( $p ); ?>