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.

36900-2013-05-26-10-49.jpg

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.

30a6530e5960373db60938d29c193265-2013-05-26-10-49.gif

Einfach den Server installieren, danach einen User einrichten und diesem ein Verzeichnis zuordnen und zum Home Verzeichnis erklären.

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).

prep_db02-2013-05-26-10-49.jpg

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.

SyncFMgo-2012-12-30-11-17.jpg SyncClient-2012-12-30-11-17.jpg

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
Kreditkarte2-2012-12-9-07-20.jpg
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.
Kreditkarte1-2012-12-9-07-20.jpg
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.
Kreditkarte3-2012-12-9-07-20.jpg
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:

  1. Webserbver ISS oder Apache
  2. Zahlungs-Dienstleister wie z.B. Heidelpay
  3. FileMaker Datenbank
  4. 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.

http://www.haifischbar.com

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.

Import-2012-02-6-00-57.png

Nun sollten veränderte Datensätze nur geändert und nicht als neue Datensätze Hinzugefügt werden.


Mal eine gute Nachricht.


Clipboard Explorer

Nun nachdem das Jahr schon ein paar Tage alt ist, habe ich mir die Zeit genommen und das Tool „Clipboard Explorer“ getestet. Leider verbietet mir mein derzeitiges Arbeitspensum einen intensiveren Test. Aber schon vorweg, das Tool kostet nichts und bietet alles um Layout-Elemente aus FileMaker in XML-Form zu erhalten. Der umgekehrte Weg funktioniert natürlich auch. Die Funktionalität erinnert mich stark an das „PasteBoard“ vom Entwickler Stefan Husch und Dipl.-Ing. Bernhard Schulz . Leider wird dieses Plugin nicht mehr weiterentwickelt. Es war relativ einfach gehalten, die kopierten Layout-Elemente oder Scripte landeten in einem FileMaker-Feld und wurden auch innerhalb von FileMaker verwaltet. Das Prinzip von Clipboard Explorer ist ähnlich und ohne großen Lernaufwand anzuwenden. Also wer richtig im FileMaker-Code wühlen möchte sollte das Plugin antesten.

https://www.dracoventions.com

LogoBall-2012-01-11-23-17.jpg


Guten Rutsch

Ich wünsche allen Freunden von FileMaker und natürlich allen Anderen einen guten Rutsch ins neue Jahr, auf das sich alle Wünsche erfüllen mögen.

GutenRutsch-2011-12-31-17-46.png


Dynamische Menüsteuerung Teil 2

Die Tabellen haben wir vorbereitet und arbeiten am Layout weiter. Wir benötigen in unserem Fall innerhalb eines Wunschlayouts ein -Portal- der Tabelle -T18i_timesheet_MENUE||id_constant|

PastedGraphic-2011-12-23-00-43.png

Layout1-2011-12-23-00-43.png Layout2-2011-12-23-00-43.png

Die Tabelle -T18i_timesheet_MENUE||id_constant| ist eine Instanz der Tabelle MEN_Menue. Dieses ist in meinem Fall die Tabelle des Hauptmenüs. Im Portal finden sich nun die Felder -Menue_Name-, -Menue_Icon-,-Menue_Icon_Rand- und Menue_Icon.

Layout3-2011-12-23-00-43.png

Nach verlassen des Layout-Modus erschein der Button aus dem Feld -Menue_Icon_Rand-, das Symbol aus dem Feld -Menue_Icon- und die Bezeichnung aus dem Feld -Menue_Name-. Das Dynamische Menü ist somit fast fertig. Was fehlt uns? Ein Script zum erkennen der Mausklicks.


Im nächsten und letzten Teil gehe ich auf die Script-Steuerung ein.


Eine FileMaker Lösung zum Aufbau von Hierarchien.

Gerade schau ich mir mal die Lösung von Jens Liebelt an.

http://www.jens-liebelt.de/fm-explorer/


Dynamische Menüsteuerung Teil 1

Wer kennt das nicht, Die Datenbank ist fast fertig und plötzlich möchte der Kunde die Bezeichner der Menüs verändert haben. Also fix ans Werk und mal schnell die Button auf 200 Layouts geändert.
Das es auch auch anders geht möchte ich kurz aufzeigen. Mein Weg geht über eine Tabelle Menü. Je nach Anwendungs-Szenario unterscheide ich noch in Haupt-Menü und Neben-Menü. Diese Tabellen verbinde ich mit meiner Tabelle „Einstellungen“.
Beziehung-2011-12-20-01-14.png
Nun stehen mir alle Möglichkeiten der Anpassung über „Preferences“ oder „Einstellungen“ zur Verfügung.
Einstellungen-2011-12-20-01-14.png
Diese sind unterteilt in Button-Symbol, Button als PNG, Bezeichnung, Parameter, Menü-Flag,Sortierung und in das Feld Quick-Info.
Die Symbole sind in ihrer Bedeutung klar und können wie auch die Bezeichnung jederzeit ausgetauscht werden. Der Parameter wird später innerhalb der Skripte benötigt. Innerhalb des Menü-Flag kann ich festlegen welches meiner Module bzw. Tabellen welche Button anzeigen. Möchte ich das im Modul -Projekte- diese als Button nicht erscheinen, so wird der Flag nicht selektiert. Somit erscheint innerhalb des Layouts -Projekte- auch nicht dieser Button.

Nun verknüpfen wir die Tabelle Menü mit einer unserer Module. Wer alle Werte der Tabelle -Menü- als „Global“ deklariert kann auch auf direktem Weg auf diese Werte zugreifen. In diesem Fall ist es nicht notwendig jedes Modul bzw. jede Tabelle mit der Tabelle -Menü- zu verbinden.
BeziehungModul-2011-12-20-01-14.png
Die Beziehung besteht aus einer Konstanten (1) und dem schon erwähnten Flag.
BeziehungEinstellung-2011-12-20-01-14.png

Weiter geht es im Teil 2

FileMaker Konferenz 2012


Nachtrag zum Clip Manager

Clip Manager


Gerade bei Aufgaben die ständige Wiederholungen beinhalten dient mir nun schon längere Zeit das Tool -Clip Manager-(myFMbutler). Dies liegt in der Version 4 für Windows und MacOS vor. Gerade wenn man einen Schwung Tabellen, Layout-Elemete oder aber Scripte umbenennen möchte sollte man sich dieses kleine Hilfsprogramm einmal anschauen. Praktisch ist die Layout-Ansicht in der man sieht welche Bereiche gerade in Bearbeitung sind. 
Also solange FileMaker keinen vernünftigen Editor beinhaltet ist -Clip Manager- unverzichtbar.


Neu von CampSoftware ist das Tool FMClips. Nach einem ausführlichen Test in den nächsten Tagen werde ich darüber berichten.