I am learning Flask/ Python, i got a problem i cannot resolve myself, i have also tried chatgpt but it says everything is correct (but its not working)
I make a webapp where you can type in your name, and a qr-code will be generated and stored in the database (mysql/ xampp)
This is working, i encode to base64 and store it as a blob:
@app.route('/', methods = ['GET', 'POST'])
def skjema():
msg = ''
qr_kode_data = None
if request.method == 'POST':
forNavn = request.form['forNavn']
etterNavn = request.form['etterNavn']
cur = mysql.connection.cursor()
try:
# Generer QR-koden baser på inputdata
data = forNavn + ' ' + etterNavn
qr = qrcode.make(data, box_size=1)
# Lagre QR-koden i en BytesIO buffer
img_buffer = BytesIO()
qr.save(img_buffer)
img_buffer.seek(0)
# Konverter QR-koden til base64
qr_kode_data = base64.b64encode(img_buffer.getvalue()).decode('utf-8')
# Sjekk om bruker allerede eksisterer i databasen
cur.execute("SELECT * FROM qrkode WHERE forNavn = %s AND etterNavn = %s", (forNavn, etterNavn,))
eksisterer_bruker = cur.fetchone()
if eksisterer_bruker:
msg = "Bruker eksisterer fra før av"
else:
# Legg til ny bruker med qrKode i databasen
cur.execute("INSERT INTO qrkode (forNavn, etterNavn, qrKode) VALUES (%s, %s, %s)", (forNavn, etterNavn, qr_kode_data,))
mysql.connection.commit()
msg = "Bruker lagt til i databasen"
#print(qr_kode_data)
finally:
if img_buffer:
img_buffer.close()
cur.close()
# Hent alle brukerne fra databasen
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM qrkode")
alle_brukere = cur.fetchall()
print(alle_brukere)
cur.close()
return render_template('skjema.html', msg=msg, qr_kode_data=qr_kode_data, alle_brukere=alle_brukere)
And this is my show_qr route:
app.route('/qrkoder', methods=['GET', 'POST'])
def vis_qrkoder(brukerID):
cur = mysql.connection.cursor()
cur.execute("SELECT qrKode from qrkode WHERE brukerID = %s",
(brukerID,))
alle_qrKoder = cur.fetchall()
cur.close()
return
render_template('skjema.html',alle_qrKoder=alle_qrKoder)
The problem i am having is that my table in html are showing all the names, but the qr code is not showing, i have testet different code also bruker[3] ect but nothing is working.
table>
<tr>
<th>Fornavn</th>
<th>Etternavn</th>
<th>QR-kode</th>
</tr>
{% for bruker in alle_brukere %}
<tr>
<td>{{ bruker[1] }}</td>
<td>{{ bruker[2] }}</td>
<td><img src="data:image/png;base64,{{ alle_qrkoder }}" alt="QR-kode"></td>
</tr>
{% endfor %}
/table>
I got it to show one qr-code when i registered one user, but now when i want to show all of them, the same code does not work.
I think my main problem is this code.
<tr>
<td>{{ bruker[1] }}</td>
<td>{{ bruker[2] }}</td>
<td><img src="data:image/png;base64,{{ alle_qrkoder }}" alt="QR-kode"></td>
</tr>
because its the showing thats not working, but there also might be something wrong with this:
app.route('/qrkoder', methods=['GET', 'POST'])
def vis_qrkoder(brukerID):
cur = mysql.connection.cursor()
cur.execute("SELECT qrKode from qrkode WHERE brukerID = %s", (brukerID,))
alle_qrKoder = cur.fetchall()
cur.close()
return render_template('skjema.html', alle_qrKoder=alle_qrKoder)