Advies opzet site
18 mei 2007 - 02:21   
geplaatst door: Haya
Ik hoop dat iemand me kan helpen met het volgende: ik heb een site ontworpen (Ik houd het idee nog even voor me) met een dienst waarvoor mensen zich kunnen inschrijven. Ze moeten daarvoor o.a. een vragenlijst invullen met bepaalde gegevens en postcode zodat ik mensen later kan "matchen". In het begin zal het niet zo'n probleem zijn om de ontvangen gegevens zelf in te voeren in Excel o.i.d. (en daarna te verwerken op de site) maar ik hoop natuurlijk dat het een succes wordt en ik veel aanmeldingen krijg.

Wat raad je me aan? Ik weet niet hoe je een database moet ontwerpen en wil nu nog niet al te veel investeren omdat ik geen idee heb of het idee aanslaat.

Is er een manier om de gegevens "automatisch" te verwerken?
Ik denk bijvoorbeeld aan een systeem waarbij je op bepaalde gedeeltes van de kaart van NL kunt klikken en vervolgens de aanmeldingen in dat gedeelte te zien krijgt.

Advies opzet site
18 mei 2007 - 08:27    reactie #1
geplaatst door: mvdg
Ik zou het zo maken, dat je de gegevens in een database op je webserver bewaart. Het is dan niet al te moeilijk om alles te automatiseren en ook regio's etc. te selecteren en al dat soort dingen.
Voor de veiligheid van je gegevens is het dan wel belangrijk om regelmatig een backup te maken. Je provider kan dat waarschijnlijk op server niveau wel voor je regelen, of je programmeert het zelf, of je exporteert regelmatig je database naar een bestand en slaat dat op op je eigen machine. Zodat de gegevens niet verloren zijn bij een probleem met de webserver.
Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
Advies opzet site
18 mei 2007 - 08:39    reactie #2
geplaatst door: Cailin Coilleach
Ik denk toch echt dat je het beste af bent met een database en wat intelligente code (bijvoorbeeld in PHP).

Goed, het kost je even tijd voor je door hebt hoe het allemaal werkt, maar geloof me: niets is zo inefficient als constant met Excel sheetjes aan de slag zijn. Zeker als de computer het allemaal voor je kan doen. Het moet niet al te moeilijk zijn om een algoritme te bedenken dat automatisch doet wat jij nu met de hand wilt gaan doen.

Okay... Stel nou dat je een jaar lang alleen maar tien leden hebt, en je moet elke dag een half uurtje besteden, okay... Dan is het niet zo spannend. Aan de andere kant: 365 * 0.5 = zo'n 180 uur die je ook anders had kunnen besteden. Geloof me: de inspanning die het je kost om MySQL en PHP te leren is minder dan die 180 uur en tevens heb je d'r ook voor andere projecten later veel aan.

Het is wel zo makkelijk als jou hoster al MySQL en PHP heeft klaar staan voor elke website. Bij TransIP (waar ik zit) is dat in elk geval wel het geval. Host je de boel zelf dan is het hek ook nog niet van de dam aangezien er genoeg tutorials zijn die je helpen bij de basis installatie.

Het database ontwerp zelf zal gelukkig niet al te ingewikkeld zijn. Zelf zou ik het als volgt doen...

Tabel 1 = security
Velden: id, username, password

Tabel 2 = contact gegevens
Velden: id, voornaam, achternaam, adres1, adres2, postcode, woonplaats, email, telefoon, geslacht, geboortedatum

Tabel 3 = vragenlijst
Velden: id, vraag1, vraag2, vraag3, vraag4, enz, enz.

Het "id" veld uit de drie tabellen zal steeds het zelfde zijn voor een bepaald lid van je website. Op die manier kan je tabellen perfect cross-matchen.

Je kan de computer bijvoorbeeld de opdracht geven:
VIND IN tabel1 VELD username WAAR VELD id IS GELIJK AAN (VIND IN tabel2 VELD "id" WAAR geslacht IS man, WAAR woonplaats IS Utrecht, OF WAAR postcode LIGT IN BEREIK 3434-3438 EN WAAR leeftijd LIGT IN BEREIK 25-30)

Op die fiets stel combineer je twee zoekopdrachten en rolt er van de geschikte mannen een lijstje met usernames uit. Databases zijn leuk!

EDIT:
Overigens staan er in dat voorbeeld harde waardes gedefinieerd, maar die laat je natuurlijk ook automatisch genereren aan de hand van een formulier dat je zelf samen stelt. Zo kan je zelf in geven welke waardes je zoekt. OF! Nog beter: je bedenkt nog een algoritme dat zelf steeds automatisch bepaalt welke waardes jij wilt, aan de hand van de gegevens van een andere user.

Voorbeeld van datingsite:
User1 = vrouw, utrecht, 3528, 24 jaar. Zoekt: man, omgeving, 25-30 jaar.
Je kan dan al een heleboel velden automatisch in laten vullen aan de hand van dingen die die vrouw zelf heeft ingevuld in de vragenlijst. Presto :)

(Bewerkt door Cailin Coilleach om 8:44, 18-05-2007)

Advies opzet site
18 mei 2007 - 10:09    reactie #3
geplaatst door: mvdg
Cailin heeft helemaal gelijk dat online database zeer nuttig is.

In het technische verhaal 1 kleine opmerking: als je 3 tabellen hebt waarbij dezelfde id ook op dezelfde gebruiker slaat, dan is het onzin om daar 3 tabellen van te maken. Bij tabellen die eventueel meerdere keren kunnen voorkomen, is het juist wel handig.

Om het voorbeeld van de dating site te gebruiken: stel je hebt 1 tabel met de info van de gebruiker (naam, woonplaats etc) en 1 tabel met 'zoekprofielen' (bv. man, tussen 30 en 40, Zuid-Holland). Dan is het heel handig dat je meerdere zoekprofielen kunt koppelen aan 1 gebruiker. Zodat iemand een man tussen 30-40 in ZH kan zoeken, maar ook een man tussen 30-40 in Utrecht. Terwijl dat veel lastiger is als je ook het zoekprofiel in de tabel bij de gebruiker zelf opslaat. Snap je?

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
Advies opzet site
18 mei 2007 - 10:29    reactie #4
geplaatst door: Cailin Coilleach
Mijn fout, ik was inderdaad een belangrijk iets vergeten:

Tabel 1 = id, username password

Tabellen 2 en 3 hebben elk natuurlijk een eigen id veld, voor elke entry en elke regel heeft een veld "uid" die verwijst naar het "id" veld uit Tabel 1. Foutje van mij. Op die manier kan je inderdaad doen wat mvdg zegt: meerdere entries in een tabel, per user.

D'r is overigens nog wel een reden om tabellen gescheiden te houden, alhoewel die hier niet van toepassing zal zijn: security. Als je dingen groots aan gaat pakken kan je limiteren welke database accounts kunnen lezen en/of schrijven in bepaalde tabellen. Zo zou je binnen een bedrijf de afdelingen PZ, Operations en Financien toegang kunnen geven tot verschillende informatie van de zelfde werknemer in de zelfde database.

Overigens werk ik altijd met aparte tabellen, afhankelijk van de informatie die er in word opgeslagen. Op die manier houd je namelijk verschillende soorten data van elkaar gescheiden, wat zorgt voor overzicht.

Advies opzet site
18 mei 2007 - 13:25    reactie #5
geplaatst door: Haya
Dank je voor de reacties! Mijn huidige host is One.com (Erg tevreden over) maar voor deze nieuwe site kan ik ook naar een andere als die geschikter is voor wat ik wil.
Hoe moet ik me het maken van zo'n database voorstellen? In welk programma? Ik hoorde dat het ook in FilemakerPro kan?

Wat dit betreft moet ik alles nog leren en ik heb geen flauw idee hoe zoiets er uitziet en hoe je het kunt koppelen aan zo'n inschrijfformulier.

Advies opzet site
18 mei 2007 - 14:13    reactie #6
geplaatst door: Cailin Coilleach
Je kan gewoon bij One.com blijven: elk van hun hosting pakketten is inclusief een MySQL database, voorzien van het PHPMyAdmin grafische frontend voor het beheer. Dankzij PHPMyAdmin is het redelijk simpel om nieuwe tabellen aan te maken in de database en om vast te stellen hoe zij er uit moeten komen te zien.

Het helpt natuurlijk als je al wel wat bekend bent met computers, databases, web-programmeren, enz. Ben je dat niet, dan zal je wel het eea te leren hebben, maar zoals ik al eerder zei word dat voor later alleen maar nuttig.


EDIT:
De database draait in zijn geheel bij je hosting provider en je zal dus ook niets op je eigen computer hoeven installeren. Je gebruikt je web browser om bij PHPMyAdmin te komen. Als voorbeeld, zo -kan- PHPMyAdmin er uit zien:

Aan de linkerzijde van het scherm kan je kiezen welke database je wilt bewerken en zie je welke tabellen er allemaal in de database zijn gebouwd. Aan de rechterzijde zie je (in dit geval) de opmaak van een van de tabellen, met voor elke kolom in de tabel een rij die de verschillende instellingen vertoont.

Het is misschien iets lastiger in het gebruik dan FileMaker, maar de principes zijn het zelfde.


EDIT 2:
Wat betreft de koppeling aan formulieren op het web...

De formulieren zelf zet je in elkaar op de gebruikelijke HTML wijze, zoals ieder ander formulier. Je maakt daarna in een taal als PHP of ASP (One.com ondersteunt ze beiden) een programma dat word aangeroepen zodra de Submit knop word ingedrukt. Dit programma vertaalt de inhoud van de verschillende velden en plaatst ze in de bijbehorende kolommen van de database.

Wat je zal zien, als je aan de slag gaat met PHP of ASP, is dat je steeds meer onderdelen van je website laat genereren door PHP, in plaats van dat je alles voluit met de hand in HTML schrijft. In het geval van mijn website kan ik stellen dat 80% van de overhead (DIVs, headers, menu's, enz) allemaal automatisch word gemaakt en dat alleen de content (muv blogposts) nog met de hand word gemaakt.

(Bewerkt door Cailin Coilleach om 14:24, 18-05-2007)

Advies opzet site
18 mei 2007 - 14:50    reactie #7
geplaatst door: mvdg
Een algemene waarschuwing is hier nog wel op zijn plaats: bij elke database op internet moet je uiterste zorg besteden aan de beveiliging. Met name op het punt waar informatie van de gebruiker de database ingaat, kan misbruik worden gemaakt. En als je bijvoorbeeld namen en (email)adressen bewaart in je database, komt dat natuurlijk wel erop aan!
Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
Advies opzet site
18 mei 2007 - 15:00    reactie #8
geplaatst door: Cailin Coilleach
Daar heb je helemaal gelijk in mvdg.

Aan de ene kant moet je er voor zorgen dat je username en password voor de database goed beschermd zijn. Aan de andere kant moet je er voor zorgen dat alle tekst die richting MySQL word gestuurd eerst gefilterd word op mogelijk schadelijke tekens. Zo bescherm je jezelf tegen SQL Insertion Attacks.

Advies opzet site
18 mei 2007 - 16:51    reactie #9
geplaatst door: Haya
Dat wordt hard studeren (en in het begin toch maar handmatig gegevens invoeren). Bestaat er niet een pakket met templates o.i.d. waarin je zelf gegevens kunt aanpassen?
Advies opzet site
19 mei 2007 - 07:24    reactie #10
geplaatst door: Slagroom
@Callin: Is het de bedoeling om meerdere contactgegevens aan een gebruiker te koppelen? Zo nee, zie http://nl.wikipedia.org/wiki/Boyce-Codd_normaalvorm

(Bewerkt door Slagroom om 7:25, 19-05-2007)

Advies opzet site
19 mei 2007 - 12:00    reactie #11
geplaatst door: Cailin Coilleach
Oh, 'tis niet mijn website hoor :D Ik probeer ook alleen maar het eea uit te leggen aan de topic starter Haya.