Tutorial SQLite Datenbank anlegen und in NOF einbauen

von Webbausteine.de - Version vom 25.10.2014

Bitte ladet Euch die Beispielskripte von Webbausteine.de herunter.

Sämtliche Skripte sind hervorragend kommentiert, daher wird mein Tutorial zum Einbau in NetObjects Fusion (NOF) hier recht kurz ausfallen. Der Einbau,
bzw. die Änderung der Skripte, ist nur für fortgeschrittene User geeignet, die sich bereits mit PHP und PDO auskennen.

Die SQLite Datenbank ist eine Text-Datei, die Ihr mittels FTP-Programm in ein Verzeichnis auf den Server kopiert und die somit auch transportabel ist. Diese Datenbank könnt Ihr auch mit einem Tool, wie z.B. SQLite Administrator, direkt am PC bearbeiten oder diese auch mal mit einem Editor wie Notepad++ angucken.

Die Administrator Seiten müssen unbedingt mittels Passwort durch eine .htaccess Datei geschützt werden, die Ihr dann in das neu angelegte Verzeichnis “Admin” kopiert.

Dazu habe ich mir ein neues Verzeichnis “Admin” in NOF angelegt und die beiden Seiten “bearbeiten.php” und “eintragen.php” dann in der Ansicht “Publizieren” in dieses Verzeichnis “Admin”, so wie hier beschrieben, verschoben.

Verzeichnis Admin erstellen

Datei:

  • verbindung-auslesen.php - hier für das Stammverzeichnis

Zunächst benötigt Ihr die Datei “verbindung.php” aus dem Download. Ich habe diese hier zur Anzeige in meinem Stammverzeichnis umbenannt in “verbindung-auslesen.php”, da die relative Pfadangabe zur Datenbank hier anders als im Verzeichnis Admin ist.

<?php
// Pfad zur Datenbank
$datenbank = "Admin/db/datenbank.sqt";


// Datenbank-Datei erstellen
if (!file_exists($datenbank)) {
 $db = new PDO('sqlite:' . $datenbank);
 $db->exec("CREATE TABLE nachrichten(
  id INTEGER PRIMARY KEY,
  titel CHAR(255),
  autor CHAR(255),
  nachricht TEXT,
  datum DATE)");
}
else {
 // Verbindung
 $db = new PDO('sqlite:' . $datenbank);
}

// Schreibrechte überprüfen
if (!is_writable($datenbank)) {
 // Schreibrechte setzen
 chmod($datenbank, 0777);
}
?>

 

Hier als Beispiel der PHP-Teil meiner Startseite  “index.php”, den ich zur Anzeige der Datenbank neu erstellt und noch eine kleine Navigation zum Blättern der Seiten mit eingebaut habe. Öffnet also jedes Skript mit z.B. Eurem Windows-Editor und kopiert den Teil von <?php bis zum schließenden Tag ?> sowie eventuell vorhandene Formulare in die HTML eines Textfeldes.

Zieht Euch ein Textfeld auf die zur Anzeige gewünschte Breite auf und fügt das Skript in den HTML-Code Editor des Textfeldes ein.

> Textfeld doppelklicken (Cursor blinkt) > Fenster “Text-Eigenschaften” > mittlere Button oben “Textfeld” > Button ”HTML” > Code einfügen

Achtet dabei immer auf die korrekte relative Pfadangabe zu der inkludierten Seite “verbindung.php”. Ich habe diese Datei hier zur Anzeige auf meiner Startseite “index.php”, die ja in meinem Stammverzeichnis liegt, umbenannt in “verbindung-auslesen.php”, da die relative Pfadangabe hier anders als im Verzeichnis Admin ist.

Ihr könnt die Anzahl der anzuzeigenden Datensätze an der Variable $DatensaetzeSeite ändern (hier habe ich 3 Datensätze je Seite eingestellt).

<?php
// Verbindung zur Datenbank aufbauen.
include "verbindung-auslesen.php";

// Anzeige der Datensätze (Nachrichten) pro Seite
$DatensaetzeSeite = 3;

// Nachrichten auslesen
// $select->query() führt die SQL-Anweisung aus,
// die eine Ergebnismenge als PDOStatement Objekt zurück gibt.
$select = $db->query("SELECT `id`, `titel`, `autor`, `nachricht`, `datum`
                                FROM `nachrichten`
                                ORDER BY `datum` DESC");

// $select->fetchAll(...) gibt ein Array mit allen Datensätzen zurück.
// PDO::FETCH_ASSOC gibt ein Objekt mit Eigenschaftennamen zurück,
// diese entsprechen den Spaltennamen.
$nachrichten = $select->fetchAll(PDO::FETCH_ASSOC);

// Anzahl der Nachrichten zählen
$AnzahlDatensaetze = count($nachrichten);

// Die Aktuelle Seite und den Versatz ermitteln
 $Seitenanzahl = ceil($AnzahlDatensaetze / $DatensaetzeSeite);
 $AktuelleSeite = isset($_GET["seite"]) ? intval($_GET["seite"]) : 1;
 $AktuelleSeite = $AktuelleSeite < 1 || $AktuelleSeite > $Seitenanzahl ? 1 : $AktuelleSeite;
 $Versatz = $AktuelleSeite * $DatensaetzeSeite - $DatensaetzeSeite;

// Anzahl der Nachrichten mit count($nachrichten) ausgeben.
echo '<h5>' . count($nachrichten) . ' Nachrichten auf ' . $Seitenanzahl . ' Seiten</h5><br>';

// Alle Datensätze auslesen die in der DB-Spalte `anzeige` den Wert 1 haben.
// Mit LIMIT die Ausgabe der Datensätze begrenzen.
$select = $db->query("SELECT `id`, `titel`, `autor`, `nachricht`, `datum`
                                FROM `nachrichten`
                                ORDER BY `datum` DESC
LIMIT "  . $Versatz . ", " . $DatensaetzeSeite);
$nachrichten = $select->fetchAll(PDO::FETCH_ASSOC);


// Ausgabe über eine Foreach-Schleife
foreach ($nachrichten as $nachricht) {
 extract($nachricht);
 sscanf($datum, "%4s-%2s-%2s", $jahr, $monat, $tag);
 echo '<br><p><small>' . $tag . '.' . $monat . '.' . $jahr .
  '</small> - <b>' . $titel . '</b><br>' .
  ' Autor: <em>' . $autor . '</em><br>' .
  nl2br($nachricht) . '<br>' .
  '</p><hr>';
}

// Formular - und Blätterfunktion
 echo '<br>';
 echo '<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="GET" autocomplete="off">' .
  (($AktuelleSeite - 1) > 0 ? '<a href="?seite=' . ($AktuelleSeite - 1) . '">&#9664;</a>' :
  ' &#9664;') .
 ' <label>Seite <input type="text" value="' . $AktuelleSeite . '" name="seite" size="3"
  title="Seitenzahl eingeben und die Eingabetaste drücken."> von ' . $Seitenanzahl . '</label>' .
  (($AktuelleSeite + 1) <= $Seitenanzahl ?
' <a href="?seite=' . ($AktuelleSeite + 1) . '">&#9654;</a>' :
' &#9654;') . '</form>';


?>

Datei:

  • suche.php

Da ich meine Datei “verbindung.php” aus dem Download in “verbindung-auslesen.php” umbenannt habe, habe ich das auch so im Skript zur Suche, das hier auch in der Root liegt, eingetragen. Achtet auch auf die limitierte Ausgabe von Datensätzen, hier von Beginn der Datenbank 0 bis zum Datensatz 25.

<form action="suche.php" method="get">
 <p>
  <input type="text" name="suchbegriff"
   value="<?php echo isset($_GET["suchbegriff"]) ? $_GET["suchbegriff"] : '' ?>">
  <input type="submit" name="suche" value="suchen">
 </p>
</form>


<?php
// Wurde eine Suchanfrage über GET gesendet.
if (isset($_GET["suche"])) {

 // Leerzeichen im Suchbegriff löschen.
 $_GET["suchbegriff"] = trim($_GET["suchbegriff"]);

 // Suchbegriff größer gleich 3 Zeichen
 if (strlen($_GET["suchbegriff"]) >= 3) {

  // Verbindung zur Datenbank aufbauen.
  include "verbindung-auslesen.php";

  // Nachrichten auslesen
  // prepare() führt die SQL-Anweisung aus, die eine
  // Ergebnismenge als PDOStatement Objekt zurück gibt.
  $select = $db->prepare("SELECT *
FROM `nachrichten`
WHERE (`titel` LIKE :suchbegriff OR
   `autor` LIKE :suchbegriff OR
   `nachricht` LIKE :suchbegriff)
ORDER BY `datum` DESC
LIMIT 0, 25");

  // $select->bindValue() bindet einen Wert an den angegebenen Variablennamen
  // (der Platzhalter wird mit der GET-Variable ersetzt).
  $select->bindValue(':suchbegriff', '%' . $_GET["suchbegriff"] . '%');

  // $select->execute() führt die vorbereitete Anweisung aus.
  if ($select->execute() == false) {
   // SQL-Fehlermeldung anzeigen.
   print_r($select->errorInfo());
  }

  // $select->fetchAll(...) gibt ein Array mit allen Datensätzen zurück.
  // PDO::FETCH_ASSOC gibt ein Objekt mit Eigenschaftennamen zurück,
  // diese entsprechen den Spaltennamen.
  $nachrichten = $select->fetchAll(PDO::FETCH_ASSOC);

  // Anzahl der Nachrichten überprüfen
  $anzahlNachrichten = count($nachrichten);
  if ($anzahlNachrichten > 0) {
   echo '<h5>Es wurden ' . $anzahlNachrichten . ' Nachricht(en) gefunden.</h5><br>';

   // Die gefundenen Nachrichten über eine Foreach-Schleife ausgeben.
   foreach ($nachrichten as $nachricht) {
sscanf($nachricht['datum'], "%4s-%2s-%2s", $jahr, $monat, $tag);
echo '<br><p><small>' . $tag . '.' . $monat . '.' . $jahr .
 '</small> - <b>' . $nachricht['titel'] . '</b><br> Autor: <em>' .
 $nachricht['autor'] . '</em><br>' .
 nl2br($nachricht['nachricht']) . '</p><hr>';
   }
  }
  else {
   echo '<p>Es wurden keine Einträge gefunden!</p>';
  }
 }
 else {
  echo '<p>Suchbegriff mit mindestens 3 Zeichen eingeben!</p>';
 }
}
?>

Datei:

  • verbindung.php - für das Verzeichnis Admin

Weiterhin benötigt Ihr die Datei “verbindung.php” aus dem Download erneut für das Verzeichnis Admin, da hier die relative Pfadangabe zur Datenbank eine andere ist. Kopiert diese Datei in das geschützte Verzeichnis Admin.

<?php
// Pfad zur Datenbank
$datenbank = "db/datenbank.sqt";


// Datenbank-Datei erstellen
if (!file_exists($datenbank)) {
 $db = new PDO('sqlite:' . $datenbank);
 $db->exec("CREATE TABLE nachrichten(
  id INTEGER PRIMARY KEY,
  titel CHAR(255),
  autor CHAR(255),
  nachricht TEXT,
  datum DATE)");
}
else {
 // Verbindung
 $db = new PDO('sqlite:' . $datenbank);
}

// Schreibrechte überprüfen
if (!is_writable($datenbank)) {
 // Schreibrechte setzen
 chmod($datenbank, 0777);
}
?>

Die Dateien:

  • eintragen.php - zum Eintragen eines neuen Datensatzes in die SQLite Datenbank

    und
     
  • bearbeiten.php - zum Bearbeiten oder Löschen von Datensätzen in der SQLite Datenbank
     

kopiert Ihr aus dem Download direkt in Euer Verzeichnis Admin oder Ihr fügt jedes Skript mit dem Teil von <?php bis zum schließenden Tag ?> sowie eventuell vorhandene Formulare wieder in die HTML, wie schon oben bei der Anzeige der Datenbank beschrieben, eines Textfeldes ein.

Das Verzeichnis:

  • db mit der Datenbankdatei “datenbank.sqt” aus dem Download von Webbausteine.de
     

kopiert Ihr ebenfalls direkt in Euer geschütztes Verzeichnis Admin.

Hier eine Ansicht der Seite “Eintragen”. Hier kann der Admin neue Datensätze eintragen.

in SQLite Datenbank eintragen

Hier eine Ansicht der Seite “Bearbeiten”. Hier könnt Ihr bereits eingetragene Datensätze ändern oder löschen. Ihr könnt dort ganz normale HTML-Befehle, wie Schrift-Formatierungen, Links oder Bilder oder auch Codes für Bildergalerien oder sonst etwas mit eintragen.

Datensatz bearbeiten

Viel Erfolg!

Tutorials von Thomas Frei-Herrmann

diese Seite weiter empfehlen


Counter Statistik