基礎プログラミング II 第 10 回 (CGI ことおぼえ) 「データベースからの削除」 講義ノート目次

消したい場合には、key を指定して、データベースから取り除くことができる。

データベース 変数.delete(key)

例えば、管理者権限で削除するような bbs_admin.rb を作る。 発言の番号は時間の配列要素番号から -1 したものに等しいことを利用する。

入力する部分を取り除き、表示部分だけを残したページを作る。


  :
myprog = "bbs_admin.rb"
  :
 db.transaction do 
  print("<ol>\n")
  for time in db.roots.sort
    if db[time][0] != nil
      printf("<li>%s さん: %s</li>\n", db[time][0], db[time][1].chomp)
    end
  end  
  print("</ol>\n")
  :

次に、削除させる入力部分を作る。


printf("<form method=\"POST\" action=\"./%s\" \n", myprog)
print("<p>削除番号: <input name=\"delno\" maxlength=\"10\"></p>\n")
print("<input type=\"submit\" value=\"送信\">\n")
print("<input type=\"reset\" value=\"リセット\">\n")
print("<\p>\n")
print("</form>\n")

cgi["delno"] に入った番号を整数値とし、時間の配列の該当要素を探す。


no = cgi["delno"].to_i
db.transaction do
   t = db.roots.sort[no-1]  # 入力された時間の配列は第ゼロ要素から開始
   db.delete(t)
end