トピック このトピックに返信する
TOPIC 検索結果のソート
Posted by block
at 2011/07/31(日) 15:06
分類: カスタマイズトラブル | AmigoDatabaseバージョン: ver9.85

検索結果を自分の好みにソートすることは出来るのでしょうか?
例えば
A,B,C,Dという検索結果なら現在は降順/昇順しか出来ないですが、
B.D.A,Cというように任意の順番にソートすることは可能でしょうか?
トピック このトピックに返信する
レス表示 古い順 新しい順 | 15件のレス 1-15 表示中
RES レスメッセージ
Posted by ab
at 2012/03/04(日) 19:01
Re:検索結果のソート
> No4465への引用返信
> 検索結果を自分の好みにソートすることは出来るのでしょうか?
> 例えば
> A,B,C,Dという検索結果なら現在は降順/昇順しか出来ないですが、
> B.D.A,Cというように任意の順番にソートすることは可能でしょうか?

確かに好きなようにソートできると便利ですね。
Posted by 工藤商店
at 2012/03/06(火) 17:58
Re:検索結果のソート
> No4465への引用返信
> 検索結果を自分の好みにソートすることは出来るのでしょうか?
> 例えば
> A,B,C,Dという検索結果なら現在は降順/昇順しか出来ないですが、
> B.D.A,Cというように任意の順番にソートすることは可能でしょうか?

こんばんは。
どのような使い方を実現したいのでしょうか。

たとえば、[デ]Month という項目に登録された文字列を
睦月
如月
弥生
卯月
皐月
水無月
文月
葉月
長月
神無月
霜月
師走
という順番に並べ替えるような
使い方がご希望でしょうか。

その場合、あらかじめ

$month[1]="睦月";
$month[2]="如月";
$month[3]="弥生";
$month[4]="卯月";
$month[5]="皐月";
$month[6]="水無月";
$month[7]="文月";
$month[8]="葉月";
$month[9]="長月";
$month[10]="神無月";
$month[11]="霜月";
$month[12]="師走";

と定義しておき [デ]Monthを半角数字(数値)として
扱うと、
<input type="hidden" name="Sort" value="Num_Month" />
としてソートができます。
その場合、表示する段階では
$month[値] とすることで、値が1の場合は『睦月』、
値が9の場合は『長月』を表示することが可能となります。
参考になれば幸いです。

by CGI設置代行の工藤商店
Posted by block
at 2012/03/07(水) 20:30
Re:検索結果のソート
> No4522への引用返信
>> No4465への引用返信
>> 検索結果を自分の好みにソートすることは出来るのでしょうか?
>> 例えば
>> A,B,C,Dという検索結果なら現在は降順/昇順しか出来ないですが、
>> B.D.A,Cというように任意の順番にソートすることは可能でしょうか?
>
> こんばんは。
> どのような使い方を実現したいのでしょうか。
>
> たとえば、[デ]Month という項目に登録された文字列を
> 睦月
> 如月
> 弥生
> 卯月
> 皐月
> 水無月
> 文月
> 葉月
> 長月
> 神無月
> 霜月
> 師走
> という順番に並べ替えるような
> 使い方がご希望でしょうか。
>
> その場合、あらかじめ
>
> $month[1]="睦月";
> $month[2]="如月";
> $month[3]="弥生";
> $month[4]="卯月";
> $month[5]="皐月";
> $month[6]="水無月";
> $month[7]="文月";
> $month[8]="葉月";
> $month[9]="長月";
> $month[10]="神無月";
> $month[11]="霜月";
> $month[12]="師走";
>
> と定義しておき [デ]Monthを半角数字(数値)として
> 扱うと、
> <input type="hidden" name="Sort" value="Num_Month" />
> としてソートができます。
> その場合、表示する段階では
> $month[値] とすることで、値が1の場合は『睦月』、
> 値が9の場合は『長月』を表示することが可能となります。
> 参考になれば幸いです。
>
> by CGI設置代行の工藤商店
具体的には
$month[1]="睦月";
$month[2]="如月";
$month[3]="弥生";
はdb-html.cgiに
<input type="hidden" name="Sort" value="Num_Month" />
はsample.htmlに記述すれば良いのでしょうか?
Posted by 工藤商店
at 2012/03/07(水) 22:18
Re:検索結果のソート

> 具体的には
> $month[1]="睦月";
> $month[2]="如月";
> $month[3]="弥生";
> はdb-html.cgiに
> <input type="hidden" name="Sort" value="Num_Month" />
> はsample.htmlに記述すれば良いのでしょうか?

$month[1]="睦月";
$month[2]="如月";
$month[3]="弥生";

は、db-setup.cgiに記述するのがよいかと思います。

<input type="hidden" name="Sort" value="Num_Month" />
は、sample.htmlまたは検索をおこなうフォームへ記述してください。
どうぞよろしくお願いいたします。

by CGI設置代行の工藤商店
Posted by AS1
at 2012/03/07(水) 23:30
Re:検索結果のソート
> No4525への引用返信
>
>> 具体的には
>> $month[1]="睦月";
>> $month[2]="如月";
>> $month[3]="弥生";
>> はdb-html.cgiに
>> <input type="hidden" name="Sort" value="Num_Month" />
>> はsample.htmlに記述すれば良いのでしょうか?
>
> $month[1]="睦月";
> $month[2]="如月";
> $month[3]="弥生";
>
> は、db-setup.cgiに記述するのがよいかと思います。
>
> <input type="hidden" name="Sort" value="Num_Month" />
> は、sample.htmlまたは検索をおこなうフォームへ記述してください。
> どうぞよろしくお願いいたします。
>
> by CGI設置代行の工藤商店
アドバイス通りに記述しましたが、上手いこと生きませんでした。
検索結果の画面でソートをすると、望んだ形にはなりませんでした。
Posted by 工藤商店
at 2012/03/08(木) 20:50
Re:検索結果のソート
> アドバイス通りに記述しましたが、上手いこと生きませんでした。
> 検索結果の画面でソートをすると、望んだ形にはなりませんでした。

上記の例ですと
AmigoDatabaseに登録される値は
睦月、如月 ではなく、
1〜12の数値で登録される、という使いかたとなります。
数値ですので、
<input type="hidden" name="Sort" value="Num_Month" />
というソート指定でソートができるかと思います。
再度ご確認いただけますと幸いです。

by CGI設置代行の工藤商店
Posted by AS1
at 2012/03/09(金) 18:57
Re:検索結果のソート
> No4528への引用返信
>> アドバイス通りに記述しましたが、上手いこと生きませんでした。
>> 検索結果の画面でソートをすると、望んだ形にはなりませんでした。
>
> 上記の例ですと
> AmigoDatabaseに登録される値は
> 睦月、如月 ではなく、
> 1〜12の数値で登録される、という使いかたとなります。
> 数値ですので、
> <input type="hidden" name="Sort" value="Num_Month" />
> というソート指定でソートができるかと思います。
> 再度ご確認いただけますと幸いです。
>
> by CGI設置代行の工藤商店

全て上記のように指定しているはずですが、上手くできませんでした。
検索結果の画面でソート指定は
<A href="$SortUrl&Sort=Key_month">降順</A>/<A href="$SortUrl&Sort=Key_month&Reverse=1">
で行っています。
Posted by 工藤商店
at 2012/03/10(土) 22:51
Re:検索結果のソート
<A href="$SortUrl&Sort=Key_month">降順</A>/<A href="$SortUrl&Sort=Key_month&Reverse=1">

ではなく

<A href="$SortUrl&Sort=Num_month">降順</A><A href="$SortUrl&Sort=Num_month&Reverse=1">昇順</a>

でお試しください。

by CGI設置代行の工藤商店
Posted by ASI
at 2012/03/17(土) 07:17
Re:検索結果のソート
> No4531への引用返信
> <A href="$SortUrl&Sort=Key_month">降順</A>/<A href="$SortUrl&Sort=Key_month&Reverse=1">
>
> ではなく
>
> <A href="$SortUrl&Sort=Num_month">降順</A><A href="$SortUrl&Sort=Num_month&Reverse=1">昇順</a>
>
> でお試しください。
>
> by CGI設置代行の工藤商店

上のように<A href="$SortUrl&Sort=Num_month">降順</A><A href="$SortUrl&Sort=Num_month&Reverse=1">昇順</a>で指定すると
今度はソートが出来なくなってしまいました。
Posted by ORD
at 2012/06/02(土) 06:42
Re:検索結果のソート
> No4538への引用返信
>> No4531への引用返信
>> <A href="$SortUrl&Sort=Key_month">降順</A>/<A href="$SortUrl&Sort=Key_month&Reverse=1">
>>
>> ではなく
>>
>> <A href="$SortUrl&Sort=Num_month">降順</A><A href="$SortUrl&Sort=Num_month&Reverse=1">昇順</a>
>>
>> でお試しください。
>>
>> by CGI設置代行の工藤商店
>
> 上のように<A href="$SortUrl&Sort=Num_month">降順</A><A href="$SortUrl&Sort=Num_month&Reverse=1">昇順</a>で指定すると
> 今度はソートが出来なくなってしまいました。

おもしろい機能だと思い、自分も上の内容のように設定しましたが、同じく上手くいきませんでした。
Posted by Bear
at 2012/10/17(水) 00:52
Re:検索結果のソート
> No4465への引用返信
> 検索結果を自分の好みにソートすることは出来るのでしょうか?
> 例えば
> A,B,C,Dという検索結果なら現在は降順/昇順しか出来ないですが、
> B.D.A,Cというように任意の順番にソートすることは可能でしょうか?

AmigoDatabaseの標準機能で実現可能かと思います。
少し手間はかかりますが確実な方法かと思います。

データ種類追加で専用のデータ種類を追加します。
例:DATAファイルデータ「AdminSort」データ名「管理者ソート用」

そして環境設定にて
管理者のみ登録可能な項目[デ]
管理者のみ編集可能な項目[デ]
に「AdminSort」を追加します。

管理者データ登録(data-regist-admin.html)、編集ページ(data-edit-admin.html)にそれらのデータ登録フォームを追加します。
後は、検索にて表示したい順に、管理者データ登録や編集にてそのデータ種類に「1」や「2」や「3」と管理者編集などで登録していきます。

最後にそのデータ種類「AdminSort」に対してソートを行うだけです。

※「AdminSort」などは例ですのでお好きなデータ種類名に変えてくださって結構です。

編集: 2012/10/17(水) 00:54
Posted by block
at 2012/10/23(火) 21:27
Re:検索結果のソート
> No4600への引用返信
>> No4465への引用返信
>> 検索結果を自分の好みにソートすることは出来るのでしょうか?
>> 例えば
>> A,B,C,Dという検索結果なら現在は降順/昇順しか出来ないですが、
>> B.D.A,Cというように任意の順番にソートすることは可能でしょうか?
>
> AmigoDatabaseの標準機能で実現可能かと思います。
> 少し手間はかかりますが確実な方法かと思います。
>
> データ種類追加で専用のデータ種類を追加します。
> 例:DATAファイルデータ「AdminSort」データ名「管理者ソート用」
>
> そして環境設定にて
> 管理者のみ登録可能な項目[デ]
> 管理者のみ編集可能な項目[デ]
> に「AdminSort」を追加します。
>
> 管理者データ登録(data-regist-admin.html)、編集ページ(data-edit-admin.html)にそれらのデータ登録フォームを追加します。
> 後は、検索にて表示したい順に、管理者データ登録や編集にてそのデータ種類に「1」や「2」や「3」と管理者編集などで登録していきます。
>
> 最後にそのデータ種類「AdminSort」に対してソートを行うだけです。
>
> ※「AdminSort」などは例ですのでお好きなデータ種類名に変えてくださって結構です。

確かにそれだと、目的道理にソートできるのですが、すでにデータが1万以上あるので、それを全て変更するのは流石に無理があるかと
Posted by Bear
at 2012/11/16(金) 16:46
Re:検索結果のソート
> 確かにそれだと、目的道理にソートできるのですが、すでにデータが1万以上あるので、それを全て変更するのは流石に無理があるかと

こんにちは。
指定したデータ番号を強制的に上位にする改造です。

db-s.cgiのSearchサブルーチン内を以下のように修正します。
my@RANK=(*,*,*);の*部分にデータ番号を入れます。

}if(@code>=1){
 $code=join('or',@code);
 $code='@HitNums=sort{'.$code.'}@HitNums;'; 
 eval$code or &Error('ソートに失敗しました。');
 ## 強制ソート
 my@RANK=(*,*,*); #上位から表示したいデータ番号順
 my@TMP;
 foreach my$num(@RANK){
  for(my$i=0; $i<@HitNums; $i++){
   if($num==$HitNums[$i]){
    push(@TMP,$num);
    splice(@HitNums,$i,1);
    last;
   }
  }
 }unshift(@HitNums,@TMP);
 ## END
}if($FORM{SearchMax2} and @HitNums>$FORM{SearchMax2}){
ご参考になれば幸いです。

編集: 2012/11/16(金) 16:56
Posted by ASI
at 2012/11/18(日) 07:35
Re:検索結果のソート
> No4613への引用返信
>> 確かにそれだと、目的道理にソートできるのですが、すでにデータが1万以上あるので、それを全て変更するのは流石に無理があるかと
>
> こんにちは。
> 指定したデータ番号を強制的に上位にする改造です。
>
> db-s.cgiのSearchサブルーチン内を以下のように修正します。
> my@RANK=(*,*,*);の*部分にデータ番号を入れます。
>
> }if(@code>=1){
> $code=join('or',@code);
> $code='@HitNums=sort{'.$code.'}@HitNums;';
> eval$code or &Error('ソートに失敗しました。');
> ## 強制ソート
> my@RANK=(*,*,*); #上位から表示したいデータ番号順
> my@TMP;
> foreach my$num(@RANK){
> for(my$i=0; $i<@HitNums; $i++){
> if($num==$HitNums[$i]){
> push(@TMP,$num);
> splice(@HitNums,$i,1);
> last;
> }
> }
> }unshift(@HitNums,@TMP);
> ## END
> }if($FORM{SearchMax2} and @HitNums>$FORM{SearchMax2}){
> ご参考になれば幸いです。

ありがとうございます。
一つだけ、データ番号ではなく登録データで(10種類ほど)は出来ないでしょうか?
Posted by Bear
at 2012/11/18(日) 13:26
Re:検索結果のソート
> ありがとうございます。
> 一つだけ、データ番号ではなく登録データで(10種類ほど)は出来ないでしょうか?

この改造の中では不可能です。
この改造は、AmigoDatabaseの標準検索、ソート終了後に強制的に指定データを優先に並び替えているだけですので、データ内容にまで参照は行っていません。
※AmigoDatabaseは、検索時は該当データの番号のみをリストし、表示する際にその番号リストからデータ内容を表示するような設計になっています。サーバー負荷を軽減する為にこういう設計になっていると思われます。
Access: 1,219,874
 
ソーシャルブックマーク: Yahoo!ブックマーク Google Bookmarks はてなブックマーク Livedoorクリップ @niftyクリップ FC2ブックマーク Buzzurl Delicious トピックイット newsing it!