Suchfunktion
- __blackjack__
- User
- Beiträge: 13121
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@_verzweifelter_Tim: Na dann schreibt da nicht einfach ``{{ ergebnisse }}`` sondern schaut Euch in der Dokumentation an wie man im Template eine Schleife drüber schreibt, so dass man dann auch die HTML-Tabelle erstellen/füllen kann.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 8
- Registriert: Sonntag 27. Januar 2019, 18:12
Hi black jack. Wir haben die Dokumentation nun öfters angeschaut und haben es versucht. Jedoch haben wir es leider nicht hinbekommen alle Ausgaben einzeln auszugeben. Falls du weißt wie es funktioniert, wäre es möglich das du unseren Code so veränderst das es Funktion? Das wehre sehr freundlich. Danke schon mal in vor raus.
- noisefloor
- User
- Beiträge: 3857
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Jinja2, die Template Engine von Flask, kennt `for` Schleifen, womit du über etwas iterierbares - wie bei dir `ergebnisse` - Iterieren kannst. Das funktioniert genau so wie in Python. Du musst halt nur die Syntax-Regeln von Jinja2 einhalten.
Doku: http://jinja.pocoo.org/docs/2.10/templates/
Auf der Seite gibt es auch eine Sektion zu `for`, wobei im allerersten Beispiel schon gezeigt ist, wie das geht.
Gruß, noisefloor
Jinja2, die Template Engine von Flask, kennt `for` Schleifen, womit du über etwas iterierbares - wie bei dir `ergebnisse` - Iterieren kannst. Das funktioniert genau so wie in Python. Du musst halt nur die Syntax-Regeln von Jinja2 einhalten.
Doku: http://jinja.pocoo.org/docs/2.10/templates/
Auf der Seite gibt es auch eine Sektion zu `for`, wobei im allerersten Beispiel schon gezeigt ist, wie das geht.
Gruß, noisefloor
-
- User
- Beiträge: 8
- Registriert: Sonntag 27. Januar 2019, 18:12
Wir haben es hinbekommen die Daten alle untereinander anzeigen zu lasse, wir sind leider noch zu doof um es einzeln anzeigen lassen zu können. Wir sind die Jinja Dokumentation öfters durch gegangen und haben es immer irgendwie anders versucht jedoch bekommen wir es nicht hin
Code: Alles auswählen
{% for nickname in ergebnisse %}
<li>{% block loop_nickname scoped %}{{ nickname }}{% endblock %}</li>
{% endfor %}
[code]
Des ist das was wir bisher haben
Hier bei wird es alles untereinander aufgelistet aber die Kommas und "" sind leider immer noch da.
Danke nochmals das Ihr uns versucht dabei zu helfen. Ich hätte früher in diesem Forum schreiben sollen, dann hätte ich mir über einem Monat arbeit sparen können ,:)
- noisefloor
- User
- Beiträge: 3857
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
`ergebnisse` ist eine Liste von Listen. Heißt: `nickname` ist immer noch eine Liste. Auf die Elemente kannst du per Indexzugriff zugreifen.
Gruß, noisefloor
`ergebnisse` ist eine Liste von Listen. Heißt: `nickname` ist immer noch eine Liste. Auf die Elemente kannst du per Indexzugriff zugreifen.
Gruß, noisefloor
-
- User
- Beiträge: 8
- Registriert: Sonntag 27. Januar 2019, 18:12
Hallo noisefloor und sirius,
ich habe nach dem Indexzugriff recherchiert aber leider nichts passendes gefunden und das mit dem unpacking habe ich auch schonmal ausprobiert, habe dies aber leider auch nicht hinbekommen. Ich bin zurzeit ziemlich unter Zeitdruck weil wir schon bald mit dem programmieren fertig sein müssen und unbedingt die Suchfunktion noch richtig hinbekommen wollen. Es wäre super nett wenn einer sich die Zeit nehmen würde und unseren Code so abändern könnte, dass dies funktioniert. Uns fehlen jegliche Grundkenntnisse, welche uns das programmieren erschwert.
Danke nochmals.
ich habe nach dem Indexzugriff recherchiert aber leider nichts passendes gefunden und das mit dem unpacking habe ich auch schonmal ausprobiert, habe dies aber leider auch nicht hinbekommen. Ich bin zurzeit ziemlich unter Zeitdruck weil wir schon bald mit dem programmieren fertig sein müssen und unbedingt die Suchfunktion noch richtig hinbekommen wollen. Es wäre super nett wenn einer sich die Zeit nehmen würde und unseren Code so abändern könnte, dass dies funktioniert. Uns fehlen jegliche Grundkenntnisse, welche uns das programmieren erschwert.
Danke nochmals.
-
- User
- Beiträge: 8
- Registriert: Sonntag 27. Januar 2019, 18:12
Ich möchte versuchen das die Daten Nickname, Vorname und Name nicht in einer Liste ausgegeben werden sondern das ich alles einzeln ausgeben kann. Also im prinzip das ich die Werte aus einer Liste herausnehme und sie dann einzeln ausgeben kann. statt das ich in html {{ergebnisse}} schreibe möchte ich es so ausgeben lassen {{Nickname}}{{Vorname}}{{Name}}. Bei der Abfrage sollen trotzdem alle schüler angezeigt werden die halt einen bestimmten namen bzw. nickname oder vorname haben.
Hier sind nochmals mein Python code
und mein jetziger html code
Danke für die hilfe
Hier sind nochmals mein Python code
Code: Alles auswählen
@app.route('/Suchennn', methods = ['POST'])
def Suchennn():
try:
# My SQL Verbidnung Aufbauen
conn = mysql.connect()
cursor = conn.cursor()
anfrage = request.form['inputSuche']
if not anfrage:
return render_template('suche.html', ausgabe='Geben Sie einen Namen ein')
#Durch diese Abfrage kommt die Anzahl aller Nutzer mit dem eigegebenen Nickname, im besten Fall 0>
cursor.execute(
'SELECT nickname, vorname, name FROM `schueler` WHERE Name = (%s) OR Nickname =(%s) OR Vorname = (%s);',
(anfrage, anfrage, anfrage))
#Denk daran fetchone = nur ein Datensatz, fetchall = alle mit dem Nickname
ergebnisse = list(cursor.fetchall())
#hier wird überprüft ob überhaupt ein Nutzer gefunden wurde
if not ergebnisse:
return render_template('suche.html', ausgabe='Es gibt keinen Schüler mit diesem Namen')
return render_template('Suchen.html', ergebnisse=ergebnisse)
finally:
cursor.close()
conn.close()
Code: Alles auswählen
<div>
<h1>Suchergebnis:</h1>
<h5><font color="red">{{ ausgabe }}</font></h5>
{{ ergebnisse }}
<table>
<tr>
<td width="20%">Nickname:</td>
<td>{{ nickname }}</td>
</tr>
<tr>
<td>Vorname:</td>
<td>{{ vorname }}</td>
</tr>
<tr>
<td>Nachname:</td>
<td>{{ name }}</td>
</tr>
</table>
</div>
- __blackjack__
- User
- Beiträge: 13121
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@_verzweifelter_Tim: Die Jinja-Dokumentation wurde ja bereits verlinkt. Und ``for`` wurde ja auch schon erwähnt. Und die Dokumentation hat da auch Beispiele. Und das mit dem ``for`` funktioniert in den Templates fast genau so wie in Python selbst, also insbesondere das „tuple unpacking“. Was in der Jinja2-Doku auch als Beispiel zu sehen ist. So ein bisschen mitdenken, ausprobieren, und verstehen müsst ihr schon selbst. Das kann euch keiner abnehmen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman