電子書籍の厳選無料作品が豊富!

Yahooのトップページのトピックスをクリックすると、
そのトピックスにはコメントができるものがあります。
(一種の掲示板ですよね)
そこには、「私もそう思う」「私はそう思わない」
というボタンがあります。
そして、「並べ替え」「そう思う順」「そう思わない順」
「注目順」「共感順」というボタンがあって、並べ替えが
できるようになっています。
このような”掲示板”を作るにはどうしたらいいのでしょうか?

一応、「Perl/CGI入門」のような本を読んでみましたが、
「並べ替え」が出来るような記述は見当たりませんでした。

もっと、たくさん本を読んで勉強すれば出来るのかもしれませんが、
やみくもに本を買うのは得策ではないと思うので、
経験者の方、知識のある方のアドバイスをいただけたら
幸いです。
どうか、ご教授願います。

A 回答 (2件)

#!/usr/bin/perl -T


use warnings;
use strict;
use utf8;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use CGI::Pretty;

my @threads = (
{ name => 'AAA',
date => '2009-01-03',
subject => '333',
},
{ name => 'BBB',
date => '2009-01-02',
subject => '111',
},
{ name => 'CCC',
date => '2009-01-01',
subject => '222',
},
);

my $q = CGI->new();

my ($sort_key) = $q->param('sort_key');
if (( !defined $sort_key )
|| ( ( $sort_key ne 'name' )
&& ( $sort_key ne 'date' )
&& ( $sort_key ne 'subject' ) )
)
{
$sort_key = 'name';
}

my @tables;
foreach my $thread ( sort { $a->{$sort_key} cmp $b->{$sort_key} } @threads ) {
push @tables,
$q->p(
"name = $thread->{name}, date = $thread->{date}, subject = $thread->{subject}"
);
}

print $q->header( -charset => 'UTF-8' ),
$q->start_html(
-lang => 'ja',
-title => 'Sort'
),
$q->a( { -href => $ENV{SCRIPT_NAME} . '?sort_key=name' }, 'Sort Name' ),
$q->br,
$q->a( { -href => $ENV{SCRIPT_NAME} . '?sort_key=date' }, 'Sort Date' ),
$q->br,
$q->a( { -href => $ENV{SCRIPT_NAME} . '?sort_key=subject' },
'Sort Subject' ),
$q->br,
@tables,
$q->end_html;
    • good
    • 0

各々の投稿データが、連想配列になります。



その連想配列の集まりが、あるキーに従ってソートされればいいんですよね。

CPANに Sort::MultipleFieldsモジュールというのがありますが、これで如何でしょうか。

参考URL:http://search.cpan.org/dist/Sort-MultipleFields- …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!