お世話になってます。
よろしくお願いいたします。
環境
python3.7
sqlite3
bottle
やりたいこと
スケジュール管理のプログラムを作っています。
スケジュールの進捗状況をプログラム側に渡したいのですが、一括で動的に取得する方法が分かりません。
以下は画面のスクショですが、ステータス列のプルダウンで項目を選び、ステータス更新をクリックするとそれぞれ反映されるように考えています。
html側では次のように渡しています。
html
1<table> 2 <tr> 3 <td class="date">日付</td> 4 <td class="time">時間</td> 5 <td class="status">ステータス</td> 6 <td class="header">予定</td> 7 % for i in data_list: 8 <tr> 9 <td><a href="/edit/{{i["id"]}}">{{i["date"]}}</a></td> 10 <td>{{i["time"]}}</td> 11 <td> 12 <form method="POST" action="/update/{{i["id"]}}"> 13 <select name="status" value="{{i["status"]}}"> 14 % if i["status"] == "-": 15 <option value="-" selected>-</option> 16 % else : 17 <option value="-">-</option> 18 % end 19 % if i["status"] == "完了": 20 <option value="完了" selected>完了</option> 21 % else : 22 <option value="完了">完了</option> 23 % end 24 % if i["status"] == "キャンセル": 25 <option value="キャンセル" selected>キャンセル</option> 26 % else : 27 <option value="キャンセル">キャンセル</option> 28 % end 29 </form> 30 </td> 31 <td>{{i["header"]}}</td> 32 </tr> 33 % end 34 <input type="submit" valu![イメージ説明](f469ba5c6de549abc0a204131c90cc35.png)タス更新"> 35</table>
プログラム側
python3
1from bottle import route, run, template, redirect, request 2import sqlite3 3 4db = "maindata.db" 5conn = sqlite3.connect(db) 6c = conn.cursor() 7create = "CREATE TABLE if not exists scheduler (id INTEGER PRIMARY KEY,date text,time text,header text,status text,body text)" 8c.execute(create) 9conn.commit() 10conn.close() 11 12@route("/") 13def index(): 14 input_data_list = [] 15 conn = sqlite3.connect(db) 16 c = conn.cursor() 17 select = "select * from scheduler" 18 c.execute(select) 19 for row in c.fetchall(): 20 input_data_list.append({"id":row[0],"date":row[1],"time":row[2],"header":row[3],"status":row[4],"body":row[5]}) 21 conn.commit() 22 conn.close() 23 return template("index",data_list=input_data_list) 24 25@route("/update/<i_id>",method="POST") 26def update(i_id): 27 data_01 = request.forms.getunicode("date") 28 data_02 = request.forms.getunicode("time") 29 data_03 = request.forms.getunicode("header") 30 data_04 = request.forms.getunicode("status") 31 data_05 = request.forms.getunicode("body") 32 conn = sqlite3.connect(db) 33 c = conn.cursor() 34 sql = "update scheduler set date=?,time=?,header=?,status=?,body=? where id =?" 35 c.execute(sql,(data_01,data_02,data_03,data_04,data_05,i_id,)) 36 conn.commit() 37 conn.close() 38 return redirect("/")
現在の状況
上記の内容でステータス更新を実行すると、次のように反映されます。
・id=1のステータスのみ更新、2以降は変化なし
・id=1のステータス以外はNoneで上書き
以上です。
登録したスケジュールそれぞれで選択したステータスが一括で更新されればと思うのですが、
お気づきのところがあればご指摘いただけると助かります。
どうぞよろしくお願いいたします。
あなたの回答
tips
プレビュー