• ベストアンサー

検索のソートについて

以前phpのカテゴリ内で以下のようなQ&Aをみつけましたが、まったく同じ状況で使用する言語がperlの場合どのようにすればいいのでしょうか?どなたか教えて下さい。 "PHP+MySQLを勉強中です。 例えば、商品テーブルに商品ID、商品名、価格、在庫数の4つのフィールドがあって、その表の各名称をクリックするとソート(例:オークションなどで現在価格をクリックするとソートなど[select * from 商品 order by 価格 asc])できるスクリプトをどのように作成すればよいか教えて下さい。" "shohin.phpで商品一覧を表示するとして、フィールド各名称のリンクを <a href="shohin.php?sort=1">商品ID</a><a href="shohin.php?sort=2">商品名</a>・・・ のようにします。" あとはswitch文を使ってget値(sort=の値)別にクエリーを変えるだけです。

質問者が選んだベストアンサー

  • ベストアンサー
  • witchking
  • ベストアンサー率42% (6/14)
回答No.2

既に有用なモジュールが示されていますが、具体例を挙げると以下の様な感じになります。 use DBI; use CGI; my $dbh = DBI->connect('DBI:mysql:データベース名:ホスト名','ユーザ名','パスワード'); my $query = CGI->new; my $sort = $query->param('sort'); if($sort == 1) { my($shohinid,$shohinmei,$kakaku,$zaikosuu); my $sth = $dbh->prepare("SELECT 商品ID,商品名,価格,在庫数 FROM 商品 ORDER BY 商品ID ASC"); $sth->execute; $sth->bind_columns(undef,\($shohinid,$shohinmei,$kakaku,$zaikosuu)); while($sth->fetch) { print "商品ID:$shohinid 商品名:$shohinmei 価格:$kakaku 在庫数:$zaikosuu\n"; } } elsif($sort == 2) { #以下上と同じ様な感じ }

briantaphy
質問者

お礼

具体例まで挙げていただいて有難うございます。早速試してみます。

その他の回答 (1)

  • poppo64
  • ベストアンサー率57% (11/19)
回答No.1

DBには詳しくありませんが、まず MySQL を Perl から扱うために DBD::mysql モジュールなどの手段が必要になります。 あとは大体一緒ですが Perl には switch 文がありませんので if ~ else を switch 文ぽく使って実現すればよいのではないでしょうか。 ↓DBD::mysql ドキュメントの和訳

参考URL:
http://perldoc.jp/docs/modules/DBD-mysql-2.1026/DBD/mysql.pod
briantaphy
質問者

お礼

この参考URLは勉強になりますね。教えて頂いて有難うございます。

関連するQ&A