不具合/追加機能要望/意見/サポート掲示板No.1 ai (18/11/15-19:12)
旧Yomi-Search(PHP)modified ver1.5.8でのチェックボックス検索の方法です。
旧Yomi-Search(PHP)modified ver1.5.8はphp7には未対応ですので、ところどころ修正の必要があるかもしれません。 /template/top.htmlの修正 1 .formを広げる ■31行目付近 <table align="center" width="100%" class="table_searchform"> <form name="form1" action="<?php echo $cfg['search']; ?>" method="get"> ↓ <form name="form1" action="<?php echo $cfg['search']; ?>" method="get"> <table align="center" width="100%" class="table_searchform"> ■51行目付近 </form>を削除 ■164行目付近 </form>の追加 <hr align="center"> <!-- Footer Space Output --> ↓ </form> <hr align="center"> <!-- Footer Space Output --> 2.カテゴリループ内でチェックボックスを追加 ■85行目親 カテゴリ追加 ↓ <input type="checkbox" name="search_kt[<?php echo $row['path']; ?>]" value="<?php echo $row['path']; ?>" /> ■95行目付近 サブカテゴリ差し替え echo "\n<font size=\"-2\"><a href=\"{$cfg['script']}?mode=dir&path={$row['path']}\">{$row['title']}</a></font>, "; ↓ echo "\n<input type=\"checkbox\" name=\"search_kt[{$row['path']}]\" value=\"{$row['path']}\" /><font size=\"-2\"><a href=\"{$cfg['script']}?mode=dir&path={$row['path']}\">{$row['title']}</a></font>, "; 3.指定カテゴリオプション追加 ■47行目付近追加 ↓ <label><input name="search_kt_ex" type="radio" value="" checked='checked' /> 指定カテゴリのみ</label> | <label><input name="search_kt_ex" type="radio" value="-b_all" /> 指定カテゴリ以下</label> ----------------------------------------------------------------------------------- /php/search.phpの修正 3箇所 ■8行目以降 追加 ↓ //カテゴリ検索拡張 (1/3) $search_kt_list=array(); //カテゴリ配列 $search_kt_param = "search_kt=";//pager用 if(isset($_GET['search_kt'])){ if(is_array($_GET["search_kt"])){ //カテゴリ配列 $param = array(); foreach($_GET["search_kt"] as $key =>$val){ $search_kt_list[$key] = $val; array_push($param,"search_kt[{$key}]={$val}"); } $search_kt_param = implode("&",$param); $_GET["search_kt"] = 1;//ダミー }else{ //通常 $search_kt_param .= $_GET["search_kt"]; } } ■173行目付近の修正 エラー条件とバグ 1つ目のIF文条件に && !$search_kt_list を追加 2つ目のIF文 [!isset]→[empty] if(empty($_GET["word"]) && empty($_GET["search_day"])) { // キーワード・日付指定の両方が未指定のとき mes("<b>キーワード</b>か<b>日付指定</b>のいずれかは必ず指定してください", "記入ミス", "java"); } if(!isset($_GET["word"])) { $_GET["kt_search"]="off"; } ↓ //カテゴリ検索拡張 (2/3) if(empty($_GET["word"]) && empty($_GET["search_day"]) && !$search_kt_list) { // キーワード・日付指定の両方が未指定のとき mes("<b>キーワード</b>か<b>日付指定</b>のいずれかは必ず指定してください", "記入ミス", "java"); } if(empty($_GET["word"])) { //←バグ [!isset]→[empty] $_GET["kt_search"]="off"; } ■248行目付近の修正(差し替え) SQL文の発行 // カテゴリ指定部分 if($_GET["search_kt"]) { if(strstr($_GET["search_kt"], "-b_all")) { $_GET["search_kt"] = str_replace("-b_all", "", $_GET["search_kt"]); $_GET["search_kt_ex"] = "-b_all"; } list($oya_kt,) = explode("/", $_GET["search_kt"]); $oya_kt .= "/"; if(!$ganes[$oya_kt]) { mes("カテゴリ指定が不正です", "カテゴリ指定エラー", "java"); } if($_GET["search_kt_ex"]) { $category = "category LIKE '%&{$_GET["search_kt"]}%'"; } else { $category = "category LIKE '%&{$_GET["search_kt"]}&%'"; } } ↓ // カテゴリ指定部分 //カテゴリ検索拡張 (3/3) if($_GET["search_kt"]) { if($search_kt_list){ //配列 $tmp_path = array(); foreach($search_kt_list as $key => $path){ list($oya_kt,) = explode("/", $path); $oya_kt .= "/"; if(!$ganes[$oya_kt]) { mes("カテゴリ指定が不正です", "カテゴリ指定エラー", "java"); } //書き出し $data= ($_GET["search_kt_ex"] )?"%&{$path}%":"%&{$path}&%"; array_push($tmp_path,"category LIKE '{$data}'"); //SQL } $category = implode(" OR ",$tmp_path); }else{ //通常 if(strstr($_GET["search_kt"], "-b_all")) { $_GET["search_kt"] = str_replace("-b_all", "", $_GET["search_kt"]); $_GET["search_kt_ex"] = "-b_all"; } list($oya_kt,) = explode("/", $_GET["search_kt"]); $oya_kt .= "/"; if(!$ganes[$oya_kt]) { mes("カテゴリ指定が不正です", "カテゴリ指定エラー", "java"); } if($_GET["search_kt_ex"]) { $category = "category LIKE '%&{$_GET["search_kt"]}%'"; } else { $category = "category LIKE '%&{$_GET["search_kt"]}&%'"; } } } ----------------------------------------------------------------------------------- /template/search.htmlの修正 3箇所 ■59行目以降 追加 検索対象のカテゴリを表示したい場合 // ワード検索結果を表示 if($Clog) { の前に追加 ↓ //カテゴリ検索拡張 (1/3) if($search_kt_list){ $msg = ($_GET["search_kt_ex"])?"指定カテゴリ以下":"指定カテゴリのみ"; ?><hr><ul>▼以下のカテゴリの結果(<?php echo count($search_kt_list); ?>件) 条件:<strong><?php echo $msg; ?></strong><br><br><?php foreach($search_kt_list as $kt) { ?><a href="<?php echo $cfg['script']; ?>?mode=dir&path=<?php echo $kt; ?>"><?php echo full_category($kt); ?></a><br><br><?php } ?></ul><?php } ■80行目付近 <input type="hidden" name="search_kt" value="<?php echo htmlspecialchars($_GET['search_kt']); ?>"> を削除して差し替え(ソート条件の所) ↓ <?php //カテゴリ検索拡張 (2/3) if($search_kt_list){ foreach($search_kt_list as $key => $val){?> <input type="hidden" name="search_kt<?php echo "[{$key}]"; ?>" value="<?php echo htmlspecialchars($val); ?>"><?php } }else{?> <input type="hidden" name="search_kt" value="<?php echo $_GET['search_kt']; ?>"><?php } ?> ■137行目付近 search_kt={$_GET['search_kt']} →{$search_kt_param} に変更 pagerの所 間違いがあったので修正しました[2008/04/28] $arg = array($_GET['page'], $Clog, $cfg['hyouji'],"&mode={$_GET['mode']}&sort={$_GET['sort']}&word={$word_en}&engine={$_GET['engine']}&search_kt={$_GET['search_kt']}&search_day={$_GET['search_day']}&use_str={$_GET['use_str']}&method={$_GET['method']}", $cfg['search']); ↓ //カテゴリ検索拡張 (3/3) $arg = array($_GET['page'], $Clog, $cfg['hyouji'],"&mode={$_GET['mode']}&sort={$_GET['sort']}&word={$word_en}&engine={$_GET['engine']}&{$search_kt_param}&search_day={$_GET['search_day']}&use_str={$_GET['use_str']}&method={$_GET['method']}", $cfg['search']); ワード検索のAND OR条件と兼用する場合 /php/search.php ■248行目付近の修正(差し替え) SQL文の発行 の17行目 $category = implode(" OR ",$tmp_path); ↓ $_GET['method'] = (@$_GET['method'] == 'and')? 'and' : 'or'; $category = implode(" {$_GET['method']} ",$tmp_path); No.2 ai (18/11/15-19:14)
kaiさまのスレッドにて入力を誤ってしまった為、新しくスレッドにて返答させていただきました。
板汚し失礼いたしました。 No.3 kai (18/11/20-23:19)
ありがとうございます^^できました
このスレッドに返信
FirstUpload 10/10/15-12:54 : LastUpdate 10/10/15-12:54
|