timohei.net / Opintojaksot
/ Älykkään sähkölaitteen projekti
/ Tietokanta
/
Web-lomake-kyselyn malliratkaisu
Hakulomake lt-lomake.html
<html>
<head>
</head>
<body>
<h1>Lämpötilatietojen haku</h1>
<form action="lue_tiedot.html" method="get">
<table>
<tr>
<th>Alaraja:</th>
<td><input type="text" name="alaraja"></td>
<td rowspan=2><input type="submit" value="Hae"></td>
</tr><tr>
<th>Yläraja:</th>
<td><input type="text" name="ylaraja"></td>
</tr>
</table>
Python-skripti lt.py
#!/usr/bin/env python
import MySQLdb
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from flask import Flask, render_template, request
app = Flask(__name__) # Create a Flask object Flask
tietokanta = MySQLdb.connect("localhost", "monitor", "salakala", "ltmittaukset", charset='utf8', use_unicode=True)
kursori=tietokanta.cursor()
@app.route("/ltk") # Lampotilakyselylomake
def ltk():
return render_template('lt-lomake.html') # Send text to the browser
@app.route("/lue_tiedot.html") # Kyselylomakkeen tiedot välitetään tanne, tietokantahaku suoritetaan ja tulokset esitetään
def ltlomake():
alaraja = request.args.get("alaraja"); # Lomakkeen alaraja-nimisen input-kentän sisältö
ylaraja = request.args.get("ylaraja"); # Lomakkeen ylaraja-nimisen input-kentän sisältö
if alaraja == "": # Mikäli alaraja-kenttä on lomakkeessa jätetty tyhjaksi,
alaraja = "0" # asetetaan alarajaksi nolla.
if ylaraja == "": # Mikäli ylaraja-kenttä on lomakkeessa jätetty tyhjaksi,
ylaraja = "100" # asetetaan ylärajaksi sata.
kursori.execute ("SELECT * FROM lampodata WHERE lampotila > "+alaraja+" AND lampotila < "+ylaraja+" ORDER BY lampotila")
# Tietokantakysely, johon upotetaan lomakkeelta saadut rajat.
# Tulokset lajitellaan lampotila-sarakkeen arvojen mukaan (ORDER BY)
data = kursori.fetchall() # Haetaan tiedot tietokannasta ja sijoitetaan taulukkomuuttujaan data
return render_template('lt-hae.html', d=data, a=alaraja, y=ylaraja)
# Kutsutaan template-pohjaa lt-hae.html ja välitetään
# sille tietokannan tiedot (data muuttujana d) sekä alaraja
# ja yläraja muuttujina a ja y.
if __name__ == "__main__": # Things to do if this script is run from console
app.run(host='0.0.0.0', port=80, debug=True) # Set the server to listen to port 80 and report errors
Hakutulokset näyttävä template lue_tiedot.html
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Lämpötilahaun tulokset</h1>
<h4>Hakuehdot</h4>
<ul>
<li>Alaraja: {{ a }}
<li>Yläraja: {{ y }}
</ul>
<table border=1>
<tr><th>Päiväys</th><th>Aika</th><th>Tila</th><th>Lämpötila</th></tr>
{% for rivi in d %}
<tr>
{% for kentta in rivi %}
<td>{{ kentta }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
<p><a href="/ltk">Takaisin hakulomakkeelle</a></p>
</body>
</html>
Päivitetty 28.8.2022
© Timo Heikkinen | timo piste heikkinen at oamk piste fi