Wer kennt das nicht, dass der Inhalt bei Webseiten oft nicht aktuell ist, dass Termine schon seit Wochen vorbei sind und dass manch Administrator immer wieder Inhalte pflegen muss, die besser von Personen gepflegt werden sollten, die sich mit dem Inhalt auskennen.
In meinem Vortrag zeige ich eine Möglichkeit, wie man FileMaker nutzen kann die Inhalte von Webseiten zu pflegen.
Ich zeige die Voraussetzungen, welche benötigt werden und die Vor- und Nachteile der verschiedenen Lösungsansätze. Weiter werde ich die wichtigsten SQL- und PHP-Befehle, die notwendig sind um eine dynamische Webseite aufzubauen, zeigen.
Auch für das Thema der abgelaufenen Termine und die synchronisation von Bildern, werde ich eine Lösung zeigen.
FMK2019 Layout und Eigene Menüs-Management by Jörg Köster
FMK2017 - Vortrag FileMaker als Frontend zum Aktuallisieren von dynamischen Webseiten by Swen Bauer
1. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
www.filemaker-konferenz.com
Wie kann ich es dem Benutzer einfacher machen,
seine Webinhalte zu pflegen!
Swen Bauer
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten
2. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Beispiel 1 - Termine
*
3. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Beispiel 2
*
4. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Beispiel 3
*
5. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Über den Sprecher
• 1984 Studium der Informatik
• Programmierung Omnis, 4th Dimension
• 1996 FileMaker 3, FileMaker 4 - Projekte
• 2001 Wiedereinstieg mit FileMaker 5.5 / 6
• verschiedene Projekte mit FileMaker 7 und
höher
• derzeit Betreuung FileMaker 11-16 Projekte
*
6. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Agenda - Was zeige ich heute
• Verschiedene Ansätze zur Lösung der gezeigten Probleme
• Voraussetzungen für die einzelnen Ansätze
• Was ist bei der Installation zu beachten?
• Webprogrammierung, benötigte PHP-Befehle
• MySQL, was wird benötigt?
• Wie hilft uns der FileMaker?
• Praxis Workshop heute Mittag
*
7. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Was wird unbedingt benötigt?
• Webserver
• Datenbank im Internet
• PHP
Was macht das Arbeiten einfacher?
• FileMaker
• ODBC Verbindung
• Möglichkeit per FTP Dateien zu übertragen
*
8. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Begriffe
• SQL - Structured Query Language
• ODBC - Open Database Connectivity
• ODBC driver
• ODBC driver manager
• DSN -Data Source Name
• ESS - External SQL Data Source
• PHP - Hypertext Preprocessor
*
SQL - 1970er Jahren von Donald D. Chamberlin und Raymond F. Boyce entworfen
ODBC - wurde Entworfen um Anwendungsprogramme leichter mit Datenbanken zu verbinden
9. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
1. Alles im Internet
• PHP Formulare - Datenbank
(MySQL, PostgreSQL)
**
10. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
alles im Internet
Vorteile
- alles auf dem Server
Nachteil
- relativ aufwendig zu Programmieren
- Eingriff vom Anwender nötig (Bilder vorbereiten)
- Datenschutz sehr schwierig
11. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
2. Export / Import
• FileMaker Export - MySQL Datenbank Import
*
12. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
2. Export / Import
• Vorteile
• Funktioniert ohne Anbindung
• Nachteil
• Interaktion vom Anwender notwendig
• eventuell in der Größe beschränkt
13. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
FileMaker - Web PHP
• FileMaker Server - Webseite Zugriff
*
14. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
FileMaker - Web PHP
Vorteile
- schnelles FrontEnd - Daten lokal
- kein Abgleich notwendig
Nachteil
- Zugriff auf FileMaker muss immer möglich sein
- Geschwindigkeit, da Bandbreit vom FileMaker zum HTML Hoster meistens langsam
- Datensicherheit aufwendig
15. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
FileMaker - MySQL - Web
• FileMaker FrontEnd - MySQL Datenbank - Web
*
16. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
FileMaker - MySQL - Web
Vorteile
- schnelles FrontEnd - Daten lokal
- direkter Abgleich aus FileMaker
- kein eingreifen des Anwenders nötig
- für den Programmierer einfach umzusetzen, wenn alle Voraussetzungen erfüllt sind
Nachteil
- Hoster muss ODBC Verbindung von extern zulassen
- Zeit fürs Hochladen
17. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
ODBC Installation Lokal / Server
• richtige ODBC Treiber für die entsprechende Datenbank
• DSN anlegen unter System DSN
• MAC
• MySQL: https://dev.mysql.com/downloads/connector/odbc/
• ODBC Manager: http://www.odbcmanager.net
• Empfehlung: http://www.actualtech.com
• Windows
• MySQL: https://dev.mysql.com/downloads/connector/odbc/
• Achtung 32bit und 64bit Version
*
18. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
ODBC Installation Lokal / Server
Problem bei der Nutzung des original MySQL Treibers auf Apple Rechnern
Windows Rechner kein Problem.
19. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
ODBC Installation Lokal / Server
• Installation Server
Wird benötigt wenn Process Script On Server auf die ODBC Tabelle zugreift,
bei WebDirect wenn auf die ODBC Tabelle zugegriffen wird,
für die Programmierung am Server
• Installation Client
Wird für die Programmierung benötigt und wenn der Client auf die ODBC Tabelle
zugegriffen wird.
*
20. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
• benötigte SQL Befehle zum Abfragen Ändern der Datenbank
• SELECT <Felder> FROM <Tabelle> WHERE <Auswahl> ORDER BY <Feld>
{ASC|DESC}
• INSERT INTO <Tabelle><Feld1, Feld2, …> VALUES <Wert1, Wert2, ….>
• UPDATE <Table> SET <Feld1>=<Wert1>
SQL
*
21. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
phpMyAdmin / Sequel Pro / AnySQL
• phpMyAdmin
• Entwickelt zum verwalten von MySQL Datenbanken per Webbrowser
• Webseite https://www.phpmyadmin.net/
• Mac - Sequel Pro
• für SQL Datenbanken
• Bestandteil von MAMP PRO https://www.mamp.info/de/
• Windows
• AnySQL Maestro https://www.sqlmaestro.com/products/anysql/maestro/
*
22. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
PHP (1)
• Befehle zum Aufbau der Verbindung zur Datenbank
• mysqli_connect
• mysqli_connect_error
• mysqli_select_db
• mysqli_set_charset
• define
*
23. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
PHP (2)
• Befehle Daten aus der Datenbank auslesen
• mysqli_query
• mysqli_num_row
• benötigte Befehle für die Webseite
• Variablen
• for-Schleife
• mysqli_fetch_array
• mysqli_close
*
24. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Beispiel - MySQL Tabellenstruktur
*
-- phpMyAdmin SQL Dump
-- version 4.7.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Erstellungszeit: 13. Okt 2017 um 17:07
-- Server-Version: 5.6.35
-- PHP-Version: 5.6.30
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Datenbank: `web00`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `xaktuelles`
--
CREATE TABLE `xaktuelles` (
`pk` int(11) NOT NULL,
`id` varchar(40) DEFAULT NULL COMMENT '(uuid)',
`bild_name` varchar(200) DEFAULT NULL,
`bild_pfad` text,
`bild_b64` longtext,
`bild_beschreibung` text,
`ueberschrift` varchar(200) DEFAULT NULL,
`text_kurz` text,
`text_lang` text,
`datum` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Indizes der exportierten Tabellen
--
--
-- Indizes für die Tabelle `xaktuelles`
--
ALTER TABLE `xaktuelles`
ADD PRIMARY KEY (`pk`);
--
-- AUTO_INCREMENT für exportierte Tabellen
--
--
-- AUTO_INCREMENT für Tabelle `xaktuelles`
--
ALTER TABLE `xaktuelles`
MODIFY `pk` int(11) NOT NULL AUTO_INCREMENT;
25. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Beispiel - an der Datenbank anmelden
*
<?php
/*
enthält die Zugangsdaten um Abfragen an die Datenbank zu machen.
Es werden hier nur Leserechte vergeben.
Änderungen werden über den FileMaker eingesteuert.
*/
// Verbinden mit der Datenbank
// wird aufgerufen mit: require (PRIVPATH."include_db.php");
// Verbindungskonstanten für die Testumgebung setzen
if( !defined( 'DBHOST' )) define( 'DBHOST' , 'localhost' );
if( !defined( 'DBUSER' )) define( 'DBUSER' , 'root');
if( !defined( 'DBPW' )) define( 'DBPW' , 'root' );
if( !defined( 'DBNAME' )) define( 'DBNAME' , 'fmk2017' );
// MySQL Serververbindung herstellen
$dblink = mysqli_connect( DBHOST,DBUSER,DBPW,DBNAME );
// Überprüfung ob die Verbindung funktioniert hat.
// ansonsten mail an Administrator senden
if (!$dblink)
{
// mail an Administrator
$fehlermeldung = "MySQL Error beim Connect: <br />".mysqli_connect_error();
echo "$fehlermeldung <br />";
echo "<hr>";
echo "DBHOST: ".DBHOST."<br />";
echo "DBUSER: ".DBUSER."<br />";
echo "DBNAME: ".DBNAME."<br />";
die('Keine Verbindung zur Zeit möglich - später probieren!');
}
// Datenbank auswählen
mysqli_select_db( $dblink, DBNAME ) or die("Auswahl der Datenbank fehlgeschlagen");
// Charakter Set festlegen
mysqli_set_charset($dblink, "utf8");
?>
26. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
FileMaker als Frontend zum Aktualisieren von dynamischen Webseiten - Swen Bauer
Beispiel - Datenabfragen
*
<?php
session_start();
$tmp = pathinfo( $_SERVER['DOCUMENT_ROOT'] ) ;
$tmp = $tmp[ 'dirname' ] ;
$tmp = $tmp."/privat/include_start.php" ;
require_once($tmp) ;
// laden der sjbfunktions-Bibliothek
// require_once(PRIVPATH."sjb_funktionen.php");
$numresults = 0;
// SELECT Statement zusammensetzen,
// !!! Achtung, dass auch die Leerzeichen nicht vergessen werden !!!
$sql = "SELECT *";
$sql .= " FROM xaktuelles";
$sql .= " ORDER BY datum DESC";
// Dieses require muss nur einmal pro Seite aufgerufen werden,
// da erst am Schluss wieder getrennt wird
require_once(PRIVPATH."include_db.php");
$dberg = mysqli_query($dblink, $sql);
$numresults = mysqli_num_rows($dberg);
?>
…
<?php
// Die Ergebnisse nacheinander abholen und verarbeiten
for ($i = 0; $i < $numresults; $i++)
{
// Ergibnisreihe abholen und ausgeben
$row = mysqli_fetch_array($dberg, MYSQLI_ASSOC);
?>
<section>
<aside>
<img src="data:image/png;base64,<?php echo( $row["bild_b64"] ); ?>
" alt="<?php echo( $row["bild_beschreibung"] ); ?>">
</aside>
<article>
<h2><?php echo( $row["datum"].' - '.$row["ueberschrift"] ); ?></h2>
<p><?php echo( $row["text_kurz"] );
if ( !empty( $row["text_lang"] )) {
echo( "<a href="#">..mehr..</a>" );
}; ?></p>
</article>
</section>
<hr>
<?php
}
?>
…
<?php
// Datenbankverbindung wieder schließen
mysqli_close($dblink);
?>