Filemaker
Unsere neue Webseite ist online – Willkommen bei FileMaker Experts!
Unsere neue Webseite ist online – Willkommen bei FileMaker Experts!
Liebe Leserinnen und Leser, wir freuen uns riesig, euch heute unsere brandneue Webseite vorzustellen: FileMaker Experts. 🎉
Nach intensiver Planung, Gestaltung und Umsetzung ist unsere neue Online-Präsenz endlich live! Hier findet ihr alles, was ihr über unsere Dienstleistungen, Lösungen und Expertise im Bereich FileMaker, PHP und Datenbank-Engineering wissen müsst.
Was euch erwartet: • Klares Design und Übersichtlichkeit: Unsere Inhalte sind jetzt noch strukturierter, damit ihr schnell die Informationen findet, die ihr sucht. • Neue Features: Von FAQs über Blogbeiträge bis hin zu einer direkten Kontaktmöglichkeit – unsere Seite bietet alles, um euch optimal zu informieren. • Einblicke in unsere Arbeit: Schaut euch an, wie wir individuelle Datenbanklösungen entwickeln, die perfekt auf eure Bedürfnisse zugeschnitten sind.
Besucht uns unter: filemaker-experts.de
Scriptaufruf aus einem WebViewer
Wie starte ich ein FileMaker Script aus einer Webseite heraus.
Häufig haben wir das Problem, komplizierte Berechnungen ausführen zu müssen. Gerade wenn viele Datensätze betroffen sind, macht es Sinn, diese Berechnungen auszulagern. Wir übergeben einem PHP-Script alle benötigten Informationen und verarbeiten nur noch die Rückgabe. Das spart unübersichtliche FileMaker-Serverscripte die oft wie eine Blackbox sind. Kein Debugger, keine Zwischenmeldung über das Dialogfenster. Nur umständliche Rückgaben in Folge-Scripte die dann überprüft werden können. Es kann aber auch sein das wir ganz normale Funktionen z.B. Google Maps nutzen wollen. Wir können dann natürlich Daten anzeigen lassen. Adressdaten und andere Daten. Aber was wenn wir aus dem WebViewer dann den entsprechenden Datensatz aufrufen wollen? Dann müssen wir auf jeden Fall in der Lage sein, unsere Datenbank aufzurufen, ein Script und natürlich benötigen wir einen Parameter damit unser Script auch den entsprechenden Datensatz findet. So ein klassischer Aufruf läuft über die Angabe der Datenbank, auch wenn der WebViewer ja schon aus der Datenbank gestartet wurde, wir geben das Script und den Parameter an.
Gut zu sehen, der Datenbankname, der Scriptname und am Ende befindet sich der dynamische Parameter. In einem Folgepost werde ich einmal beschreiben wie wir Geo Daten übergeben, sortieren und am Ende eine Tourenplanung zurückbekommen die wir in FileMaker verarbeiten können.
Externer Login über eine URL
Im Allgemeinen ermöglicht FileMaker die Integration von externen Datenquellen und Diensten über verschiedene Methoden, einschließlich der Verwendung von URLs. Externe Logins könnten erforderlich sein, wenn Sie auf Datenbanken oder Ressourcen außerhalb von FileMaker zugreifen möchten, oder wenn Sie eine Benutzerauthentifizierung für den Zugriff auf bestimmte Informationen benötigen. Genauso kann es Notwendig sein das bestimmte Personen Zugriff auf Dateien oder Datensätze einer FileMaker Datenbank erhalten sollen. Aber wie kann ich Steuern, das nur ein bestimmter User mit bestimmter Berechtigung auf meine geteilte Datei zugreifen kann? Benötigt wird auf jeden Fall ein FileMaker-Server. Eine Datei die nur dem ersten Aufruf dient und die aus der URL gelesenen Parameter verarbeitet und die eigentliche Haupt-Datei öffnet.
Was ist FileMaker
FileMaker ist eine Plattform für die Entwicklung von benutzerdefinierten Apps und Datenbanklösungen. Sie eignet sich gut für den Mittelstand, da sie es Unternehmen ermöglicht, maßgeschneiderte Anwendungen zu erstellen, die speziell auf ihre individuellen Anforderungen zugeschnitten sind. Hier sind einige Gründe, warum FileMaker im Mittelstand beliebt sein könnte:
-
Benutzerfreundlichkeit: FileMaker bietet eine intuitive Benutzeroberfläche, die es Nutzern ermöglicht, ohne umfangreiche Programmierkenntnisse leistungsfähige Apps zu erstellen und zu verwalten.
-
Flexibilität: Mittelständische Unternehmen haben oft spezifische Anforderungen, die nicht immer von Standardsoftware abgedeckt werden. Mit FileMaker können Unternehmen ihre eigenen benutzerdefinierten Lösungen entwickeln, um ihre speziellen Anforderungen zu erfüllen.
-
Schnelle Entwicklung: FileMaker ermöglicht eine relativ schnelle Entwicklung von Anwendungen im Vergleich zu traditionellen Entwicklungsplattformen. Dies kann für Mittelständler von Vorteil sein, die agile Ansätze bevorzugen.
-
Integration: FileMaker bietet Möglichkeiten zur Integration mit anderen Systemen und Diensten. Dies ermöglicht es Unternehmen, ihre bestehenden Softwarelösungen nahtlos in die FileMaker-Plattform zu integrieren.
-
Skalierbarkeit: Die FileMaker-Plattform ist skalierbar und kann mit dem Wachstum eines Unternehmens mitwachsen. Dies ermöglicht es Mittelständlern, ihre Anwendungen und Datenbanken entsprechend ihren sich ändernden Anforderungen anzupassen.
-
Mobilfreundlichkeit: FileMaker bietet Möglichkeiten zur Entwicklung von mobilen Apps, die auf verschiedenen Geräten wie Tablets und Smartphones funktionieren. Dies ist besonders wichtig, da die Arbeitsweise von Unternehmen immer mobiler wird.
-
Sicherheit: Die Plattform bietet Funktionen zur Sicherung von Daten und Zugriffsrechten, was besonders wichtig ist, wenn es um geschäftskritische Informationen geht.
Um FileMaker effektiv in Ihrem Betrieb einzusetzen, ist es ratsam, mit einem FileMaker-Entwickler zusammenzuarbeiten, um die spezifischen Anforderungen des Unternehmens umsetzen zu können.
Die zweite Normalform (2NF)
Die Zweite Normalform (2NF) ist ein Konzept in der Datenbanktheorie, das bei der Gestaltung von Datenbanktabellen verwendet wird, um Redundanz und Anomalien in den Daten zu vermeiden. Die 2NF baut auf der ersten Normalform (1NF) auf und stellt sicher, dass Daten in einer Tabelle zusätzlich zu den Anforderungen der 1NF bestimmte weitere Bedingungen erfüllen.
Um die 2NF zu erfüllen, muss eine Tabelle zwei Kriterien erfüllen:
Alle Nichtschlüsselattribute in der Tabelle müssen funktional von einem ganzen Schlüssel (Primärschlüssel) abhängen, nicht nur von einem Teil des Schlüssels. Mit anderen Worten, alle Nichtschlüsselattribute sollten voll funktional von der Gesamtheit des Primärschlüssels abhängen, um Redundanzen und inkonsistente Daten zu vermeiden.
So kann z.B. eine Kontaktdatenbank aus 2 Tabellen bestehen. Daten wie Name, Vorname, Straße, Land usw. Die Telefonnummer steht aber in einer anderen Tabelle. Nun wird der eine oder andere sich fragen, Warum? Ganz einfach. So ist es ja möglich das der Kontakt nicht nur eine Mobil-Nummer und eine Festnetz-Nummer hat, sondern diverse für sein Business zugeschnittenen Telefon-Nummern. Nun will ich doch aber nicht unter meiner Kontakt-Tabelle 20 oder 30 Felder für diverse Telefon-Nummern führen. Also gehen die Telefon-Nummern in eine andere Tabelle. Verbunden werden die Datensätze mit dem Primärschlüssel. In der Praxis wäre dies wahrscheinlich die Kontakt_ID. Jeder Kontakt hat seine eindeutige Kontakt_ID. Jede zum Kontakt gehörende Telefon-Nummer bekommt diese Kontakt_ID zugeordnet. Nun kann ich entweder über einen SQL-Befehl oder in FileMaker über eine Referenz ganz einfach die zum Kontakt gehörenden Nummern anzeigen lassen.
Es dürfen keine teilweisen Abhängigkeiten vorhanden sein, das heißt, Attribute sollten nicht von einem Teil des Schlüssels abhängen, sondern immer vom gesamten Schlüssel.
Wenn eine Tabelle die 2NF nicht erfüllt, kann dies zu Anomalien wie Update-Anomalien (Änderungen führen zu inkonsistenten Daten), Einfüge-Anomalien (Einfügen neuer Daten ist schwierig) und Lösch-Anomalien (Löschen von Daten führt zu unerwartetem Verlust von Informationen) führen.
Um eine Tabelle in die 2NF zu überführen, müssen teilweise abhängige Attribute in separate Tabellen ausgelagert werden, wobei Beziehungen zwischen den Tabellen durch Fremdschlüssel hergestellt werden. Dies verbessert die Datenintegrität und erleichtert das Datenmanagement.
Es ist wichtig zu beachten, dass die Normalisierung von Datenbanken ein komplexer Prozess ist, der sorgfältige Planung und Analyse erfordert, um die optimale Struktur für die Daten zu gewährleisten. Häufig ist der Planungsprozess natürlich bedingt durch Altlasten oder Fehlerhaft aufgebaute Datenbanken Hinfällig. Dann beginnt die Kernkompetenz des Datenbankentwicklers. Daten werden neu strukturiert, aufgeteilt oder aber auch gelöscht.
Ein hervorragendes Instrument dafür ist FileMaker. Über sein mächtiges Import und Export-Tool, seine einzigartige Art über Relationen Daten zu managen, können auch völlig aus der Struktur geratene Datenbanksysteme neu strukturiert, aufgebaut oder aber die Daten neu Organisiert werden.
FileMaker im Mittelstand
FileMaker ist eine Datenbankplattform, die es Unternehmen ermöglicht, benutzerdefinierte Apps zur Verwaltung und Organisation von Daten zu erstellen. Sie eignet sich gut für den Einsatz im Mittelstand, da sie eine flexible Lösung für die Datenbankentwicklung bietet, ohne dass umfangreiche Programmierkenntnisse am Anfang erforderlich sind. Hier sind einige Gründe, warum FileMaker für den Mittelstand das Perfekte Datenbanktool ist:
Einfache Entwicklung: FileMaker bietet eine benutzerfreundliche Oberfläche zur Erstellung von Datenbankanwendungen. Dies ermöglicht Mitarbeitern im Mittelstand, eigene Apps zu erstellen, um spezifische Geschäftsanforderungen zu erfüllen, ohne dass umfassende Entwicklungskenntnisse erforderlich sind. Dies gilt zumindest für den Anfang. So ist die Lernkurve am Anfang sehr flach, steigt aber rasant wenn die Ansprüche an die Software steigen.
Anpassbarkeit: Mittelständische Unternehmen haben oft einzigartige Anforderungen, die nicht von Standardsoftware abgedeckt werden. FileMaker ermöglicht die Erstellung von maßgeschneiderten Lösungen, die genau auf die Bedürfnisse des Unternehmens zugeschnitten sind. So wird der Kunde zwar seine Prozesse optimieren, aber er muss seine Prozesse nicht umstellen. Dies ist gerade für Mitarbeiter, die seit Jahren die Prozesse bestimmt und optimiert haben, sehr wichtig.
Integration: FileMaker kann mit anderen Anwendungen und Systemen integriert werden, was für den Mittelstand wichtig ist, da Unternehmen oft mit verschiedenen Softwarelösungen arbeiten. Integrationen können den Datenaustausch und die Effizienz verbessern. So ist es eigentlich möglich nahezu mit jedem System zu Kommunizieren. Über Schnittstellen wie Java-Script, JSON, XML oder PHP spricht FileMaker mit jeder Software oder aber auch Hardware.
Skalierbarkeit: FileMaker-Anwendungen können mit dem Wachstum des Unternehmens mitwachsen. Wenn das Unternehmen wächst, können weitere Funktionen und Module hinzugefügt werden, um den steigenden Anforderungen gerecht zu werden.
Datenübernahme: FileMaker besitzt ein sehr mächtiges Werkzeug zur Übernahme von Daten aus anderen Systemen. Ob nur geänderte Datensätze oder neue Datensätze importiert werden sollen, schnell und effizient ist dieser Prozess durchführbar.
Mobilität: FileMaker bietet die Möglichkeit, mobile Apps für iOS- und Android-Geräte zu entwickeln. Dies ist insbesondere für Unternehmen im Mittelstand von Vorteil, da Mitarbeiter häufig unterwegs sind und dennoch auf geschäftskritische Daten zugreifen müssen.
Sicherheit: FileMaker bietet Sicherheitsfunktionen, um die Daten der Unternehmen zu schützen. Mittelständische Unternehmen können sensible Daten speichern, während sie gleichzeitig sicherstellen, dass nur autorisierte Personen darauf zugreifen können.
Kostenkontrolle: Im Vergleich zu vielen komplexen Softwareentwicklungsprojekten kann die Entwicklung von FileMaker-Anwendungen kostengünstiger sein. Dies liegt in der schnelleren Entwicklung der Lösungen. So ist durch die Kombination von Datenbank und Oberfläche eine effektivere Umsetzung von Projektentwicklungen für den Kunden möglich.
Schnelle Implementierung: Mit FileMaker können Anwendungen vergleichsweise schnell entwickelt und implementiert werden. Änderungen in Firmenabläufen und Prozessen können schnell mit FileMaker dargestellt werden.
Home Office: Was wenn die Mitarbeiter oder aber auch Kunden aus der Ferne auf die Daten zugreifen sollen? Dafür bietet FileMaker eine einzigartige Möglichkeit. WebDirect stellt die Softwarelösung Eins zu Eins im Webbrowser dar. Mit wenigen Handgriffen ermöglicht der Handwerksbetrieb, die Kanzlei einem Berechtigtem den Zugang zum System. Natürlich funktionieren auch die üblichen Zugriffsmöglichkeiten. Per RDP, per Client oder aber auch über eigens entwickelte Webseiten.
Eine häufig unterschätzte Fähigkeit von FileMaker, kleine Änderungen. Wer kennt es nicht? Ein Feld fehlt im Layout, eine Bezeichnung ändert sich, der neue Drucker lässt Bereiche des Layouts unbeachtet und die Formulare sehen nicht mehr aus wie mit der alten Hardware. In diesen Fällen kann der Nutzer mit entsprechender Berechtigung selbst Hand anlegen. Es bedarf nicht unbedingt der Unterstützung eines Entwicklers.
Die Erste Normalform (1NF)
Die Erste Normalform (1NF) ist dann gegeben, wenn alle Informationen in einer Tabelle atomar vorliegen.
So die Definition aus entsprechender Fachliteratur.
Aber was bedeutet es ?
Es bedeutet, wir müssen alle Informationen in jeweil eine Tabellenspalte bringen.
z.B. Adressdaten ohne Normalisierung.
Name | Straße | Ort |
---|---|---|
Ronny Schrader | Summterstr. 43 | 16547 Birkenwerder |
Nun die gleichen Daten in erster Normalform.
Vorname | Nachname | Straße | Nr. | PLZ | Ort |
---|---|---|---|---|---|
Ronny | Schrader | Summterstr. | 43 | 16547 | Birkenwerder |
Schon haben wir die erste Normalform erstellt.
Die Nullte Normalform
Normalisierung bezeichnet den Vorgang der Strukturierung und Umorganisation eines relationalen Datenbankschemas. Daten werden in verschiedene Tabellen aufgeteilt und mittels Beziehungen miteinander verknüpft, um Redundanzen, Inkonsistenzen und Anomalien zu vermeiden und zu beseitigen.
Die Nullte Normalform ist eine der Normalformen in der Datenbankentwicklung. Die Normalformen sind ein Regelsystem, welches die Bauart von Tabellen in relationalen Datenbanken festlegt. Die Nullte Normalform ist die erste Normalform und wird auch als Grundnormalform bezeichnet. In diesem Blogpost wollen wir uns die Nullte Normalform genauer anschauen und erklären, wie sie in der Datenbankentwicklung angewendet wird.
In der Nullten Normalform werden alle Elemente der Datensammlung in einer Tabelle gespeichert.
Ein häufiges Beispiel ist die Erfassung von Adressdaten in Excel. Ob Straße, Stadt oder Postleitzahl, alle Daten befinden sich in einem Datensatz.
Was bedeutet das für die Datenhaltung? Immer wieder werden schon vorhandene Informationen erfasst. Postleitzahlen, Stadt oder auch Vornamen.
Oder was passiert, wenn in den Adressdaten nur ein oder zwei mögliche Telefonnummern erfasst werden können?
Nun habe ich schon den ersten Ansatz für eine regelkonforme Normalisierung. Telefondaten, Mailadressen, kurz alle Kommunikationswege müssen in eine weitere Tabelle ausgegliedert werden.
PLZ und auch die Stadt kann problemlos ausgegliedert werden. Wobei wir bei PLZ und Stadt den Sonderfall haben, PLZ als eindeutigen Schlüssel verwenden zu können.
Über die PLZ kann die Stadt eindeutig identifiziert werden. So hängt an der 16547, die Kleinstadt Birkenwerder. Also werde ich nur noch einmal die Kleinstadt Birkenwerder erfassen. Über den eindeutigen Schlüssel 16547, wird bei jeder Adresse automatisch Birkenwerder referenziert.
Zusammenfassend können wir sagen, die Nullte Normalform darf in der Praxis keine Anwendung finden. Sie darf lediglich bei der Anforderungsanalyse für eine Datenbankentwicklung genutzt werden.
Normalisierung von Datenbanken
Datenbanken sind ein wesentlicher Bestandteil unseres Alltags, sei es beim Einkaufen, beim Surfen im Internet oder bei der Suche nach einem neuen Job. Oft werden sie aber auch als komplex und schwer verständlich abgestempelt. Dabei ist es gar nicht so schwer, eine eigene Datenbank zu erstellen und zu verwalten. In diesem Blogpost werden wir uns daher einige verschiedene Methoden der Datenbankmodellierung in Filemaker ansehen.
Struktur ist ein wichtiges Konzept in der Filemaker-Datenbankentwicklung. Die richtige Struktur kann Ihre Datenbanken effizienter und einfacher zu verwalten machen. Wenn Sie eine neue Datenbank erstellen, sollten Sie sich Zeit nehmen, um die Struktur sorgfältig zu planen. Dies wird Ihnen helfen, Zeit und Mühe zu sparen, wenn Sie Ihre Datenbanken später verwalten oder ändern müssen.
Deshalb ist bei der Entwicklung die Struktur zu normalisieren.
Normalisieren eines relationalen Datenbankmodells beschreibt die Trennung von Attributen in zusätzliche Relationen (Tabellen) unter Beachtung von Normalisierungsregeln und Normalformen, sodass eine Form entsteht, die keine unnötigen Redundanzen mehr beinhaltet.
In der Regel ist die Dritte Normalform ausreichend, um die perfekte Balance zwischen Redundanz, Performance und Flexibilität für eine Datenbank zu erzielen. Selbstverständlich gibt es auch Sonderfälle, wie zum Beispiel im wissenschaftlichen Bereich, wo eine Datenbank bis zur 5. Normalform normalisiert werden muss.
Im nächsten Blog werde ich auf die verschiedenen Normalformen eingehen.
So kreierst du einfach und schnell UI Mockups mit Filemaker
So kreierst du einfach und schnell UI Mockups mit Filemaker
Mockups sind ein wichtiges Werkzeug für die UI-Design-Branche. Sie helfen uns, unsere Ideen zu visualisieren und zu präsentieren, bevor wir sie in Code umwandeln. In den letzten Jahren haben sich viele verschiedene Mockup-Tools etabliert, um den Designern die Arbeit zu erleichtern. Wir können dafür auch Filemaker nutzen.
Der Vorteil liegt auf der Hand. Kleine Funktionalitäten lassen sich sogar schon in Filemaker einbauen und eine Präsentation der UI mit integrierter Funktion ist anschaulicher wie die Vorstellung der Nutzeroberfläche in Papierform. Hinzu kommt das es in Filemaker verschiedene Themen gibt. Diese lassen sich erweitern, neu erstellen und bei einer Präsentation auch nacheinander anwenden.
Somit ist es möglich viele verschiedene Oberflächen-Designs über die eigentliche Arbeitsoberfläche nachzubilden.
Fazit:
Filemaker ist ein Tool, das sehr gut für die Erstellung von Benutzeroberflächen und Prototypen geeignet ist. Es bietet eine Vielzahl von Vorlagen und Werkzeugen, mit denen Sie Ihre Ideen schnell und einfach umsetzen können.
Relationale Datenbanken und was hat Filemaker damit zu tun?
Relationale Datenbanken sind ein wichtiger Bestandteil der IT-Infrastruktur in vielen Unternehmen. Sie können sehr komplex sein und eine Menge an wertvollen Informationen enthalten. Filemaker ist eine relationale Datenbank-Software, die viele der gleichen Funktionen und Vorteile bietet. In diesem Blogpost werden wir uns einige der Gemeinsamkeiten von Filemaker und relationalen Datenbanken anschauen
Einführung in relationale Datenbanken
Was ist eine relationale Datenbank? Eine relationale Datenbank ist eine Art von Datenbank, die Tabellen von Daten verwendet, um Inhalte zu speichern. Die zentralen Konzepte einer relationalen Datenbank sind Tabellen, Spalten und Zeilen. Tabellen sind die Hauptstruktur der Datenbank, in denen die Daten gespeichert werden. Spalten sind die Felder in den Tabellen, in denen bestimmte Informationen gespeichert werden. Zeilen sind die Einträge in den Tabellen, in denen die Daten gespeichert werden. Die Anwendungsbereiche einer relationalen Datenbank sind unter anderem Unternehmensanwendungen, Finanzdaten, Kundendaten, Lieferantendaten, Vertriebsdaten, Marketingdaten und so weiter.
Die Vorteile einer relationalen Datenbank
Die Struktur kann normalisiert werden. Das heißt, wir vermeiden doppelte Anlage von Daten. Bei Adressen gibt es doch keinen Grund, 20000 mal Berlin als Wohnort zu hinterlegen. Also wird der Wohnort in eine externe Tabelle gelegt. Berlin existiert genau 1 mal. Aber bei allen erfassten Datensätzen wo der Wohnort Berlin hinterlegt wurde, taucht auch Berlin auf.
Es gibt einige Dinge, die man beachten sollte, wenn man Filemaker als relationale Datenbank einsetzen möchte. Zuerst einmal ist es wichtig zu verstehen, was eine relationale Datenbank ist. Jede Tabelle hat ein Primärschlüssel, der eindeutig ist. Dieser Primärschlüssel kann in anderen Tabellen als Fremdschlüssel verwendet werden, um die Beziehungen zwischen den Tabellen herzustellen.
Es ist in Filemaker möglich Datensätze per SQL Befehl aufzurufen. Schreiben per SQL-Befehl ist derzeit nur unter Nutzung von Plugins möglich.
Deshalb ist es unabdingbar, jede Tabelle, in die ich Daten schreiben will, per Schlüssel mit einander zu verbinden.
Filemaker – die perfekte Datenbank-Software für Unternehmen
Filemaker ist ein Softwareprogramm, das zur Erstellung von Datenbanken genutzt wird. Die Vor- und Nachteile von Filemaker sind, dass es eine einfach zu bedienende Oberfläche hat und dass es eine Vielzahl von Funktionen bietet, die für die Erstellung einer Datenbank erforderlich sind. Die Nachteile von Filemaker sind, dass es einige Zeit in Anspruch nimmt, um sich mit dem Programm vertraut zu machen und dass es einige Funktionen bietet, die für die Erstellung einer Datenbank nicht erforderlich sind.,
Sie fragen sich vielleicht, warum wir Filemaker für unsere Kunden nutzen. Die Antwort ist einfach: Filemaker funktioniert auch im Internet mit PHP. Dies bedeutet, dass unsere Kunden ihre Datenbanken überall und jederzeit verwenden können. Natürlich gibt es auch einige Nachteile, aber wir denken, dass die Vorteile überwiegen. Zum Beispiel ist Filemaker sehr einfach zu bedienen und hat eine sehr intuitiv gestaltete Oberfläche. Außerdem ist es sehr flexibel und kann an die Bedürfnisse unserer Kunden angepasst werden. Fazit: Wir glauben, dass Filemaker eine großartige Lösung für unsere Kunden ist und wir sind begeistert von den Möglichkeiten, die es bietet.,
Vor allem für kleine und mittelständische Unternehmen ist Filemaker ideal.
Aus Rodro-Programmierung wird MaRo-Programmierung
Nachdem ich viele Jahre unter dem Label “Rodro-Programmierung” Datenbanken entwickelt habe, eine Auszeit im Bereich Entwicklung genommen habe, nun eine Namensänderung.
Als Geschäftsführer und Inhaber der MaRo-Pflegedienste stand nun fest, dass auch der Bereich der Datenbankentwicklung unter dem Label “MaRo” stehen soll.
FileMaker und PHP (Teil 1 Server Einrichtung)
FileMaker kann seine Daten problemlos auf verschiedenen Clients auf Mac OS, Windows, iOS oder gar Android darstellen. Was passiert aber wenn dem Nutzer dem ich die Daten zur Verfügung stellen möchte keinen FileMaker-Client besitzt oder installieren möchte bzw. darf. Was ist wenn unzählige Nutzer sich nur kurzzeitig auf einem FileMaker System einlochen um Daten zu erfassen oder zu administrieren? Dann benötigen wir eine Lösung im Web-Browser. Na das ist ja mit FileMaker eigentlich kein Problem. Es braucht ja nichts mal einen Server. Die entsprechende Datei einfach über einen Client oder über einen FileMaker Server per IWP zur Verfügung stellen. Das geht extrem schnell, die zu sehenden Webseiten werden einfach innerhalb von FileMaker editiert. Aber diese Lösung stellt einen vor verschieden Probleme.
z.B.
-keine Passwortsterne
-kein Return um die Webseite zu aktualisieren
-läuft nicht innerhalb eines Frames
-Button des Browsers für VOR und ZURÜCK können bei Benutzung
dazu führen das Benutzer im falschen Datensatz landen.
-Nur eine Einstiegs-Seite für die Datenbank
Diese Liste kann noch um einige Punkte erweitert werden, aber sind das die Punkte für die sich keine wirkliche Ersatzlösung findet. Also dann nutzen wir halt einfach FileMaker in Kombination mit PHP. Da ich persönlich immer auf einem Remote-Server (FileMaker 11 oder 12 Adv. auf auf Windows Shared Hyper-V VM) entwickle habe ich die endsprechenden Vorraussetzungen schon geschaffen um PHP mit FileMaker zu kombinieren.
Die Einrichtung des FileMaker Servers ist eigentlich über die Einsatzplanung und den Wizzard des FileMaker Servers leicht zu bewerkstelligen und soll nicht Thema der kleinen Einführung sein.
Wichtig ist das nach der Einrichtung des Servers die entsprechenden PHP Eigenschaften als OK gekennzeichnet sind. Die Entscheidung ob man den vorhandenen IIS oder einen Apache Server nutzt bleibt einem überlassen. Ich persönlich nutze den schon vorhandenen IIS.
Um später schnellen Zugriff auf den Ordner der die PHP Dateien enthält zu haben sollte man sich einen FTP Zugang einrichten. Ich nutze dafür FileZilla. Damit umgehe ich die ganze relativ komplexe Einrichtung des FTP Zuganges über den IIS-Manager.
Als Home Verzeichnis dient dabei der Ordner in den wir unsere PHP Dateien legen werden. Standard ist beim IIS das Verzeichnis C:inetpubwwwroot…. und den Ordner wwwroot legen wir dann einfach einen Projektordner mit der Bezeichnung unserer Wahl.
Nun sind wir soweit das wir unsere Werkzeuge für die PHP Bearbeitung und auch den FileMaker Client für die Nutzung mit dem Server vorbereiten. Als erstes benötigen wir natürlich eine Datei die wir über den FileMaker Server zur Verfügung stellen können. Wichtig ist dabei das wir dieser Datei die Berechtigung für den Zugriff über PHP zuweisen. Dies geschieht über Ablage/Verwalten/Sicherheit/Konten/Berechtigung bearbeiten. Dabei benötigt z.B. der User „WEB“ den Zugriff über Acres via PHP Web Publishing (fmphp).
Anschliessend schiebe ich die Datei entweder per FTP oder einfach über den RDP Client über mein Remote-Zugriff auf den Server. Dort einfach über die FileMaker-Server Konsole zur Verfügung stellen.
Ich persönlich nutze für die Bearbeitung der PHP Dateien eine IDE mit der Bezeichnung PHPStorm. Diese besitzt den Vorteil eines integrierten FTP-Clients. Somit kann ich jede Änderung einer Datei Offline durchführen und sofort per Upload in meinen Projektordner laden. In einem extern geöffneten Browser habe ich dann immer die Möglichkeit sofort den Erfolg oder Misserfolg meiner Arbeit zu begutachten.
Voraussetzung?
Erstellen Sie erstmal ein neues Projekt innerhalb der IDE, legen einen Offline Projektordner fest. Anschliessend können Sie unter Toll/Deployment/Configuration einen FTP Zugang anlegen. Wichtig ist nachdem dieser Zugang funktioniert unter Mappings die Ofline Dateien und die Online Dateien zusammenzuführen. Dabei legen Sie den Local Path und Web Path fest.
z.B.
Local Path: /Users/ronny/Documents/PHP-Developer/PHPStorm/TNM/FileTNM2
Web Path: /FileTNM2/FileTNM2
Deployment Pat: FileTNM2
Nun steht dem automatischen Upload der Dateien nichts mehr im Weg.
Was benötigen wir sonst noch? Die FileMaker API s oder Klassen. Diese befinden sich auf dem Server im Ordner C:Program FilesFileMakerFileMaker ServerWeb Publishingpublishing-enginephp. Von dort kopieren wir uns den Ordner FileMaker und die Datei FileMaker.php in unseren Projektordner.
FileMaker Synchronisation...
Ab 7 Januar stellen wir eine neue Synchronisations-Lösung für FileMaker vor. Ob Server - Client oder FileMaker Go - Server und umgekehrt. Diese Lösung funktioniert ohne Plugin.
Kreditkartenabrechnung mit FileMaker Teil 2
Nachdem wir im ersten Teil die Grundvoraussetzungen erarbeitet haben gehen wir nun zum eigentlichen Teil innerhalb von FileMaker über.
Für die Anzeige der Daten vom Zahlungs-Dienstleister nutzen wir ein kleines Feld vom Typ WebViewer. Die URL des WebViewers ergibt sich aus dem Pfad zum PHP-Script auf dem Webserver und unseren Parametern die wir aus FileMaker auslesen:
URL.Parameter= “http://www……………………com/Semicon2012/request.php”
&
“?"&“LastName=” & KONTAKT.T_Last_Name & “&” &“Price="&Preis_Heidel_Uebertragung&"&” & “Street=” & KONTAKT.T_Adress & “&” & “Zip=” & KONTAKT.Z_ZIP & “&” & “Stadt=” & KONTAKT.T_City & “&” & “Land=” & KONTAKT.T_Country & “&” & “Mail=” & KONTAKT.T_EMail & “&” & “Buchung=” & INVOICE.BUCHUNG.Nr_1_2 & “&” & “FirstName=” & KONTAKT.T_First_Name&"&” & “Code=” & KONTAKT.SICHERHEIT.CODE
Als Webadresse vergeben wir das Feld URL.Parameter
Rufen wir nun das Layout auf und der WebViewer wird aktiv erscheint die Eingabemaske vom Zahlungs-Dienstleister incl. der eingegeben Parameter wie Zahlungsbetrag, Adresse und anderer Werte.
Nun gibt der Kreditkarteninhaber nur noch seine Kartennummer ein und die Verifikation Number. Nach dem Klick auf Pay Now wird vom Zahlungs-Dienstleister die Zahlung verarbeitet. Im Anschluss wird das PHP-Script “www……………………com/Semicon2012/response.php” aufgerufen.
Das Script ruft je nach Wunsch eine URL auf die dann wieder in unserem WebViewer angezeigt wird.
<?php
//this page is called after the customer finishes
//payment with the Web Payment Frontend.
//It must be hosted YOUR system and accessible
//to the outside world.
//It always must respond with a URL that defines
//which page the WPF should redirect to.
//this new page also MUST be hosted on your system
//AND it musst be accessible so that the WPF can
//redirect the users browser to it.
// PROCESSING.RESULT gets PROCESSING_RESULT when posting back (URL encoding)
$returnvalue=$_POST[‘PROCESSING_RESULT’];
if ($returnvalue)
{
if (strstr($returnvalue,“ACK”))
{
print “Location: http://www…………………………com/Semicon2012/success.html”;
}
else
{
print “http://www……………………………com/Semicon2012/error.html”;
}
}
?>
Wird als Wert ACK vom Zahlungs-Dienstleister an das Script zurückgegeben wird die URL für die erfolge Transaktion aufgerufen. ACK ist immer der Wert für erfolgte Transaktionen.
Nun da wir wissen welcher Wert im WebViewer auftaucht, müssen wir diesen nur noch überprüfen.
Über GetLayoutObjectAttribute(“Webviewer” ; “Source”) können wir den Inhalt des WebViewers abfragen. Vergleichen wir diesen ausgelesenen Inhalt z.B. mit der Funktion Exakt (InhaltWebViewer; Vergleichsfeld) können wir bestimmen ob eine Transaktion erfolgt ist oder nicht.
Mit dieser Methode kann man Kreditkartenlösungen ohne Plugin realisieren.
Kreditkartenabrechnung mit FileMaker
Mit FileMaker eine Kreditkartenabrechnung zu starten ist auf den ersten Blick nicht trivial. Für eines meiner letzten Projekte musste ich aber eine Schnittstelle zu einem Anbieter implementieren. Nun gibt es eine Hand voll Plugin-Anbieter die sich dem Thema angenommen haben. Leider arbeiten diese Plugin,s meist nur mit einem speziellem Zahlungsanbieter. Der von mir benötigte war natürlich nicht dabei.
Wichtig ist in diesem Zusammenhang zu wissen das es mir gar nicht erlaubt ist Daten wie Kreditkarten-Nummer in FileMaker vorzuhalten, zu verarbeiten und dann wie von mir im ersten Ansatz angedacht per XML-Transaktion zu übertragen. Der Zahlungs-Dienstleister akzeptiert nur Daten die auch in seinem Front-End auftauchen. Also blieb mir nur noch PHP für die Transaktionen.
Also war wieder Handarbeit angesagt. Im ersten Schritt habe ich mir vom Zahlungs-Dienstleister an die 20 PDF Dokumente geladen um anschliessend erstmal frustriert in den Feierabend zu gehen. Nichts aber auch rein gar nichts habe ich verstanden. Aber halt, da gab es das Stichwort PHP.
Nun jetzt hatte ich endlich einen Ansatz, den WebViewer von FileMaker.
Was benötigen wir:
- Webserbver ISS oder Apache
- Zahlungs-Dienstleister wie z.B. Heidelpay
- FileMaker Datenbank
- Zeit…
Zum testen benötigen wir nur eine einfache FileMaker Datenbank, die Felder enthält für Namen, Vornamen, Straße usw.
Hinzu kommen genau zwei PHP-Scripte. Ein request.php und ein response.php und nicht so wichtig eine CSS. Diese hält Informationen über das Äussere des HeidelPay Front-End bereit.
Dabei gilt dem request.php unser besonderes Augenmerk.
Die Request-Datei:
<?php
//URL fuer Testsystem
$url = "[heidelpay.hpcgw.net/sgw/gtw](https://heidelpay.hpcgw.net/sgw/gtw)";
$parameters['SECURITY.SENDER'] = "…………………………………………………..";
$parameters['USER.LOGIN'] = "……………………………………...";
$parameters['USER.PWD'] = "…………………..";
// Channel fÔøΩr CC, OT Sofort, DC, DD, PayPal
$parameters['TRANSACTION.CHANNEL'] = "………………………...…………….";
////////////////////////////////////
$parameters['ACCOUNT.HOLDER'] = $_GET['LastName'];
$parameters['ACCOUNT.NUMBER'] = "";
//$parameters['ACCOUNT.BRAND'] = "PAYPAL";
$parameters['ACCOUNT.BRAND'] = "";
$parameters['ACCOUNT.EXPIRY_MONTH'] = "";
$parameters['ACCOUNT.EXPIRY_YEAR'] = "";
$parameters['ACCOUNT.VERIFICATION'] = "";
//Payment Code -- Auswahl Bezahlmethode und Typ
//$parameters['PAYMENT.CODE'] = "DD.RG";
//$parameters['PAYMENT.CODE'] = "CC.RG";
$parameters['PAYMENT.CODE'] = "CC.DB";
//$parameters['PAYMENT.CODE'] = "OT.PA";
//$parameters['PAYMENT.CODE'] = "VA.DB";
$parameters['PRESENTATION.CURRENCY'] = "EUR";
//Response URL angeben
$parameters['FRONTEND.RESPONSE_URL'] = "[www...](http://www...)………………...com/Semicon2012/response.php";
//CSS- und/oder Jscript-Datei angeben
$parameters['FRONTEND.CSS_PATH'] = "[....](https://....)…………………....de/style/onlycarddetails.css";
$parameters['PRESENTATION.AMOUNT'] = $_GET['Price'];
$parameters['IDENTIFICATION.TRANSACTIONID'] = $_GET['Buchung'];
$parameters['PRESENTATION.USAGE'] = 'SEMICON 2012 Transaktion '.date("d.m.Y");
//$parameters['FRONTEND.MODE'] = "DEFAULT";
$parameters['FRONTEND.MODE'] = "WPF_LIGHT";
// Modus auswÔøΩhlen
$parameters['TRANSACTION.MODE'] = "LIVE";
//$parameters['TRANSACTION.MODE'] = "INTEGRATOR_TEST";
//$parameters['TRANSACTION.MODE'] = "CONNECTOR_TEST";
$parameters['FRONTEND.ENABLED'] = "true";
$parameters['FRONTEND.POPUP'] = "false";
$parameters['FRONTEND.SHOP_NAME'] = 'SEMICON 2012';
$parameters['FRONTEND.REDIRECT_TIME'] = "0";
$parameters['FRONTEND.LANGUAGE_SELECTOR'] = "false";
$parameters['FRONTEND.LANGUAGE'] ="en";
$parameters['REQUEST.VERSION'] = "1.0";
/*
$parameters['NAME.GIVEN'] = "";
$parameters['NAME.FAMILY'] = "";
*/
$parameters['NAME.GIVEN'] = $_GET['FirstName'];
$parameters['NAME.FAMILY'] = $_GET['LastName'];
$parameters['ADDRESS.STREET'] = $_GET['Street'];
$parameters['ADDRESS.ZIP'] = $_GET['Zip'];
$parameters['ADDRESS.CITY'] = $_GET['Stadt'];
$parameters['ADDRESS.COUNTRY'] = $_GET['Land'];
$parameters['ADDRESS.STATE'] = "";
$parameters['CONTACT.EMAIL'] = $_GET['Mail'];
$parameters['CRITERION.CODE']= $_GET['Code'];
//building the postparameter string to send into the WPF
$result = '';
foreach ($parameters AS $key => $value)
$result .= strtoupper($key).'='.urlencode($value).'&';
$strPOST = stripslashes($result);
//echo $strPOST;
//open the request url for the Web Payment Frontend
$cpt = curl_init();
curl_setopt($cpt, CURLOPT_URL, $url);
curl_setopt($cpt, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($cpt, CURLOPT_USERAGENT, "php ctpepost");
curl_setopt($cpt, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cpt, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($cpt, CURLOPT_POST, 1);
curl_setopt($cpt, CURLOPT_POSTFIELDS, $strPOST);
$curlresultURL = curl_exec($cpt);
$curlerror = curl_error($cpt);
$curlinfo = curl_getinfo($cpt);
curl_close($cpt);
// here you can get all variables returned from the ctpe server (see post integration transactions documentation for help)
//print $strPOST;
// parse results
$r_arr=explode("&",$curlresultURL);
foreach($r_arr AS $buf)
{
$temp=urldecode($buf);
$temp=split("=",$temp,2);
$postatt=$temp[0];
$postvar=$temp[1];
$returnvalue[$postatt]=$postvar;
//print "<br>var: $postatt - value: $postvar<br>";
}
$processingresult=$returnvalue['POST.VALIDATION'];
$redirectURL=$returnvalue['FRONTEND.REDIRECT_URL'];
// everything ok, redirect to the WPF,
if ($processingresult=="ACK")
{
if (strstr($redirectURL,"http")) // redirect url is returned ==> everything ok
{
header("Location: $redirectURL");
}
else // error-code is returned ... failure
{
//header("Location: [127.0.0.1/livesyste...](http://127.0.0.1/livesystem/error.php)");
print_r($returnvalue);
}
}// there is a connection-problem to the ctpe server ... redirect to error page (change the URL to YOUR error page)
else
{
// header("Location: [127.0.0.1/livesyste...](http://127.0.0.1/livesystem/connection.php)");
print_r($returnvalue);
//print_r($returnvalue);
}
?>
Dabei sind auch Parameter von Relevanz die aus unserer Datenbank stammen.
$parameters['NAME.GIVEN'] = $_GET['FirstName']; FirstName = Feld KONTAKT.T_First_Name aus unserer FileMaker-Datenbank
$parameters['NAME.FAMILY'] = $_GET['LastName']; LastName = Feld KONTAKT.T_Last_Name aus unserer FileMaker-Datenbank
Diese Übergeben wir dem WebViewer in Form:
"?"&"LastName=" & KONTAKT.T_Last_Name & "&" &"Price="&Preis_Heidel_Uebertragung&"&" & "Street=" & KONTAKT.T_Adress & "&" &
"Zip=" & KONTAKT.Z_ZIP & "&" & "Stadt=" & KONTAKT.T_City & "&" & "Land=" & KONTAKT.T_Country & "&" & "Mail=" & KONTAKT.T_EMail & "&" & "Buchung=" & INVOICE.BUCHUNG.Nr_1_2 & "&" & "FirstName=" & KONTAKT.T_First_Name&"&" & "Code=" & KONTAKT.SICHERHEIT.CODE
Wobei sich die URL noch aus einem Feld mit dem Inhalt der URL zum PHP-Script auf unserem Server zusammensetzt:
URL.Parameter= "http://www……………………com/Semicon2012/request.php"
Das Feld ACCOUNT.USER.Parameter besteht aus dem Inhalt "?"&"LastName=" & KONTAKT.T_Last_Name & "&" &"Price="&Preis_Heidel_Uebertragung&"&" & "Street=" & KONTAKT.T_Adress & "&" &
"Zip=" & KONTAKT.Z_ZIP & "&" & "Stadt=" & KONTAKT.T_City & "&" & "Land=" & KONTAKT.T_Country & "&" & "Mail=" & KONTAKT.T_EMail & "&" & "Buchung=" & INVOICE.BUCHUNG.Nr_1_2 & "&" & "FirstName=" & KONTAKT.T_First_Name&"&" & "Code=" & KONTAKT.SICHERHEIT.CODE
Beide Felder URL.Parameter&ACCOUNT.USER.Parameter ergeben dann die URL mit den zu übergebenden Parametern an das PHP-Script auf dem Webserver.
Teil 2 in wenigen Tagen
PDF-Erzeugung per IWP
Jeder der eine Datenbank im Web über IWP freigibt, kommt irgendwann an einen Punkt wo er die Entscheidung IWP zu verwenden bereut.
Nun ich erreichte den Punkt als es darum ging Dateien zu exportieren, oder nur eine PDF zu erzeugen. Viele Script-Schritte funktionieren über IWP nicht. Kein als Excel-Speichern, kein Datensätze als PDF speichern.
Was also tun wenn man z.B. Teilnehmer über IWP erfassen möchte und Diese im Anschluss eine Anmeldebestätigung erhalten sollen?
Die Antwort habe ich im FileMaker-Forum erhalten. Einfach einen Client auf dem Server mitlaufen lassen. Einen Client auf dem Server laufen lassen?
Was steckt dahinter. Nun der Client übernimmt die Aufgaben die der Server nicht kann. Also speichern, exportieren oder gar importieren von Dateien. Alles was eine Client im Netzwerk kann, geht mit diesem Ansatz.
Wie aber sage ich nun dem Client was zu tun ist? Über gesetzte Feldwerte. Die Funktion Feldwert setzen geht auch über IWP basierte Webseiten. Das bedeutet z.B. wenn die Anmeldung eines Teilnehmers durchlaufen ist, wird über ein Script der Feldwert „FLAG.MAIL.Anmeldung_1“ auf den Wert 1 gesetzt.
Jetzt beginnt die Arbeit des Clients. Über ein „BeiTimer-Script“ setzen überprüft der Client regelmäßig ob der Feldwert „FLAG.MAIL.Anmeldung_1“ den Wert 1 enthält. Tut er dies, wird einfach ein Script zu Versenden einer EMail angestossen. Um nun nicht im Minutentakt immer wieder eine Mail an den Teilnehmer zu versenden gibt es noch ein zweites Statusfeld. Dieses erhält nach Versendung der Mail den Status 1. Ist der Wert dieses Feldes auf 1, wird keine Mail versendet.
Auf diese Weise kann ich alle Funktionen die ein Client beherrscht auch über den Server ansteuern.
Datenimport und Export im IWP
Seit einigen Wochen stecke ich einem Projekt bei dem die Dateneingabe über ein Web Front-End erfolgen wird. Da der Kunde die meisten Einstellungen selbständig durchführen möchte und ein jedes Datenfeld seine Bedeutung ändern wird, erschien mir IWP als die richtige Lösung für die Darstellung der Webseiten. Kein DreamWeaver oder anderer Editor wird im Nachgang bei Änderungen im Layout benötigt.
Was ist aber mit dem Import und Export von Datensätzen. Bei der Nutzung des IWP geht mit den Bordmitteln von FileMaker nichts. Kein Import oder speichern. Nach einigen Recherchen im Netz bin ich auf die Seite des Herrn Cristian Stüben geraten.
Nun ist es möglich Daten zu exportieren und zu importieren.
Nachtrag Synchronisation mit FileMaker Go
Ich hatte ja schon vor einiger Zeit über die Möglichkeit einer Synchronisation zwischen FileMaker und FileMaker Go ohne Plugin oder andere Hilfemittel berichtet. Nun kam die Frage auf, wie speichere ich in den Importeinstellungen die Einstellung „Vorhandene Datensätze in der Ergebnismenge aktualisieren“ ?
Ganz einfach. Wir müssen noch auf dem Desktoprechner eine Synchronisation bzw. einen Import durchführen. Im Zweifelsfall auch mit Dummy-Daten. Anschliessend nochmals das Import-Script bearbeiten und die Einstellung wie gezeigt setzen.
Nun sollten veränderte Datensätze nur geändert und nicht als neue Datensätze Hinzugefügt werden.