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.

♥ Vielen Dank an die zahlreichen Benutzer die dieses Script verwenden oder heruntergeladen haben.
Kommentar und Kritik sind immer erwünscht!

Hier ein kleines Beispiel (Screenshot) wie Daten in der Datenbank-Tabelle eingetragen und bearbeitet werden können.

[Bildschirmfoto] 
Nachrichten
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.phpKopierenAusblendenZeilen

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
<?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.sqt";

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

// Länge des minimalen Suchbegriffs
$suchbegriffMin 4;

 
/* 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,
  titel VARCHAR(100),
  autor VARCHAR(35),
  nachricht TEXT,
  anzeige VARCHAR(1),
  datum VARCHAR(20))");
}
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''<em></em><img class="bild" src="" title="">'$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('/\[bcolor=(.*)\](.*)\[\/bcolor\]/Usi''<span style=\'background:\'></span>'$text); // [bcolor=#FF12345]  [bcolor=green]

 
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>';
}

function 
zeigeBBCodeHilfe() {
 return 
'<details>
<summary>BBCode Einstellungen</summary>
<p>
 b = <b>fett</b> <code>[b]Text[/b]</code><br>
 Bild =  &#127917; <code>[img=url]Titeltext[/img]</code><br>
 <span style="background:yellow">Hintergrundfarbe</span>  <code>[bcolor=yellow]Text[/bcolor]</code><br>
 i = <i>kursiv</i> <code>[i]Text[/i]</code><br>
 Liste li &bull; (bulleted list) <code>[li]Text[/li]</code><br>
 Liste ol (ordered list) <code>[ol]Text[/ol]</code><br>
 Liste ul (unordered list) <code>[ul]Text[/ul]</code><br>
 q = <q>Anführungszeichen</q> <code>[q]Text[/q]</code><br>
 s = <s>durchgestrichen</s> <code>[s]Text[/s]</code><br>
 sub = <sub>Tiefgestellt</sub> <code>[sub]Text[/sub]</code><br>
 sup = <sup>Hochgestellt</sup> <code>[sup]Text[/sup]</code><br>
 <span style="color:#FF12345">Text-Farbe</span> <code>[color=red]Text[/color]</code><br>
 u = <u>Unterstreichen</u> <code>[u]Text[/u]</code><br>
</p>
</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] 
Nachricht eintragen
Nachricht eintragen

Quelltext „eintragen.phpKopierenAusblendenZeilen

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
<?php
/*
 * SQLite - Nachrichten Eintragen - eintragen.php
 */


session_start();

 
// Verbindung zur Datenbank-Datei herstellen
 
include "verbinden.php";

if (!isset(
$_SESSION["benutzername"])) {

 
// Zur Anmeldung weiterleiten
 
header("Location: anmelden.php");
 exit;
}

// Überprüfen ob das Formular versendet wurde.
if ($_SERVER["REQUEST_METHOD"] == "POST") {

 
// Die Nachricht vom  Admin. sofort anzeigen
 
$anzeige $_SESSION["benutzername"] == $ADMINISTRATOR 0;

 
/* prepare() bereitet die Anweisung für die Ausführung vor.
  Die Platzhalter werden hier anstatt den POST-Variablen eingesetzt. */
 
$insert $db -> prepare("INSERT INTO nachrichten 
         (`titel`, `autor`, `nachricht`, `anzeige`, `datum`)
  VALUES (:titel, :autor, :nachricht, :anzeige, :datum)") or sqlFehler($db->errorInfo()[2]);

 
/* Die Platzhalter werden mit $insert->bindValue() durch den
  Inhalt der POST-Variablen ersetzt und maskiert. */
 
$insert->bindValue(':titel'$_POST["titel"]);
 
$insert->bindValue(':autor'$_SESSION["benutzername"]);
 
$insert->bindValue(':nachricht'$_POST["nachricht"]);
 
$insert->bindValue(':anzeige'$anzeige);
 
$insert->bindValue(':datum'date("Y-m-d H:i:s"));

 
/* $insert->execute() führt die vorbereitete Anweisung aus.
  Bei einem erfolgreichen Eintrag wird 'true' zurück gegeben. */
 
if ($insert->execute()) {

  
// Zu den Nachrichten weiterleiten
  
header("Location: nachrichten.php");
  exit;
 }
}
?>
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Nachricht eintragen</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="style.css">
 </head>
<body>

<nav>
 <a href="nachrichten.php">Nachrichten</a> |
 <?=isset($_SESSION["benutzername"]) ? '<u>Eintragen</u> |' '';?>
 <a href="suchen.php">Suchen</a> |
 <?=isset($_SESSION["benutzername"]) ? '<a href="anmelden.php?abmeldung">Abmelden</a>'<a href="anmelden.php">Anmelden</a>';?>
</nav>

<form method="post">
 <p>
  <label>
  Titel: <input type="text" name="titel" size="35" minlength="10" maxlength="100" required="required" autofocus="autofocus" placeholder="Titel mind. 10 Zeichen" spellcheck="true">
  </label>
 </p>

 <p>
  <label>Nachricht:<br>
   <textarea name="nachricht" rows="10" cols="50" minlength="25" required="required" placeholder="Nachricht mind. 25 Zeichen" spellcheck="true"></textarea>
  </label>
 </p>

<?=zeigeBBCodeHilfe();?>

 <p>
 <input type="button" value="Abbrechen" onclick="window.location.href='eintragen.php'">&emsp;
 <input type="submit" value="Absenden">
 </p>
</form>

</body>
</html>

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] 
Nachrichten bearbeiten
Nachrichten bearbeiten

Quelltext „nachrichten.phpKopierenAusblendenZeilen

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
<?php
/*
 * SQLite - Nachrichten - nachrichten.php
 */


session_start();

// Verbindung zur Datenbank aufbauen
include "verbinden.php";

// Ausgabe in HTML
$ausgabe '';

// Willkommen
if (isset($_SESSION["benutzername"])) {
 if (!isset(
$_SESSION["willkommen"])) {
  
$ausgabe .= '<h3>Willkommen ' . ($ADMINISTRATOR == $_SESSION["benutzername"] ? 'Admin. ' 'Benutzer ') .
   
ucfirst($_SESSION["benutzername"]) . '!</h3>';
  
$_SESSION["willkommen"] = true;
 }
}

// Anzahl der Datensätze ermitteln
$select $db->query("SELECT `id` FROM `nachrichten`" .
 (!isset(
$_SESSION["benutzername"]) ? "WHERE `anzeige` = '1'" "")) or sqlFehler($db->errorInfo()[2]);
$AnzahlDatensaetze count($select->fetchAll());

// Sind Datensätze vorhanden?
if ($AnzahlDatensaetze > 0) {

 
// Die Anzahl der Seiten ermitteln
 
$AnzahlSeiten ceil($AnzahlDatensaetze $DatensaetzeSeite);

 
// Die aktuelle Seite ermitteln
 
$AktuelleSeite = isset($_GET["seite"]) ? $_GET["seite"] : 1;

 
// Den Wert überprüfen und ggf. ändern
 
$AktuelleSeite ctype_digit($AktuelleSeite) ? $AktuelleSeite 1;
 
$AktuelleSeite $AktuelleSeite < || $AktuelleSeite > $AnzahlSeiten $AktuelleSeite;

 
// Den Versatz ermitteln
 
$Versatz $AktuelleSeite $DatensaetzeSeite $DatensaetzeSeite;


// Nachricht bearbeiten
if (isset($_GET["id"], $_SESSION["benutzername"])) {

 
/* Eine Nachricht auslesen
  prepare() bereitet die Anweisung für die Ausführung vor. */
 
$select $db->prepare("SELECT `id`, `titel`, `nachricht`, `anzeige`, `datum`
                                       FROM `nachrichten`
                                       WHERE `id` = :id") or sqlFehler($db->errorInfo()[2]);

 
// $select->execute(array) führt die vorbereitete Anweisung aus.
 
$select->execute([':id' => $_GET["id"]]);

 
// $select->fetch() holt die Zeile aus dem Ergebnis.
 
$nachricht $select->fetch();

 
// Die gespeicherte ID vergleichen
 
if ($nachricht["id"] == $_GET["id"]) {

  
// Die Checkbox auswählen
  
$anzeigeCK = ($nachricht["anzeige"] == "1") ? ' checked="checked"' '';

  
// Formular zum bearbeiten der Nachricht ausgeben
  
$ausgabe '<form action="?seite=' $AktuelleSeite '" method="post">
   <p>
    <label>Titel: 
     <input type="text" name="titel" value="' $nachricht["titel"] . '" size="45" minlength="10" maxlength="100" required="required" placeholder="Titel mind. 10 Zeichen" spellcheck="true">
    </label>
   </p>

   <p>
    <label>Nachricht: <br>
     <textarea rows="10" cols="50" name="nachricht" minlength="25" required="required" placeholder="Nachricht mind. 25 Zeichen">$nachricht["nachricht"] . '</textarea>
    </label>
   </p>

  ' zeigeBBCodeHilfe() . '

   ' . ($_SESSION["benutzername"] != $ADMINISTRATOR
        
'' :
          
'<p>
            <input type="checkbox" name="anzeige" id="anzeige"' $anzeigeCK '> 
            <label for="anzeige">Nachricht anzeigen</label>
          </p>'
       ) . '

   <p>
    <input type="radio" name="option" id="edit" value="edit" checked="checked"> <label for="edit">Ändern</label>
    <input type="radio" name="option" id="delete" value="delete" required="required"> <label for="delete">Löschen</label>
    <input type="hidden" name="id" value="' $nachricht["id"] . '">
   </p>

   <p>
    <input type="button" value="Abbrechen" onclick="window.location.href=\'nachrichten.php?seite=' $AktuelleSeite '\'">&emsp;
    <input type="submit" value="Absenden">
   </p>
  </form>
  <hr>';
 }
}

// Überprüfen ob das Formular versendet wurde.
if ("POST" == $_SERVER["REQUEST_METHOD"]) {

 
// Benutzer überprüfen
 
$select $db->prepare("SELECT `autor`
                                        FROM `nachrichten`
                                        WHERE `id` = :id") or sqlFehler($db->errorInfo()[2]);
  
$select->execute([':id' => $_POST["id"]]);
  
$status $select->fetch();

 if (
$_SESSION["benutzername"] === $status["autor"] ||
      
$_SESSION["benutzername"] === $ADMINISTRATOR) {

  
// Nachricht aktualisieren
  
if ($_POST["option"] == 'edit') {

  
/* Der Variable: $anzeige einen Wert zuweisen, entweder 1 oder 0.
   Je nachdem ob die Checkbox gesetzt (ausgewählt) wurde. */
   
$anzeige = isset($_POST["anzeige"]) ? 0;

   
// prepare() bereitet die Anweisung für die Ausführung vor.
   
$update $db->prepare("UPDATE `nachrichten`
                                             SET 
                                               `titel` = :titel,
                                               `nachricht` = :nachricht,
                                               `anzeige` = :anzeige
                                             WHERE
                                                 `id` = :id") or sqlFehler($db->errorInfo()[2]);

   
/* $update->bindValue() bindet einen Wert an den angegebenen Variablennamen
    (die Platzhalter werden mit den POST-Variablen ersetzt). */
   
$update->bindValue(':titel'$_POST["titel"]);
   
$update->bindValue(':nachricht'$_POST["nachricht"]);
   
$update->bindValue(':anzeige'$anzeige);
   
$update->bindValue(':id'$_POST["id"]);

   
// $update->execute() führt die vorbereitete Anweisung aus.
   
if ($update->execute()) {
    
$ausgabe .= '<p class="status_ok">Die Nachricht wurde aktualisiert.</p>';
   }
  }

  
// Nachricht löschen
  
if ($_POST["option"] == 'delete') {

   
// prepare() bereitet die Anweisung für die Ausführung vor.
   
$delete $db->prepare("DELETE FROM `nachrichten`
                                         WHERE `id` = :id") or sqlFehler($db->errorInfo()[2]);

   
// $delete->execute(array) führt die Anweisung aus.
   
if ($delete->execute([':id' => $_POST["id"]])) {
    
$ausgabe .= '<p class="status_ok">Die Nachricht wurde gelöscht.</p>';
   }
  }
 }
 else {
  
$ausgabe .= '<p class="status_ko">Keine Berechtigung die Nachricht zu bearbeiten!</p>';
 }
}


 
/* Alle Datensätze auslesen die in der DB-Spalte `anzeige` den Wert 1 haben.
  Mit LIMIT die Ausgabe der Datensätze begrenzen (Versatz und Datensätze pro Seite). */
 
$select $db->prepare("SELECT `id`, `titel`, `autor`, `nachricht`, `datum`, `anzeige`
                                       FROM `nachrichten`
                                       " . (!isset($_SESSION["benutzername"]) ? "WHERE `anzeige` = '1'" "") . "
                                       ORDER BY `datum` DESC
                                       LIMIT :versatz, :DatensaetzeSeite") or sqlFehler($db->errorInfo()[2]);

 
$select->bindParam(':versatz'$VersatzPDO::PARAM_INT);
 
$select->bindParam(':DatensaetzeSeite'$DatensaetzeSeitePDO::PARAM_INT);
 
$select->execute();
 
$nachrichten $select->fetchAll();

 
// Ausgabe über eine Foreach-Schleife
 
foreach ($nachrichten as $nachricht) {

  
// Mit sscanf() wird das Format des Datums in die Variablen $jahr, $monat und $tag extrahiert.
  
sscanf($nachricht["datum"], "%4s-%2s-%2s %5s"$jahr$monat$tag$uhr);

  
$anzeige $bearbeiten '';
  if (isset(
$_SESSION["benutzername"])) {
   
$anzeige $nachricht["anzeige"] == ?
    
<span class="anzeigen" title="Nachricht wird angezeigt">&#10003;</span> ' <span class="nichtanzeigen" title="Nachricht wird nicht angezeigt">&#10005;</span> ';
   
$bearbeiten = ($_SESSION["benutzername"] === $nachricht["autor"] || $_SESSION["benutzername"] === $ADMINISTRATOR)
    ? 
'<a href="?id=' $nachricht["id"] . '&amp;seite=' $AktuelleSeite '">Bearbeiten</a>'';
  }

  
// Aktive Nachricht hervorheben
  
$aktiveNachricht '';
  if (isset(
$_GET["id"]) && $_GET["id"] == $nachricht["id"]) {
   
$aktiveNachricht ' class="aktiveNachricht"';
  }

  
$ausgabe .= '<dl' $aktiveNachricht '><dt class="zeit">$tag '.' $monat '.' $jahr .
   
' - ' $uhr ' Uhr - Autor: ' htmlspecialchars($nachricht["autor"], ENT_HTML5'UTF-8') . $anzeige $bearbeiten '</dt>.
   
'<dd class="titel">htmlspecialchars($nachricht["titel"], ENT_HTML5'UTF-8') . '<dd>.
   
'<dd class="inhalt">format($nachricht["nachricht"]) . '</dd></dl>';
 }

 
// Formular.- und Blätterfunktion (Wer sich da auskennt bekommt einen Preis verliehen ;)
 
$ausgabe .= '<form method="GET" autocomplete="off">$AnzahlDatensaetze . ($AnzahlDatensaetze == ' Nachricht  ' ' Nachrichten ') . 
  ((
$AktuelleSeite 1> ?
    
'<a href="?seite=' . ($AktuelleSeite 1) . '" title="Eine Seite zurück" class="seite">&#9664;</a>:
    
'<span class="seite seite_">&#9664;</span>') .
 
<label>Seite <input type="number" value="' $AktuelleSeite '" name="seite" min="1" required="required"' .
 
' title="Seitenzahl eingeben und die Eingabetaste drücken."> von ' $AnzahlSeiten '</label> ' .
  ((
$AktuelleSeite 1<$AnzahlSeiten ?
    
'<a href="?seite=' . ($AktuelleSeite 1) . '" title="Eine Seite vor" class="seite">&#9654;</a>:
    
'<span class="seite seite_">&#9654;</span>') .
 
'</form>';
}
else {
 
$ausgabe .= '<p class="status_ko">Keine Nachrichten vorhanden!</p>';
}
?>
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Nachrichten</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="style.css">
 </head>
<body>

<nav>
 <u>Nachrichten</u> |
 <?=isset($_SESSION["benutzername"]) ? '<a href="eintragen.php">Eintragen</a> |' '';?>
 <a href="suchen.php">Suchen</a> |
 <?=isset($_SESSION["benutzername"]) ? '<a href="anmelden.php?abmeldung">Abmelden</a>'<a href="anmelden.php">Anmelden</a>';?>
</nav>

<?=$ausgabe;?>

</body>
</html>

Eigenschaften

Weitere Funktionen

[Bildschirmfoto] 
Nachrichten suchen
Nachrichten suchen
[Bildschirmfoto] 
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

Herunterladen: sqlite_datenbank.zip

Viel Spaß damit!

Tipps

Spalten einer Tabelle dynamisch ändern
Manchmal möchte man die Spalten einer Tabelle dynamisch ändern so das diese individuell angezeigt werden können, wie das geht wird hier an einem Beispiel demonstriert.
Zeichenkodierung - Schriftzeichen richtig darstellen
Oft werden Umlaute, Akzentzeichen oder andere fehlerhafte Zeichen auf der Webseite angezeigt. Auch der Inhalt einer E-Mail, vom Kontaktformular der Website, kann falsche Umlautzeichen enthalten. Beispiele um diese Zeichen in der richtigen Zeichenkodierung darzustellen.
Browser-Sprachumschaltung
Diese Sprachumschaltung zeigt je nach der verwendeten Sprache (deutsch, englisch, ...) im Browser unterschiedlichen Inhalt an.
Diese Schlagwörter könnten Sie interessieren:
Floodsperre Berechnungen Wecker Linkliste Zugriffsrechte Zeitbalken Zeichenkodierung Favicon CSS-Counter SQLite MySQL Operatoren Dynamische Seiten Veranstaltungsliste Canvas CSRF-Token Event-Kalender RSS Feed PHP-Fehlermeldungen Formulare Sortierkasten Zeitansage PHPMailer Gästebuch AJAX