Einbinden von SQL-Abfragen

Aus IV
Zur Navigation springen Zur Suche springen
<yambe:breadcrumb>SQL|SQL</yambe:breadcrumb>
Wie bereits erwähnt wird SQL häufig als Schnittstelle zu individuellen Werkzeugen (Tabellenkalkulation, Webbrowser) eingesetzt. Die gegenständliche Lerneinheit dient dem Erlernen des Einbindens von SQL-Anweisungen in ein Webformular bzw. in einen webbasierten Dienst, zB einem Weblog.



Einbinden über HTML-Formulare

Für die Aufgaben, die an StudentInnen der SOWI-Fakultät gestellt werden, sind für SQL-Abfragen im Regelfall HTML-Formulare vorgesehen. Wie das PHP-Beispiel weiter unten schon zeigt, wären für die Einbindung via PHP grundlegende Kenntnisse dieser Scriptsprache nötig. Dank vorgefertigter PHP-Seiten können erstellte SQL-Abfragen aber auch einfach über HTML-Formulare an diese Seiten übergeben werden. Dazu ist lediglich der Umgang mit einem Formular zu erlernen.

SELECT * FROM Auftrag WHERE Nr=2

Der eigentliche Code sieht so aus:

SELECT * FROM Auftrag WHERE Nr=2
<form method="post" action="https://sql.idb.edu/thema/work/sql.php" target="_blank">
<input type="hidden" name="select" value="SELECT * FROM Auftrag WHERE Nr=2">
<input type="submit" value="Ausführen">
</form>

Detaillierte Beschreibung des Formulars:

  • Mit dem Tag <form> wird ein Formular geöffnet. Dabei muss die Methode und die Datei (action), mit der beim Ausführen weitergearbeitet werden soll, angegeben werden.
  • Im ersten <input>-Tag wird in der Option value der SQL-String (die SQL-Abfrage), der übergeben werden soll, gespeichert. Erst dieser String wird der Datenbank übermittelt.
  • Mit dem zweiten <input>-Tag wird ein "Eingabefeld" - hier ein Ausführknopf - erstellt. Die Option, ob es sich um einen Ausführknopf oder ein Eingabefeld handelt, basiert auf der Einstellung, welchen type man dem <input>-Tag übergibt. Bei diesem Beispiel handelt es sich um einen Submit-Button, daher type="submit". Mit der Option value kann man den Button beschriften. Hier im Beispiel wurde dies mit der Aufschrift "Ausführen" gemacht.
  • Mit dem </form>-Tag wird das Formular wieder geschlossen.

Einbinden über PHP

SQL-Abfragen lassen sich mit PHP direkt in den Quelltext einer Website einpflegen, sodass der Inhalt dieser Sites dynamisch anhand des Datenbankinhaltes generiert werden kann. Sehr viele moderne Websites setzen auf diese effiziente Vorgehensweise, weshalb zumindest kurz ein Beispiel gezeigt werden soll.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-at" lang="de-at">
  <head>
    <title>Ausgabe</title>
  </head>
  <body>
    <h1>Ausgabe von Vorname, Nachname und Plz</h1>
    
    <table>
      <tr>
        <th>Vorname</th>
        <th>Nachname</th>
        <th>Plz</th>
      </tr>
      <?php
      /* Datenbankverbindung wird hergestellt
      und Datenbank wird ausgewählt */
      $conn = mysql_connect($servername,$benutzername,$password)
     or die ("Keine DB Verbindung hergestellt");
      mysql_select_db($datenbankname, $conn);
      
      $sql = "SELECT Vorname, Nachname, Plz FROM Kunde ORDER BY Plz";    
      
      /* Variable wird mit einem SQL Ergebnis gefüllt */
      $rs_liste = mysql_query($sql, $conn); 
      
      $pointer = 0; // Hilfsvariable wird initialisiert
      
      /* Ergebnisausgabe nur falls die Anzahl der Datensätze > 0 ist */
      if (mysql_num_rows($rs_liste) > 0)
        {
        
        /* In einer Schleife werden die Datensätze Reihe
        für Reihe ausgegeben */
        while (mysql_fetch_row($rs_liste)) 
          { 
          $vorname = mysql_result($rs_liste, $pointer, "Kunde.Vorname");
          $nachname = mysql_result($rs_liste, $pointer, "Kunde.Nachname");
          $plz = mysql_result($rs_liste, $pointer, "Kunde.Plz");
          
          /* Erzeugung von HTML Tabellenzeilen die
          mit den Ergebnisdatensätzen gefüllt sind */
          echo "<tr>"; 
          echo "<td>" . $vorname . "</td>";
          echo "<td>" . $nachname . "</td>";
          echo "<td>" . $plz . "</td>";
          echo "</tr>";                
          
          /* Hilfsvariable wird um 1 erhöht um beim nächsten
          Durchlauf der Schleife zum nächsten Datensatz des
          Ergebnisses zu kommen */
          $pointer++; 
          }
        }
      else
        {
        /* Ausgabe eines Hinweises falls Anzahl
        der gefundenen Datensätze = 0 ist */
        echo "Es wurden keine Datensätze gefunden";
        }
    
      mysql_free_result($rs_liste); // SQL Abfrage wird geschlossen
      mysql_close($conn); // Datenbankverbindung wird geschlossen
      ?>
    </table>
    
  </body>
</html>

Zitiervorschlag

Mittendorfer in Höller, Informationsverarbeitung, Einbinden von SQL-Abfragen (mussswiki.idb.edu/ivwiki)