Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Från webbformulär till Filemaker via PHP och MySQL

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Uppsala
  • 2009-05-27 10:47

Översiktligt
På en webbsida tar vi in personuppgifter som vi vill lagra i en Filemaker (FM)-databas. Innan uppgifterna hamnar i vår FM-databas vill jag att de ska granskas och eventuellt korrigeras manuellt. Själva överföringen mellan webbsidan bör ske på ett användarvändligt sätt med få handgrepp.

Webbsidan ligger på ett webbhotell vilket innebär att resurserna, om än inte användarkontona delas med andra kunder. Eftersom uppgifterna är knutna till personer vill jag inte att de ska ligga kvar på denna relativt riskabla plats längre än nödvändigt. Jag tänker mig att varje arbetsdag ska uppgifterna flyttas från webbhotellets MySQL-databas till vår FM-databas.

Min tänkta lösning
Med hjälp av CodeIgniter, ett PHP-ramverk, skapar jag ett enkelt system för att ta emot uppgifterna från formuläret och genomföra validering av inmatningarna. Anledningen till varför jag vill använda ett ramverk är att jag då får med de flesta säkerhetsfunktioner gratis för att undvika dumheter i SQL-databasen. Jag har dessutom ingen lust att pula med PHP och MySQL mer än nödvändigt. Filemaker är skojigare att jobba med.

På Filemaker-sidan tänker jag mig använda dess egna funktioner för externa datakällor. I Filemaker gör jag ett en layout med FM- och MySQL-tabellerna i vardera kolumn (alternativt två fönster, sida vid sida). Med hjälp av manus kopierar jag över uppgifter från MySQL till FM-tabellen. När användaren har bekräftat uppgifterna raderas posten i MySQL-tabellen och nästa obearbetade post visas.

Så har jag tänkt, som databas-novis. Detta är första gången jag använder Filemaker på riktigt. Jag tänkte fråga om ni mer erfarna användare kan peka ut problem eller förbättringar i mitt koncept?

Jag har grunnat lite, men hittar inget direkt fel i din ide ovan, men har lite kommentarer.

Kolla gärna på skärmdumparna på nedanstående webbsida (den innehåller vad jag skulle visa/prata om på ett föredrag jag skulle ha på en konferens som heter Joomladay om FileMaker och Joomla tillsammans):

http://joomla.intelligentmammals.se/index.php?option=com_content&task=view&id=96&Itemid=60

Det är en lösning byggd just på det viset du vill, registeringar hamnar i en separat FileMaker-databas, granskas av en försäljare (som lätt och enkelt kan kolla uppgifterna mot tex Eniro.se och Hitta.se men även andra ställen där man kan göra kontroller av tex kredit mm). Det är tre webbvisare som syns i skärmdumparna, och de gör automatiskt sökningar baserat på infon användaren knappade in. Så ett klick på Enrio-fliken söker fram personen och dess adress, telefonnummer på Eniro.

Därefter klickar säljaren på olika knappar, antingen att allt är "OK"-knapppen vilket skapar posten i det "verkliga" kundregistret i en annan FileMaker-databas med lite relaterade poster i avtal, anläggningar mm eller på "Inte OK"-knappen, vilket skickar kunden ett mail med en begäran om kompletterande uppgifter. Saknas mail-adress så skrivs ett brev ut automatiskt i skrivaren.

För att göra detta behövde jag bara använda den inbyggda guiden i FileMaker 10 för att göra just registeringsformulär i PHP och jag valde att göra validering i FileMaker istället för i PHP. I FileMaker finns tex knappar för att snygga till de flesta inmatade uppgifter, tex initialversal och en del vanliga skrivfel.

Jag valde även att bygga upp min lösning så att infon hamnar i FileMaker, kan automatiskt kollas med hjälp av flera beräkningsfält som tex beräknar kontrollsiffror i personnummer och även gör andra beräkningar och kontroller och producerar felmeddelanden i ett textfält i klartext.

Genom att ha relationer till det "verkliga" kundregistret, så kan man se huruvida kunden redan finns och därmed så skapar man inte dubbletter. Detta är ju en funktion som är betydligt lättare att bygga i FileMaker, än i PHP.

Ett "bråkigt" registreringsformulär som tex kontrollerar om personnummer är korrekta, måste ju vara så smart att det förstå att även detta personnummer är korrekt: 991267+0000 och det måste också kunna förstå att detta är en korrekt epostadress: 828åäö828@22åäö-ab.info vilket inte alls är säkert att php-bibliotek förstår, speciellt inte sådana skapade av amerikaner som knappt vet att det finns flera länder i världen.

Senast redigerat 2009-05-29 16:13
Ursprungligen av Taz_1999:

...att även detta personnummer är korrekt: 991267+0000 ...

Hur många dagar hade december på 1800-talet?

Ursprungligen av M. Sundbom:

Hur många dagar hade december på 1800-talet?

Tack M Sundbom, men det är faktiskt inte fel. Det är korrekt. Läs sidan om personnummer på Wikipedia.

  • Medlem
  • Uppsala
  • 2009-06-10 09:45

Jag har tagit till mig av dina funderingar. Särskilt den rättframma lösningen med att be användaren att komplettera sina uppgifter är ju strålande. Om det inte är något trivial felinmatining är ju vad man vill i 95 fall av 100 att vederbörande rättar sina egna uppgifter. Lika bra att skicka ett automat-mejl då. Klokt.

Ursprungligen av Taz_1999:

Genom att ha relationer till det "verkliga" kundregistret, så kan man se huruvida kunden redan finns och därmed så skapar man inte dubbletter. Detta är ju en funktion som är betydligt lättare att bygga i FileMaker, än i PHP.

Sant, men inte riktigt ett alternativ för mig just nu, om vi inte ska pyssla med FileMaker Server. Och det kanske man vill, men då måste jag tänka om. Visserligen är det kanske lättare än att göra en bra dublettkontroll med i linje med min urspungliga lösning.

Så då till frågan, hur skulle ni göra en dublettkontroll med en lokal FM-databas och en extern MySQL-tabell. Jag tänker att man pytsar in förnamn och efternamn (sådant som användarna borde kunna stava rätt) från den externa tabellen i varsitt globala fält i FM och sedan gör en relation med motsvarande fält i den lokala databasen. Får man noll träffar är det lungt, får man >0, ska man göra en manuell dubbelkoll. Är detta en vettig lösning?

Så du litar mer på Wikipedia än på mig? Jag är djupt förolämpad Men skämt åsido, det där med födelsedatum + 60 för samordningsnummer visste jag inte.

Har har man åäö i sin epostadress får man väl ändå räkna med att 70% av mottagarna inte får breven man skickar, och tvärt om!

@ M. Sundbom: Ok, kanske man inte har så många över 100 år gamla "nysvenskar" med skyddad identitet, som mitt exempelnummer innebär. Men i alla fall, det är ett korrekt nummer.

@ Johan S: ÅÄÖ i epostadresser skall fungera, men visst har du rätt, det är ingen bra ide, inte ens i år 2009 som är mer än 30 år efter att några amerikaner skapade ASCII-tabellen och inte tänkte på att det finns flera länder än USA (och några år efter det, när Apple och Microsoft införde två olika tabeller för teckens siffror. ) En tydlig illustration till maximen: Alla temporära lösningar blir permanenta oerhört fort.

En del säger att vi skall kunna kommunicera med främmande intelligenser på andra planeter, men vi kan ju inte ens kommunicera korrekt mellan de två dominerande intelligenserna på denna planet - Mac och PC.

  • Medlem
  • Uppsala
  • 2009-06-09 23:04
Ursprungligen av jahve:

I Filemaker gör jag ett en layout med FM- och MySQL-tabellerna i vardera kolumn (alternativt två fönster, sida vid sida). Med hjälp av manus kopierar jag över uppgifter från MySQL till FM-tabellen.

Den här delen av lösningen vet jag inte om jag har gjort så snyggt, tänkte fråga om det finns ett smartare sätt. Jag använde en tabell med två globala fält, ett vardera för den lokala respektive externa tabellen. Det gör att jag kan använda relationer för att visa rätt post (record) på en layout. Det fungerar, men jag tappar möjligheten att bläddra fram och tillbaka på ett smidigt sätt. Har inte riktigt begripit hur man stegar fram i en annan tabell genom layouten utan att använda portaler.

För övrigt har jag under arbetets gång fått nära inpå religiös Filemaker-affektion. Märkligt.

1
Bevaka tråden