Web-lomake-kyselyn malliratkaisu
453 523 618
<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>
#!/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
<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>