![]() |
カレッヂ |
質問者 よっしー
投稿日 3/20(火) 09:33:01
ログから順位表を表示させたいのですが 例えば1位〜10位まで順位があった場合、現状ですと 10位〜1位で表に表示してしまってます。 1位〜10位(逆順)で表示したい場合どのように記述すればよいでしょうか? # ページ区切り処理 $start = $page + 1; $end = $page + $p_log; # 記事を展開 open(IN,"$logfile") || &error("Open Error : $logfile"); $top = <IN>; $i=0; $j=0; $flag=0; while (<IN>) { ($no,$name,$magno,$mail,$date,$url) = split(/<>/); if ($reno eq "") { $i++; $j++; } if ($i < $start) { next; } if ($i > $end) { next; } if ($url) { $url = "<<a href=\"http://$url\" target='_top'>HOME</a>>"; } if ($url eq "") { $url = " "; } if ($magno eq "") { $magno = " "; } if ($hosi eq "") { $hosi = " "; } if ($shyouhin eq "") { $shyouhin = " "; } print "<tr><td>$hosi</td><td align=\"right\">$no</td>\n"; print "<td>$name</td><td>$magno</td>\n"; print "<td>$url</td><td>$date</td>\n"; print "<td>$shyouhin</td></tr>\n"; } close(IN); print "</td></tr></table>\n"; $next_page = $page + $p_log; $back_page = $page - $p_log; print "<table align=left cellpadding=0 cellspacing=0><tr>\n"; if ($back_page >= 0) { print "<td><form action=\"$script\" method=\"$method\">\n"; print "<input type=hidden name=page value=\"$back_page\">\n"; print "<input type=submit value=\"前の$p_log件\">\n"; print "</td></form>\n"; } if ($next_page < $i) { print "<td><form action=\"$script\" method=\"$method\">\n"; print "<input type=hidden name=page value=\"$next_page\">\n"; print "<input type=submit value=\"次の$p_log件\">\n"; print "</td></form>\n"; } print "</tr></table>\n"; &footer; # フッタを出力 exit; } |
回答者 羊相談員
[削除]
投稿日 3/21(水) 10:52:33
いくつかわからないことがあるのですが 1.何の値を基準に順位付けを行うのでしょうか? 2.ログファイルは既に順位の低い順に整列されているのでしょうか? 3.もし2が正しいとするとログファイルを順位の高い順に記録しておけば解決しますが、それをしていない、もしくはできない理由にどんなことがあるのでしょうか? |
質問者 よっしー
[削除]
投稿日 3/21(水) 11:47:17
相談にのって頂きありがとうございます。 順位はログに書き込んだ順です。 新しいログが先頭行に書き込まれてたので おっしゃる通りログファイルに書き込む際 最終行に書き込むことにすれば解決しますね。 どうもドジな質問で失礼しました。 また何か行き詰まったらお聞きするかも知れませんが その節はよろしくお願いします。 |
返信(回答)する
Web裏技 |