KENT-WEB サポートコーナー 過去ログ [ 0442 ]


記事No: 8568
投稿日: 2011/06/16(Thu) 17:59:51
タイトルアンケートを順位でなく項目名でソート出来ないでしょうか?
ID情報: MORGEN
投稿者: モルゲン
URLhttp://ashiy938.rsjp.net/enq/enq.cgi

お忙しいところ恐れ入ります。
Web Enquete を使用させて頂こうとしているのですが、現在はデータをソートするには順位でソートするしかできないようです。
私と致しましては、例えばイベントの開催日の人気投票をした時に

4月1日
4月10日
7月6日
8月31日

などと選択肢を入れた場合に順位でソートされると日にち順がバラバラになって困ってしまいます。

それならばソート機能を使わなければいいとお思いかもしれませんが、その場合、後からメンテで「6月9日」などという項目を追加した場合は、上記で言えば「8月31日」の下に「6月9日」が来てしまいます。

これを避けるために、できれば、順位ではソートされず、項目メンテをする時に項目の昇順でソートされるように出来るとありがたいのですが、何とかならないでしょうか?

頭に英数字が入らない項目をソートするのは難しいのは承知しておりますが、項目名の頭に数字が入っていれば何とかならないかと考えております。

難しいようでしたら、投票画面で投票以外の何かのボタンを作ってそれをクリックすることで項目順ソートが出来るとありがたいのですが。

恐れ入りますが改造方法をご教示頂けるとありがたく存じます。
これが実現すれば私だけでなく他の方々でもメリットのある機能アップになるかと存じますので、どうかよろしくお願い致します。


記事No: 8572
投稿日: 2011/06/17(Fri) 03:21:54
タイトルRe: アンケートを順位でなく項目名でソート出来ないでしょう
ID情報: chat
投稿者: ひらり

enq.cgiの360行目付近に

if ($sort) {
@data = @data[sort {$sort[$b] <=> $sort[$a]} 0 .. $#sort];
}

というのがあるので、これを以下のようにしてみたらどうでしょうか?

if ($sort) {
my @tmp;
@tmp = map {(split /<>/)[1]} @data;
@data = @data[sort {$tmp[$a] cmp $tmp[$b]} 0 .. $#tmp];
}

項目を追加したときにはソートされませんが、誰かが投票するとおそらくソートされるはずです。
順位のところは無視してください。順位まできちんとやりたい場合は誰かほかの人にお願いしてください。
得票数でソートしないのならいっそのこと順位の項目を削除してみるのもいいかもしれませんね。
バックアップをとってから試してください。

参考
Perlメモ
ttp://www.din.or.jp/~ohzaki/perl.htm


記事No: 8727
投稿日: 2011/07/05(Tue) 08:48:12
タイトルありがとうございました
ID情報: MORGEN
投稿者: モルゲン

先日はどうもありがとうございました!

ご教示頂いた方法でソートが可能になり、更に投票画面の選択肢リストの下に「ソート」というラジオボタンをダミー選択肢としてつけて、これが選ばれた時には集計結果に記録されないように細工することで無投票ソートも実現しました。

どうもお世話になりました。


[検索ページ]