ich habe hier jetzt noch mal meinen aktuellen Code.
Ich habe einen Teil von dem zuletzt geposteten übernommen und die o.g. Dinge angepasst.
Dazu habe ich eine Funktion eingebaut, wenn der User bereits für den heutigen Tag eine Registrierung hat bzw sich noch nicht vom alten Stand ausgelogt hat. Soll das Skript ihm das sagen und abbrechen.
Schöner wäre hier aber, das main() von vorne beginnt und dem User eine Meldung ausgibt.
Da wäre ich dann sicherlich bei
Code: Alles auswählen
while True
Dann wäre mir noch lieb, wenn ich diese Auswahl angezeigt bekomme, wo der User die ID des Standes eingibt, das er nur die aktuell gezeigten eingeben kann, sonst Fehlermeldung und Aufforderung zur neueingabe
Master Frage! Wie baue ich das alles so um das es eine Grafische Oberfläche wird?
Code: Alles auswählen
#!/usr/bin/python3
import sys
import os
import RPi.GPIO as gpio
import MFRC522
import MySQLdb
import MySQLdb.cursors
from contextlib import closing
import time
DB_HOST = "XXX"
DB_USER = "XXX"
DB_PASSWORD = "XXXX"
def connect():
return MySQLdb.connect(host=DB_HOST, port=3307,
user=DB_USER , passwd=DB_PASSWORD, db="Schiessbuch",
cursorclass=MySQLdb.cursors.DictCursor)
def benutzer_anzeigen(db):
print()
with closing(db.cursor()) as cursor:
cursor.execute("""Select tbl_Benutzer.ID, tbl_Benutzer.UName, tbl_Benutzer.UVorname
FROM tbl_Benutzer INNER JOIN tbl_Karten ON tbl_Benutzer.ID = tbl_Karten.UserID""")
for row in cursor:
print( row["ID"], row["UName"], row["UVorname"])
def benutzer_registriert(db, user_id):
print()
with closing(db.cursor()) as cursor:
cursor.execute("""SELECT tbl_Schiesstand.UserID
FROM (tbl_Benutzer INNER JOIN tbl_Karten ON tbl_Benutzer.ID = tbl_Karten.UserID)
INNER JOIN (tbl_Stand INNER JOIN (tbl_Kaliber INNER JOIN tbl_Schiesstand ON tbl_Kaliber.ID = tbl_Schiesstand.KaliberID)
ON tbl_Stand.ID = tbl_Schiesstand.StandID) ON tbl_Benutzer.ID = tbl_Schiesstand.UserID
Where tbl_Schiesstand.UserID = %d AND (DATE(tbl_Schiesstand.Beginn) = CURDATE() AND NOT DATE(tbl_Schiesstand.Ende) = CURDATE())""" % (user_id))
if cursor.fetchone():
print("Du bist bereits registriert")
time.sleep(5)
main()
else:
pass
def stand_anzeigen(db):
print()
with closing(db.cursor()) as cursor:
cursor.execute("Select ID, StandLang From tbl_Stand")
for row in cursor:
print( row["ID"], row["StandLang"])
def kaliber_anzeigen(db, stand_id):
print()
with closing(db.cursor()) as cursor:
cursor.execute("""Select tbl_Kaliber.ID, tbl_Kaliber.KaliberLang, tbl_Stand.Standlang
From tbl_Stand INNER JOIN tbl_Kaliber ON tbl_Stand.ID = tbl_Kaliber.StandID
Where tbl_Stand.ID = %s""", (stand_id,))
for row in cursor:
print( row["ID"], row["KaliberLang"])
def schuetze_anlegen(db, user_id, stand_id, platz, kaliber_id, standaufsicht):
print()
with closing(db.cursor()) as cursor:
sql_query = """INSERT INTO `tbl_Schiesstand` (`UserID`, `StandID`, `Platz`, `KaliberID`, `Beginn`, `Standaufsicht`) VALUES (%s, %s, %s, %s, NOW(), %s)"""
data = (user_id, stand_id, platz, kaliber_id, standaufsicht)
cursor.execute(sql_query, data)
db.commit()
print("Du wurdest erfolgreich registriert")
def input_int(prompt):
while True:
try:
print()
return int(input(prompt))
except ValueError:
print("Fehler: Keine Zahl eingegeben.")
def main():
os.system('clear')
print("Schiessbuch")
print()
print("Bitte erfasse deine Daten!")
print()
db = connect()
benutzer_anzeigen(db)
user_id = input_int("Bitte deine User ID eingeben: ")
benutzer_registriert(db, user_id)
stand_anzeigen(db)
stand_id = input_int("Bitte Stand eingeben: ")
kaliber_anzeigen(db, stand_id)
kaliber_id = input_int("Bitte Kaliber eingeben: ")
platz = input_int("Auf welchem Stand schiesst du?: ")
standaufsicht = 0
schuetze_anlegen(db, user_id, stand_id, platz, kaliber_id, standaufsicht)
if __name__ == '__main__':
main()