Tutorial MySQL Datenbank anlegen und in NOF einbauen

von Webbausteine.de - Version vom 12.10.2014 - und hier geht es zum Tutorial zum Sortieren der Datenbank-Tebellen

Nachtrag: Hier geht es zu einer neueren Version vom 21.11.2017 von Werner-Zenk.de.

Hier könnt Ihr die Beispielskripte von Webbausteine.de downloaden. Ihr findet sie als mysql_datenbank.zip unter “10. Ausführung auf dem Webserver”.

Sämtliche Skripte sind hervorragend kommentiert, daher wird mein Tutorial zum Einbau in NetObjects Fusion (NOF) hier recht kurz ausfallen.

Voraussetzung ist eine MySQL Datenbank, die Ihr lediglich bei Eurem Provider als neue Datenbank einrichten müsst und PHP 5.2 (oder höher). Sämtliche benötigten Tabellen erstellt das Skript “installation.php” von Webbausteine.de selbstständig. Gewisse Kenntnisse in HTML, CSS und PHP werden nur notwendig, wenn Ihr das Erscheinungsbild ändern und an Eure Wünsche anpassen wollt.

Nachdem Ihr Euch die ZIP-Datei herunter geladen habt, entpackt Ihr diese. Ihr erhaltet ein Verzeichnis

  • mysql_datenbank

Öffnet dort die Datei:

  • verbindung.php

mit z.B. Eurem Windows-Editor. Dort tragt Ihr dann Eure, bei der Erstellung der Datenbank vom Provider zur Verfügung gestellten, Verbindungsdaten gleich oben ein. Das sieht dann bei meinem 1&1 Server ungefähr so aus:

// Verbindungsdaten zur Datenbank
$DB_HOST = "db12345678.db.1and1.com"; // Datenbank-Host
$DB_NAME = "db12345678"; // Datenbank-Name
$DB_BENUTZER = "dbo12345678"; // Datenbank-Benutzer
$DB_PASSWORT = "DeinDatenbankPasswort"; // Datenbank-Passwort

Kopiert die Dateien “installation.php” und “verbindung.php” aus dem Verzeichnis “mysql_datenbank” mit dem FTP-Programm direkt auf Euren Server, zum Beispiel in das Stammverzeichnis.

Als nächstes ruft Ihr in Eurem Browser einmalig das Skript zur Installation der Datenbank-Tabellen auf:

  • installation.php

also z.B.:

www.DeineDomain.de/installation.php

Nach der Installation löscht Ihr die Datei “installation.php” auf dem Server wieder, da diese nun nicht mehr benötigt wird.

Hier eine Ansicht meines Datenbank Projektes. Ich habe hier zu Demo-Zwecken auch die Administrator-Seiten “Eintragen” und “Bearbeiten” mit in die Navigation aufgenommen, was ich normalerweise nicht tun würde. Diese müssen unbedingt mittels einer .htaccess Datei durch ein Passwort geschützt werden, sodass nur der Administrator Zugriff auf diese Seiten erhält. Über diese Seiten könnt Ihr bequem neue Datensätze hinzufügen, ändern oder löschen.

Site Struktur

Zum Einbau in NOF (außer der Installations-Dateien) sind folgende Dateien in diesem Beispiel vorhanden:

  • auslesen.php - zum Anzeigen der Datenbank-Inhalte, hier auf meiner Startseite “Datenbank
     
  • bearbeiten.php - zum Bearbeiten oder Löschen bereits eingetragener Datensätze
     
  • eintragen.php - zum Eintragen neuer Datensätze
     
  • suche.php - zum Suchen in der Datenbank

Hier als Beispiel der PHP-Teil des Skriptes “auslesen.php” (leicht abgeändert von mir). Ö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” (hier im gleichen Verzeichnis), die Ihr ja bereits mit dem FTP-Programm auf den Server kopiert habt. Sollte diese Datei ein Verzeichnis höher liegen, dann müssten dort 2 Punkte davor ../

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

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

// Anzahl der Datensätze ermitteln
$select = $VERBINDUNG->query("SELECT `id` FROM `nachrichten` WHERE `anzeige` = '1'");
$AnzahlDatensaetze = $select->rowCount();

if ($AnzahlDatensaetze > 0) {

 // 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;
 
 // Alle Datensätze auslesen die in der DB-Spalte `anzeige` den Wert 1 haben.
 // Mit LIMIT die Ausgabe der Datensätze begrenzen.
 $select = $VERBINDUNG->query("SELECT `titel`, `autor`, `nachricht`, `datum`
 FROM `nachrichten`
 WHERE `anzeige` = '1'
 ORDER BY `datum` DESC
 LIMIT "  . $Versatz . ", " . $DatensaetzeSeite);
 $nachrichten = $select->fetchAll(PDO::FETCH_OBJ);

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

 // Formular.- und Blätterfunktion
 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>';
}
else {
 echo '<p>Keine Einträge vorhanden!</p>';
}
?>

Erstellt die anderen Seiten zur Suche und für den Administrator ganz genauso und kopiert jedesmal nur den Inhalt von <?php bis zum schließenden Tag ?>, bzw. noch vorhandene Formular Einträge.

Wie bereits erwähnt, müsst Ihr die Administrator Seiten unbedingt mittels Passwort schützen.

Dazu habe ich mir ein extra 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

Ich habe hier meine inkludierte Datei “verbindung.php” im Stammverzeichnis dieses Projektes liegen. Da ich die Administrator-Seiten nun in dem mittels .htaccess geschützten Verzeichnis “Admin” zu liegen habe, muss die relative Pfadangabe zu der inkludierten Seite “verbindung.php” angepasst werden. Hier, im Beispiel meiner Seite “eintragen.php” (leicht abgeändert von mir), mit 2 Punkten ../ = gehe ein Verzeichnis höher, aus dem Verzeichnis “Admin” in das Stammverzeichnis in dem meine Datei “verbindung.php” liegt. Natürlich müsst Ihr für alle hier verwendeten Formulare auch den Formular-Code mit in die HTML des Textfeldes kopieren, damit das Formular mit angezeigt wird.

<form action="" method="post">
 <p>
  <label>Titel:
   <input type="text" name="titel" size="45" maxlength="80" required="required" autofocus="autofocus">
  </label>
 </p>
 <p>
  <label>Autor:
   <input type="text" name="autor" size="25" maxlength="30" required="required">
  </label>
 </p>
 <p>
  <label>Nachricht: <br>
   <textarea rows="10" cols="40" name="nachricht" required="required"></textarea>
  </label>
 </p>
 <p>
  <label>
   <input type="checkbox" name="anzeige"> Nachricht anzeigen
  </label>
 </p>
 <input type="submit" value="Absenden">
</form>


<?php
// Wurde das Formular abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST") {

 // Die Formulareingaben müssen hier überprüft werden ...

 // Verbindung zur Datenbank aufbauen.
 // Die Verbindung sollte erst aufgebaut werden wenn diese benötigt wird.
 include "../verbindung.php";

 // Der Variable $anzeige einen Wert zuweisen.
 $anzeige = isset($_POST["anzeige"]) ? 1 : 0;

 // Nachricht eintragen
 // prepare() bereitet die Anweisung für die Ausführung vor.
 // Die Platzhalter werden hier anstatt den POST-Variablen eingesetzt.
 $insert = $VERBINDUNG->prepare("INSERT INTO `nachrichten`
   SET
`titel`     = :titel,
`autor`     = :autor,
`nachricht` = :nachricht,
`anzeige` = :anzeige,
`datum` = NOW()");

 // Die Platzhalter werden mit $insert->bindValue() durch den
 // Inhalt der POST-Variablen ersetzt und maskiert.
 $insert->bindValue(':titel', $_POST["titel"]);
 $insert->bindValue(':autor', $_POST["autor"]);
 $insert->bindValue(':nachricht', $_POST["nachricht"]);
 $insert->bindValue(':anzeige', $anzeige);

 // $insert->execute() führt die vorbereitete Anweisung aus.
 // Bei einem erfolgreichen Eintrag wird 'true' zurück gegeben.
 if ($insert->execute()) {
  echo '<p>Die Nachricht wurde eingetragen.</p>';
 }
 else {
  // Andernfalls (bei 'false') wird eine SQL-Fehlermeldung angezeigt.
  print_r($insert->errorInfo());
 }
}
?>

Hier eine Ansicht vom oben blau markierten FormularEintragen”. Hier kann der Admin neue Datensätze eintragen. Solange “Nachricht anzeigen” nicht angehakt ist, wird der Eintrag auch nicht auf der Webseite erscheinen - so kann man also zunächst mal testen und sich den Eintrag auf der Seite “Bearbeiten” angucken.

In MySQL Datenbank eintragen

Hier eine Ansicht vom Formular “Bearbeiten”. Hier könnt Ihr bereits eingetragene Datensätze ändern oder löschen, aktivieren oder deaktivieren. 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 ändern

Viel Erfolg!

Tutorials von Thomas Frei-Herrmann

diese Seite weiter empfehlen


Counter Statistik