$5 ファイルからの入力

5-3 簡単なリレーショナルデータベース

スーパーカーの例を使って、簡単なリレーショナルデータベースを作ってみましょう。 リレーショナルデータベースの考え方は、Perl編のページを見て下さい。
ポイントは、連想配列を使うことです。CGI全体を見ましょう。

  1: #! /usr/local/bin/ruby
  2: 
  3: HTML1 = "<HTML><HEAD><TITLE>スーパーカー</TITLE></HEAD><BODY>
  4:  <H2>スーパーカー</H2><TABLE BORDER>
  5: <TR><TH>メーカー</TH><TH>名前</TH><TH>排気量</TH><TH>馬力/回転</TH><TH>最高速度</TH></TR>"
  6: 
  7: HTML2 = "</TABLE></BODY></HTML>"
  8: makername = Hash.new()
  9: makerurl = Hash.new()
 10: table = []
 11: 
 12: filem = open('maker.text', 'r')
 13: linesm = filem.readlines()
 14: 
 15: filec = open('car.text', 'r')
 16: linesc = filec.readlines()
 17: 
 18: for linem in linesm
 19:   key, name, url = linem.split("\t")
 20:   makername[key] = name
 21:   makerurl[key] = url
 22: end
 23: 
 24: for linec in linesc
 25:   key, name, engine, power, speed = linec.split("\t")
 26:   tline = "<TR><TD><A HREF=\"#{makerurl[key]}\">#{makername[key]}</A></TD>
 27:   <TD>#{name}</TD><TD>#{engine}</TD><TD>#{power}</TD><TD><B>#{speed}</B></TD></TD>\n"
 28:   table = table.push(tline)
 29: end
 30: 
 31: print "Content-Type: text/html\n\n"
 32: print HTML1
 33: print table
 34: print HTML2

注意点だけ述べます。
7、8行目で、空の連想配列を作るために、Rubyでは「Hash.new()」というメソッドを使います。
18、24行目で、前回発見した、split関数から配列の要素を個別に取り出す方法を使ってます。
25、26行目は、変数を文字列に含ませる方法を使ってます。


Previous: 5-2 タブ区切りデータから表をつくる

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net