Tietokoneiden näyttöjä, joissa näkyy kuvaa automaatiolaboratorion laitteistosta. Monitoreiden takana näkyy sama laitteisto kuin kuvissa.

timohei.net / Opintojaksot / 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

<<  Edellinen
(8) Datan lukeminen web-lomake-kyselyllä
Sivu 9/9Takaisin ensimmäiseen >>
(1) Tietokanta
© Timo Heikkinen | timo piste heikkinen at oamk piste fi