Yomi-Search(PHP)modified ver1.5.8.n
Yomi-Search(PHP)modified ver1.5.8をカスタマイズしたものを配布してます

不具合/追加機能要望/意見/サポート掲示板

旧Yomi-Search(PHP)modified ver1.5.8でのチェックボックス検索
戻る最新50ALL

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&amp;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&amp;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&amp;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)
ありがとうございます^^できました

No. Password
No.に 1と入力した場合スレッドごと削除します
このスレッドに返信

名前:
メール:
本文:
パスワード:
FirstUpload 10/10/15-12:54 : LastUpdate 10/10/15-12:54

Copyright © Yomi-Search(PHP)modified ver1.5.8.n All Rights Reserved. Script by Petit CMS Designed by info-cache.com