Abschnittsübersicht

  • Tipps für die Nutzung von Datenbankabfragen

    • In den SQL-Anweisungen ist als Platzhalter nur ? erlaubt, d.h. keine benannten Platzhalter.
    • Alle Platzhalter (zu jedem ?) müssen existieren und im Feld Datensatz-Variablen filter_generico | datasetvars_... benannt werden, z. B. @@COURSE:id@@, sonst gibt es eine hässliche Fehlermeldung.
    • Am Ende der SQL-Abfrage wird kein ; geschrieben.
    • Verwendet keine URL-Parameter in den Abfragen, um Sicherheitsprobleme zu vermeiden, wie z.B. das Abgreifen von Daten oder Code-Injection
    • Bestimmte Stichwörter sind im SQL nicht erlaubt (LIMIT, INSERT, UPDATE, DROP, ...).
    • Ihr könnt die Syntax der Datenbankabfragen auch im Plugin Configurable Reports (https://moodle.org/plugins/block_configurable_reports) testen, bevor ihr es in Generico verwendet. Achtet darauf, dass Platzhalter wie ? in den configurable reports nicht funktionieren.
    • Mit der nachfolgenden Beispielabfrage könnt ihr beispielsweise den Kategorienamen der Kategorie des aktuellen Kurses anzeigen:

      
        SELECT cc.name AS category_name
        FROM {course} c
        JOIN {course_categories} cc 
        ON c.category = cc.id
        WHERE c.id = ?
      

      Das ist nützlich, wenn der Kurs etwa in einer Kategorie liegt, die den Semesternamen beinhaltet und ihr diesen dynamisch für den (kopierten) Kurs anzeigen möchtet, ohne den Kurs manuell zu überarbeiten.

      Der Platzhalter-Parameter ? wird dabei in datasetwars durch @@COURSE:id@@ definiert. Das bedeutet, dass Generico die aktuelle Kurs-ID, in der sich die Vorlage befindet, in die Abfrage einbaut. Der Platzhalter @@USER:id@@ würde entsprechend die User-ID des aktuellen Users liefern.

    • Hier findet ihr eine Liste der Tabellen und Felder in Moodle und wie sie miteinander in Verbindung stehen. Zusätzliche Plugins können weitere Tabellen beinhalten.

    • Mit Hilfe gut gestalteter KI-Prompts könnt ihr euch die Template-Erstellung vereinfachen. Diese Infos sind für den Prompt hilfreich:

      • Erstelle die SQL-Syntax für eine Datenbankabfrage. Diese soll für filter_generico in Moodle [eure Moodle-Version] genutzt werden. Nutze Postgresql [wenn euer Moodle postgresql als Datenbank verwendet).
      • Verwende Shorthands wie {user} für Tabellen.
      • Nutze kein Semikolon am Ende der Anweisung.
      • Nutze ausschließlich ? als Platzhalter (und nicht %%COURSEID%%). Erstelle eine sortierte Liste der Platzhalter für Generico zur Verwendung in den datasetvars, z.B. @@COURSE:id@@ oder @@USER:id@@
      • Liste auf, wie die Ergebnisse im Template von Generico eingebunden werden können, z.B. als @@DATASET:spaltenname@@