ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

CGIコミュのPYTHON CGI

  • mixiチェック
  • このエントリーをはてなブックマークに追加
CGIプログラムなのですが、ボタンを押すごとにCSVから違う質問を取り出すようにしたいのですが、なぜだか一回だけは変わるのですが、二回目、三回目とボタンを押しても変わりません。

どなたかわかる方いらっしゃらないでしょうか?

コメント(8)

コードを見てないのでわかりませんが、
一回処理をした後で変数の値は0に戻ってるってことでしょうか。
どこかで変数の値を保持しておくというのがうまく行ってないんじゃないですか。
>レモンさん、お返事ありがとうございます。

レモンさんのおっしゃる通りだと思うのですが、まだまだその辺ことが解らなくてすみません。

コードは一応書いたのですが、これにどのように変数を加えていったらいいのかわかりません。

後は変数iを足していくだけで、クリックごとに次の質問をCSVファイルから出せるようにできると思うのですが、、、

おわかりでしたらご指導の方宜しくお願い致します。


>>>>>>>>>>>>>>>>>>>>>>>
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
質問を取得する
'''
html = '''Content-Type: text/html

<html>
<head>
  <title>CSVから質問を取得する</title>
</head>
<body>
<h1>CSVからの質問を得る</h1>
<p>質問は、「%s」です。</p>
<form action="test06.cgi" method="post">
  <input type="submit" name="btn1" value="[1]" />
  <input type="submit" name="btn2" value="[2]" />
  <input type="submit" name="btn3" value="[3]" />
</form>
</body>
</html>
'''



import csv

filename = "question.csv"
csvfile = open(filename)
j=0
for row in csv.reader(csvfile):
 j=j+1
 tmpcol = []
 for col in row:
   tmpcol.append(col)

i=0

import cgi
f = cgi.FieldStorage()
if f.getfirst('btn1'):
 i=i+1
 btn = tmpcol[i]
elif f.getfirst('btn2'):
 i=i+1
 btn = tmpcol[i]
elif f.getfirst('btn3'):
 i=i+1
 btn = tmpcol[i]
else:
  btn = tmpcol[i]
print html % btn
>milwaukeeさん
一度受けた変数の値を再度戻してやるには、<form>〜</form>のなかで、<input type=hidden〜>で名前と値を送ってやる必要があります。
一度受けて読み込んで変数に代入するなり1を足す処理をして、新しく書かれるHTMLの中で、その値を名前と一緒に、hiddenの形で、form内に書いてやれば返すことができます。
でも、その場合は、お勧めは、一個のformにされるよりも、手間だけど、ボタン一個を一個のformとなるように書き換えるほうがわかりやすいと思いますよ。
それぞれの書き方があるので、今のように書いていても問題はないですけど。
>レモンさん、

hiddenというのは聞いたことがなかったのでありがたいです。

つまり、下記を3回繰り返すといったことでしょうか?

ですがやってみたらエラーが出ました。。。

またご教授お願いできませんでしょうか?


>>>>>>>>>>>>>>>

<form action="test06.cgi" method="post">
  <input type="hidden" name="btn1" value="[1]" />
import cgi
f = cgi.FieldStorage()
if f.getfirst('btn1'):
 i=i+1
 btn = tmpcol[i]
</form>

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

CGI 更新情報

CGIのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング