一行入力フォームに数字が入力されたら、SQLiteにてデータベースから検索し、該当する日本語名を表示させたいです。
入力フォームのアクション属性で飛んだCGIに最初のページと同じHTMLを書き、検索・情報取得後にデータを表示させたい場所へ文字を埋め込む、というやり方は知ることができました。
しかし、これですと、URLがCGIのものに変わってしまいます。
URLを遷移させることなく、一行入力フォームの内容をすぐに検索、結果を表示させる、ということは可能なのでしょうか?
-追記-
まずinput.pyで各種情報を入力しますが、この中の「活動場所」に数字を入れた際、それを「basyoID」として認識し、basyo.dbに入っているデータから「basyoNAME」を検索、それを直ちに表示させたいのです。
input.pyがこちらです。
python
1#!/usr/local/bin/python3 2# -*- coding: utf-8 -*- 3 4import sys 5import io 6import sqlite3 7import cgi 8import cgitb 9cgitb.enable() 10# 文字化け回避 11sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 12 13# HTMLここから 14#print("Content-type: text/html; charset=utf-8") 15print('Content-Type: text/html; charset=UTF-8\n') 16print( 17""" 18<html lang="ja"> 19<head> 20 <meta charset="utf-8"> 21<TITLE></TITLE> 22</HEAD> 23<BODY> 24 25<FORM name="form" method="post" action="basyo_kensaku.py"> 26<P>避難場所</P> 27<P>活動場所ID</P> 28<INPUT size="8" type="text" maxlength="8" required name="basyoID"> 29<P>上の入力フォームにIDを入力したら、この場所にbasyo.dbから検索した場所を表示させたいです。</P> 30<BR> 31</BODY> 32</HTML> 33""" 34) 35 36# データベース接続 37conn = sqlite3.connect('basyo.db') 38c = conn.cursor() 39# テーブル作成 40c.execute('CREATE TABLE IF NOT EXISTS basyo(basyoID integer, basyoNAME text);') 41
続いて、場所を検索させるbasyo_kensaku.pyがこちらです。
python
1#!/usr/local/bin/python3 2# -*- coding: utf-8 -*- 3 4import sys 5import io 6import sqlite3 7import cgi 8import cgitb 9cgitb.enable() 10 11# 文字化け回避 12sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 13 14# データベースに接続する 15conn = sqlite3.connect('basyo.db') 16c = conn.cursor() 17 18#formにセットされた値を取得 19form = cgi.FieldStorage() 20basyoID = form.getfirst('basyoID','') 21#basyoIDでbasyo.dbを検索 22sql = ('SELECT basyoNAME from basyo where basyoID=' + basyoID) 23c.execute(sql) 24basyoNAME = c.fetchone
以上、何卒ご教授下さいませ。
あなたの回答
tips
プレビュー