SQLite-Datei mit PHP und PDO erstellen

Der Vorteil von SQLite ist, das die Datenbank eine Text-Datei ist und keine Verbindung zu einem Datenbank-Server benötigt. Ideal für kleinere Datenmengen oder wenn die Datenbank transportabel sein soll.

👁️‍ Live-Demo anzeigen - Nachrichten
(Demo öffnet in einem neuen Tab)
Live-Demo - Nachrichten

Wer schon Erfahrung mit einer Datenbank und PDO hat, für den ist das eintragen / bearbeiten der Daten ein alter Hut (hej!) Alle anderen sollten den Artikel » Erster Eintrag in eine MySQL-Datenbank mit PHP lesen, da viele der Anweisungen im Script dort beschrieben werden.

Verbindung zur Datenbank

Hier wird eine Verbindung zur Datei: datenbank.sqt hergestellt. Ist die Datei nicht vorhanden so wird diese angelegt. Des weiteren werden die Schreibrechte der Datei geprüft und evtl. korrigiert.

Quelltext „verbinden.phpAusblendenKopierenZeilen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/*
 * SQLite - Nachrichten Einstellungen - verbinden.php
 */


// Benutzer (Administrator)
$ADMINISTRATOR "user";

/* Passwort (Administrator)
   Aus Sicherheitsgründen sollte das Passwort min. 8 Zeichen enthalten! */
$BENUTZER_PASS[$ADMINISTRATOR] = "12345";

/* Weitere Benutzer und Passwörter hinzufügen (Optional).
   Die Kommentarzeichen (//) müssen entfernt werden
   um neue Benutzer hinzufügen zu können! */

// $BENUTZER_PASS["user2"] = "1234";
// $BENUTZER_PASS["user3"] = "007";

// Pfad zur Datenbank
$datenbank "db/datenbank.db";

// Anzahl der Datensätze (Nachrichten) pro Seite
$DatensaetzeSeite 3// 3

// Länge des minimalen Suchbegriffs (in Zeichen)
$suchbegriffMin 4// 4

// Max. Anzahl der Ergebnisse in der Suche
$sucheMaxErgebnisse 35// 35

/* Datenbank-Datei erstellen
   https://www.sqlite.org/datatype3.html */
if (!file_exists($datenbank)) {
  
$db = new PDO('sqlite:' $datenbank);
  
$db->exec("CREATE TABLE nachrichten(
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  titel TEXT NOT NULL,
  autor TEXT NOT NULL,
  nachricht TEXT NOT NULL,
  anzeige INTEGER NOT NULL,
  datum TEXT NOT NULL)");
} else {
  
// Verbindung
  
$db = new PDO('sqlite:' $datenbank);
}

// Schreibrechte überprüfen
if (!is_writable($datenbank)) {
  
// Schreibrechte setzen
  
chmod($datenbank0777);
}

// Fehlermeldungen anzeigen
error_reporting(E_ALL);
ini_set('display_errors'true);

function 
sqlFehler($meldung) {
  die(
'<p class="status_ko">Fehler in der SQL-Anweisung!<br><em>$meldung '</em></p>');
}

// Nachrichten formatieren
function format($text) {
  
$text htmlspecialchars($textENT_HTML5'UTF-8');
  
$text preg_replace_callback('#(( |^)(((http|https|)://)|www.)\S+)#mi''linkUmwandeln'$text);

  
$text preg_replace('/\[b\](.*)\[\/b\]/Usi''<b></b>'$text); // [b]
  
$text preg_replace('/\[i\](.*)\[\/i\]/Usi''<i></i>'$text); // [i]
  
$text preg_replace('/\[s\](.*)\[\/s\]/Usi''<s></s>'$text); // [s]
  
$text preg_replace('/\[q\](.*)\[\/q\]/Usi''<q></q>'$text); // [q]
  
$text preg_replace('/\[u\](.*)\[\/u\]/Usi''<u></u>'$text); // [u]
  
$text preg_replace('/\[color=(.*)\](.*)\[\/color\]/Usi''<span style=\'color:\'></span>'$text); // [color=#FF12345]  [color=green]
  
$text preg_replace('/\[sup\](.*)\[\/sup\]/Usi''<sup></sup>'$text); // [sup]
  
$text preg_replace('/\[sub\](.*)\[\/sub\]/Usi''<sub></sub>'$text); // [sub]
  
$text preg_replace('/\[img=(.*)\](.*)\[\/img\]/Usi''<p><img class="bild" src="" title=""><em></em></p>'$text); // [img]
  
$text preg_replace('/\[list\](.*)\[\/list\]/Usi''<ul></ul>'$text); // [list]
  
$text preg_replace('/\[olist\](.*)\[\/olist\]/Usi''<ol></ol>'$text); // [olist]
  
$text preg_replace('/\[li\](.*)\[\/li\]/Usi''<li></li>'$text); // [li]
  
$text preg_replace('/\[code\](.*)\[\/code\]/Usi''<code></code>'$text); // [code]
  
$text preg_replace('/\[bcolor=(.*)\](.*)\[\/bcolor\]/Usi''<span style=\'background:\'></span>'$text); // [bcolor=#FF12345]  [bcolor=green]
  
$text preg_replace('/\[audio=(.*)\](.*)\[\/audio\]/Uism''<figure><audio controls><source src=""></audio><figcaption></figcaption></figure>'$text); // [audio=url]
  
$text preg_replace('/\[video=(.*)\](.*)\[\/vvideo\]/Uism''<figure><video controls><source src=""></video><figcaption></figcaption></figure>'$text); // [video=url]

  
return nl2br($text);
}

function 
linkUmwandeln($hit) {
  
$url trim($hit[1]);

  if ((
substr($url07) != 'http://') && (substr($url08) != 'https://')) {
    
$url "http://" $url;
  }
  return 
<a href="' $url '" target="_blank" rel="noopener">$url '</a>';
}

define("FORMATIERUNG"'<details>
<summary>Formatierung</summary>
<pre id="format">
 Audio-Datei <code id="audio">[audio=<b>url</b>]Titeltext[/audio]</code>
 b = <b>Fettschrift</b> <code id="b">[b]Text[/b]</code>
 Bild / Grafik =  &#127917; <code id="url">[img=<b>url</b>]Titeltext[/img]</code>
 <span style="background:yellow">Hintergrundfarbe</span> <code id="bcolor">[bcolor=<b>yellow</b>]Text[/bcolor]</code>
 i = <i>kursiv</i> <code id="i">[i]Text[/i]</code>
 li = &bull; Listenelement <code id="li">[li]Text[/li]</code>
 ol = Geordnete Liste <code id="ol">[ol]Text[/ol]</code>
 q = <q>Zitat</q> <code id="q">[q]Text[/q]</code>
 s = <s>Durchgestrichen</s> <code id="s">[s]Text[/s]</code>
 sub = <sub>Tiefgestellt</sub> <code id="sub">[sub]Text[/sub]</code>
 sup = <sup>Hochgestellt</sup> <code id="sup">[sup]Text[/sup]</code>
 <span style="color:#FF12345">Textfarbe</span> <code id="color">[color=<b>red</b>]Text[/color]</code>
 u = <u>Unterstrichen</u> <code id="u">[u]Text[/u]</code>
 ul = Ungeordnete Liste <code id="ul">[ul]Text[/ul]</code>
 Video-Datei <code id="video">[video=<b>url</b>]Titeltext[/video]</code>
</pre>
</details>');

Bitte nehmen Sie per Hand keine Änderungen an der Datei: "datenbank.sqt" vor (enthält zum Teil unsichtbare Steuerzeichen), da dadurch die Datei unbrauchbar werden kann! Bearbeiten können Sie diese Datei zum Beispiel mit dem Programm: DB Browser for SQLite

Nachricht eintragen

Die Daten werden über ein Formular in die Datei eintragen.

[Bildschirmfoto / Grafik]
 Nachricht eintragen
Nachricht eintragen

Quelltext „eintragen.phpEinblendenKopierenZeilen

Nachrichten anzeigen und bearbeiten

Die eingetragenen Daten werden hier aus der Datei ausgelesen, diese können einzeln über ein Formular bearbeitet oder gelöscht werden.

[Bildschirmfoto / Grafik]
 Nachrichten bearbeiten
Nachrichten bearbeiten

Quelltext „nachrichten.phpEinblendenKopierenZeilen

Eigenschaften

Neu

Weitere Funktionen

[Bildschirmfoto / Grafik]
 Nachrichten suchen
Nachrichten suchen
[Bildschirmfoto / Grafik]
 Nachrichten - Anmeldung
Nachrichten - Anmeldung

Was fehlt in diesem Script noch?
Zum Beispiel eine Funktion mit der man die Nachrichten in verschiedene Kategorien unterteilen kann.
Wie das funktioniert finden Sie unter: Erster Eintrag in eine MySQL-Datenbank mit PHP

sqlite_datenbank.zip

Viel Spaß damit!

Gefällt Ihnen das Skript oder haben Sie einen Fehler gefunden? Dann freue ich mich auf Ihren Kommentar.