#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'cgi'
c = CGI.new(:accept_charset => 'utf-8')
#require './panelqr.rb'
require 'sqlite3'
file = "db/point.sq3"
#pq = PanelQR.now
# roy{c115080}% sqlite3 point.sq3 [~/public_html/mycgi/skip/quiz/db]
# SQLite version 3.8.8.2 2015-01-30 14:30:45
# Enter ".help" for usage hints.
# sqlite> .sch
# CREATE TABLE users(id text primary key, name text, creation text);
# CREATE TABLE point(id, keyword text, FOREIGN KEY(id) REFERENCES users(id));
# sqlite> select * from users;
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900
# sqlite> select * from point;
# 1501044365/65675|もっけ
# sqlite> select * from users NATURAL INNER JOIN point;
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900|もっけ
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900|はっこ
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900|
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900|qa1
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900|qa2
# 1501044365/65675|unko|2017-07-26 14:43:14 +0900|qa3
someVALUES1 = "qa1"
someVALUES2 = "qa2"
someVALUES3 = "qa3"
#cookie関係
cookie_id=c.cookies["id"][0]
form_seikai=c["seikai"] #もし正解したら?とかじゃない?
form_name=c["playname"] #名前入力
if cookie_id == nil
newid = Time.now.to_i.to_s + "/" + rand(99999).to_s
id = newid
else
id = cookie_id
end
# idをすぐcookieで相手ブラウザに送る
# 変数の期限を24時間に設定し、expire変数に入れる
expire = (Time.now+24*3600).gmtime.strftime("%a, %d %b %Y %H:%M:%S GMT")
printf("Content-type: text/html; charset=UTF-8\n")
printf("Set-Cookie: id=%s; expires=%s\n\n", id, expire)
db = SQLite3::Database.new(file)
db.execute("PRAGMA foreign_keys=on")
db.execute("CREATE TABLE IF NOT EXISTS " +
"users(id text primary key, name text, creation text)")
db.execute("CREATE TABLE IF NOT EXISTS " +
"point(id, keyword text, FOREIGN KEY(id) REFERENCES users(id),UNIQUE(id,keyword))")
if form_seikai > "" && id > ''# もし正解したら
db.execute("DELETE FROM point WHERE id=?", id)
end
# cookie関連はここまでだと思っている
################################################################## ユーザ登録
playname = form_name
if form_name > "" # フォームでnameが送られたならそれ優先
now = Time.now.strftime("%F %T")
db.execute("REPLACE INTO users VALUES(?, ?, ?)", id, form_name, now);
else # フォームでnameなければdbから
dbn = db.execute("SELECT name from users WHERE id=?", id)[0]
if dbn != nil && dbn[0]
playname = dbn[0] # データベースからのの名前をプレイ名とする
end
end
if playname == ""
print(<<-EOF)
<form action="#{File.basename($0)}" method="POST">
<p>プレイ名を入れてください:
<input type="text" name="playname">
<input type="submit" valusomeVALUS1 = qa1
e="送信">
<input type="reset" value="リセット">
</form>
EOF
exit
end
printf("<h1>%sさんのチャレンジ</h1>\n", playname)
################################################################## 初回処理
number = c["rd"]
img = c["img"]
def outinput(value, name)
printf("<label><input type=\"radio\" name=\"rd\" value=\"%s\">%s</label>", value, name)
end
def imgsrc(img)
printf("<img src=\"%s\">", img)
end
if number == "" #初回起動時のみ
number = "1" #numberに"1"を代入
end
print(<<-EOF)
<!DOCTYPE html>
<html lang="ja">
<head><title>簡単</title>
<link rel="stylesheet" type="text/css" href="" >
<meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body>
EOF
x = {"1" => ["<h1>第一問<br></h1>", {"2" => "舞鶴公園<br>", "3" => "日和山公園<br>", "4" => "飯森山公園<br>"}],
"2" => ["<h1>第一問<br></h1>", {"2" => "舞鶴公園<br>", "3" => "日和山公園<br>", "4" => "飯森山公園<br>"}],
"3" => ["<h1>正解!!!!<br></h1>", "<p>動画の視聴は自分の判断で・・・</p>"],
"4" => ["<h1>第一問<br></h1>", {"2" => "舞鶴公園<br>", "3" => "日和山公園<br>", "4" => "飯森山公園<br>"}],
"5" => ["<h1>第二問<br></h1>", {"6" => "月山<br>", "7" => "羽黒山<br>", "8" => "鳥海山<br>"}],
"6" => ["<h1>第二問<br></h1>", {"6" => "月山<br>", "7" => "羽黒山<br>", "8" => "鳥海山<br>"}],
"7" => ["<h1>第二問<br></h1>", {"6" => "月山<br>", "7" => "羽黒山<br>", "8" => "鳥海山<br>"}],
"8" => ["<h1>正解!!!!<br></h1>", "<p>動画の視聴は自分の判断で・・・</p>"],
"9" => ["<h1>第三問<br></h1>", {"10" => "山居倉庫<br>", "11" => "ただの倉庫<br>", "12" => "百葉箱<br>"}],
"10" => ["<h1>正解!!!!<br></h1>", "<p>動画の視聴は自分の判断で・・・</p>"],
"11" => ["<h1>第三問<br></h1>", {"10" => "山居倉庫<br>", "11" => "ただの倉庫<br>", "12" => "百葉箱<br>"}],
"12" => ["<h1>第三問<br></h1>", {"10" => "山居倉庫<br>", "11" => "ただの倉庫<br>", "12" => "百葉箱<br>"}],
"13" => []
}
y = {"1" => "hiyori.png<br>"
}
print"<html><head><title>クイズ</title></head><body>\n"
print"<form method=\"POST\" action=\"./kantan.rb\">\n"
q = x[number]
#ifで場合分け初めてその問題に行く、正解、不正解1、不正解2,の4通り
if number == "1" || number == "5" || number == "9" #初めて挑戦
printf("<p>%s</p>", q[0])
if number == "1"
printf("<p><a href=\"hiyori.jpg\"><img src=\"hiyori_mini.jpg\" alt=\"hiyori\" height=\"300px\" width=\"300px\"></a></p>")
elsif number == "5"
printf("<p><a href=\"tyokai.jpg\"><img src=\"tyokai_mini.jpg\" alt=\"tyokai\" height=\"333px\" width=\"500px\"></a></p>")
elsif number == "9"
printf("<p><a href=\"sannkyo.jpg\"><img src=\"sannkyo_mini.jpg\" alt=\"sannkyo\" height=\"375px\" width=\"500px\"></a></p>")
end
for v, sel in q[1]
outinput(v, sel)
end
print"<input name=\"ok\" type=\"submit\" value=\"送信\">\n"
print"<input name=\"ng\" type=\"reset\" value=\"リセット\">\n"
elsif number == "3" || number == "8" || number == "10" #正解
printf("%s", q[0])
printf("%s", q[1])
if number == "3"
print("<p>")
printf("<video controls wight=\"320\"height=\"240\"><source src=\"skipseikai1.mp4\"></video>")
print("<\p>")
printf("<label><input type=\"radio\" name=\"rd\" value=\"5\">次へ進もう<br></label>")
db.execute("REPLACE INTO point VALUES(?,?)",id,someVALUES1)
elsif number =="8"
print("<p>")
printf("<video controls wight=\"320\"height=\"240\"><source src=\"skipseikai4.mp4\"></video>")
print("</p>")
printf("<label><input type=\"radio\" name=\"rd\" value=\"9\">次へ進もう<br></label>")
db.execute("REPLACE INTO point VALUES(?,?)",id,someVALUES2)
elsif number == "10"
print("<p>")
printf("<video controls wight=\"320\"height=\"240\"><source src=\"skipseikai5.mp4\"></video>")
print("<\p>")
printf("<label><input type=\"radio\" name=\"rd\" value=\"13\">次へ進もう<br></label>")
db.execute("REPLACE INTO point VALUES(?,?)",id,someVALUES3)
end
printf("<input type=\"submit\" value=\"次へ\">")
elsif number == "2" || number == "6" || number == "11" #不正解1
print("<h1>残念!もう一度挑戦だーー</h1>")
printf("<p>%s</p>", q[0])
if number == "2"
printf("<p><a href=\"hiyori.jpg\"><img src=\"hiyori_mini.jpg\" alt=\"hiyori\" height=\"300px\" width=\"300px\"></a></p>")
elsif number == "6"
printf("<p><a href=\"tyokai.jpg\"><img src=\"tyokai_mini.jpg\" alt=\"tyokai\" height=\"333px\" width=\"500px\"></a></p>")
elsif number == "11"
printf("<p><a href=\"sannkyo.jpg\"><img src=\"sannkyo_mini.jpg\" alt=\"sannkyo\" height=\"375px\" width=\"500px\"></a></p>")
end
for v, sel in q[1]
outinput(v, sel)
end
print"<input name=\"ok\" type=\"submit\" value=\"送信\">\n"
print"<input name=\"ng\" type=\"reset\" value=\"リセット\">\n"
elsif number == "4" || number == "7" || number == "12" #不正解2
print("<h1>惜しい!もう一度やってみよーー</h1>")
printf("<p>%s</p>", q[0])
if number == "4"
printf("<p><a href=\"hiyori.jpg\"><img src=\"hiyori_mini.jpg\" alt=\"hiyori\" height=\"300px\" width=\"300px\"></a></p>")
elsif number == "7"
printf("<p><a href=\"tyokai.jpg\"><img src=\"tyokai_mini.jpg\" alt=\"tyokai\" height=\"333px\" width=\"500px\"></a></p>")
elsif number == "12"
printf("<p><a href=\"sannkyo.jpg\"><img src=\"sannkyo_mini.jpg\" alt=\"sannkyo\" height=\"375px\" width=\"500px\"></a></p>")
end
for v, sel in q[1]
outinput(v, sel)
end
print"<input name=\"ok\" type=\"submit\" value=\"送信\">\n"
print"<input name=\"ng\" type=\"reset\" value=\"リセット\">\n"
elsif number == "13"
print("結果発表")
end
print"</form>\n"
print "</body>\n"
print "</html>\n"