ラウンジ(兼FAQ掲示板)

あんQの並び順について
過去ログ NO.1165482349
□ ひろたか [2006年12月06日10時52分]
NXerさんいつもご回答いただきまして有難うございます。
動作確認中に少し問題が起こりました。
過去ログにてアンケートを終了は終了ごとそれ以外と並ぶようにしていたのですが、連番表示や10件ごとに表示するようにした為上手く動作していません。
多分、以下の箇所が違うからかなと思いこんでいるのですが、どういう風に訂正すればいいのかわかりません。
どうすればいいでしょうか?
<過去ログ>
# ● sorting by lastmod-key
foreach (sort { $key{$a} <=> $key{$b} } keys %key) { unshift (@sortdir,$_); }
<当方>
foreach (sort {$b <=> $a} @dir) {
if ($_ ne "\." && $_ ne "\.\.") { push (@sortdir,$_); }
□ NXer [2006年12月07日12時25分]

><過去ログ>
# ● sorting by lastmod-key

過去ログの愚案をご検討いただきありがとうございます。NXerです。

プログラミングではソーティング、並べ替えはとても大切なルーチンです。
perlでは sort 関数を使います。配列変数で処理します。ソロバン
でいうご破産(はさん)する、つまり初期化を途中でします。
171の見出しevalは別件・評価のための改造で追加してあります。
当方ではグラフの倍率の問題は発生していません。分母分子が
入れ替わり、1/8が8/1、つまり縮尺が倍率に変化する現象は過去ログ
で調べてください。これは、論理エラーです。

>どういう風に訂正
次の行の後に挿入します。
-------------------------------------------------------
171 else { print "<table>\n<tr><th>番号</th><th>new</th><th>eval</th><th>アンケートテーマ</th><th>開始日</th><th>終了日</th></tr>\n"; }
----------------------------------------------------
# ●newly inserted lines to sort files in the limit-date order新規挿入スクリプト
foreach (@dir) {
if (open(FILE,"$tmp$_")) {
@lines = <FILE>;
close (FILE);
$subject = shift (@lines);
($subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,) =split(/\,/,$subject);
$key{$_} = $limit;#●sortkey setting
}
}
@sortdir=(); #●initialization of sortdir array
foreach (sort { $key{$a} <=> $key{$b} } keys %key) { unshift (@sortdir,$_); }
186 #----------------------上ソート下既存
$count=0;
foreach (@sortdir) {
------------------------------------------
配列は@で表します。次の行は
@sortdir=(); #●initialization of sortdir array 配列をリセットして
最初からデータを格納しています。忘れると、データが2倍になります。
試す必要はありませんが、もし同じデータが2度現れたときは、リセット
しない状態でソートをしたためです。
目的に応じてソートのキーを指定できます。参考書/サイトでは sort を見てください。

上の記述は過去ログとは少し表現など異なるかもしれません。この件は以上です。


suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2008 suepon , All rights reserved. Powered by CGI Script Market.