Vraag & Antwoord

Webprogrammeren & scripting

Hulp bij het maken van een interactieve website

6 antwoorden
  • Ik heb een idee in mijn hoofd voor een website en mijn doel is om dit helemaal zelf te gaan ontwerpen zonder kant en klare hap. Al doende hoop ik veel te leren over webdesign/webprogrammering & scripting, gewoon omdat het me heel leuk lijkt. Het is puur bedoelt als hobby en ik heb geen enkele deadline voor ogen. As long as it takes. Ik heb nog nooit eerder een website gemaakt dus mijn ervaring is beperkt. Een complete dummy ben ik denk ik niet, want ik ken wel de basics van verschillende talen en hoe het meeste zich ongeveer tot elkaar verhoudt. Maar zoals ik al zei, ik hoop op deze manier vooral veel ervaring en kennis op te doen. De reden dat ik deze topic heb aangemaakt is dat ik hoop dat er mensen zijn die mij tijdens dit proces af en toe een beetje in de goede richting kunnen duwen. Ik ben dus niet opzoek naar kant en klare scripts, want ik wil het graag zelf doen, maar naar tips hoe ik bepaalde dingen het beste kan aanpakken. Eén topic leek me trouwens handiger dan allerlei losse topics. Ik zal nu kort proberen uit te leggen wat voor site ik voor ogen heb. Het moet een site worden met nieuwsberichten waar [b:076d3149d4]members[/b:076d3149d4] op kunnen reageren (dus met inlogsysteem). Dat moet de "core" van mijn website worden. Sites als voetbalzone.nl en wielerflits.nl, dat is wat ik ongeveer voor ogen heb qua format (niet qua content). Op dit moment zou ik wel in staat moeten zijn om aan de hand van HTML & CSS de site globaal vorm te geven. Volgens mij is het mij wel duidelijk hoe dat globaal allemaal in elkaar zit. Maar ik heb echter nog niet een heel duidelijk beeld van hoe die andere zaken, zoals bijv een inlogsysteem, daar in past. Wat is er precies voor nodig om een nieuws-, reactie- en inlogsysteem te gaan bouwen? Ik ben zover dat ik weet dat ik hier een serverside script programma nodig heb zoals PHP, en evt. een databaseprogramma als MySQL. Maar dat is zo’n beetje alles. Van zojuist genoemde programma’s ken ik de basics al een beetje. Zou iemand mij misschien iets verder op weg kunnen helpen? Een klein overzichtschetsje zou ik al heel blij mee zijn.
  • Wat je wilt, kan heel goed met een cms als bijvoorbeeld wordpress. Je kunt de layout doen door de template aan te passen. Het cms is bedoeld voor plaatsen van berichten en reacties daarop. Wie kan reageren kun je zelf instellen in de configuratie. Voor wordpress heb je een provider nodig, die php en mysql ondersteunt. Diverse providers bieden wordpress ook standaard als optie aan.
  • Een mooi streven, dus ik zal proberen je wat op gang te helpen. Mijn eerste tip is: veel lezen. In het begin heb je inderdaad vaak geen idee wat je moet doen en waar je moet beginnen, maar als je je bedenkt dat je nooit de eerste bent met het probleem en dat het antwoord vrijwel altijd al op internet staat dan ben je een flink eind op de goede weg. De kwaliteit van artikelen op het internet verschilt nogal, na een tijdje leer je vanzelf het kaf van het koren te scheiden. Een meer praktische tip is: begin gelijk goed. Ik zal het cliché spreekwoord hier niet herhalen, maar het is waar. Door een goede aanpak maak je in het begin al snel minder fouten, kun je fouten sneller isoleren en dus sneller oplossen en zul je in het algemeen beter worden in de technieken die je leert. Wat betekent dat concreet? Houd je aan de standaarden waar mogelijk, in de breedste zin van het woord. Voor HTML raad ik [url=http://stackoverflow.com/questions/1079427/what-is-a-polyglot-document]HTML5 Polyglot documents[/url] aan (ofwel de XML-serialisatie van HTML5) en anders XHTML 1.1 (zonder bijbehorende XML-MIME-type). Dat klinkt ingewikkeld, maar dat is het niet. Eigenlijk is het alleen een dure manier om te zeggen dat je op een bepaalde manier bestanden schrijft: de syntaxis. De meeste talen zullen niet eens werken zonder juiste syntaxis (in het Engels: syntax) maar HTML en CSS zijn vergeeflijker dus die kan/moet je laten valideren, hiervoor zijn verschillende tools beschikbaar op het internet. (Overigens worden HTML en CSS niet eens echt als talen beschouwd, maar dat terzijde.) Waarom HTML5 Polyglot of XHTML 1.1? Omdat het je dwingt gelijk goed te werken en omdat geldig XML heel veel voordelen met zich meebrengt die je later kan gebruiken op andere plekken, zoals geïntegreerde XML-ondersteuning in PHP of XPath in JavaScript, enzovoorts. Bij PHP raad ik je aan om te beginnen met de meest recente versie van PHP5 en je te verdiepen in Objectgeörienteerd Programmeren (in het Engels: Object Oriented Programming, OOP) en als je echt serieus bent gelijk ook in een ontwerpstrategie zoals bijvoorbeeld Model-View-Controller (MVC). Die combinatie zorgt er voor dat je modulair leert denken en programmeren waarbij ieder onderdeel zijn eigen machtigingen en verantwoordelijkheden heeft. Zeker als je grote complexe systemen gaat proberen te maken kan het voordelig zijn om dit zo aan te pakken. Eventueel kan je ook eerst nog een structuur ontwerpen met behulp van UML-diagrammen, als je het echt goed wil doen. Als laatste de database. Het wordt als een goed iets gezien om je gegevens te scheiden van je CMS, meestal gebruik je hiervoor een database. Probeer gelijk een goede database te ontwerpen. Denk hierbij aan een normalisatie van de 3e normaalvorm (3NF) of de Boyce-Codd normaalvorm (BCNF). Dit kost in het begin wat moeite maar zal je snel terugbetalen door een makkelijker onderhoud ten opzichte van (bijvoorbeeld) alle gegevens in één tabel. MySQL is de bekendste database omdat die gratis is en vaak standaard geleverd wordt bij goedkope hosting. Zo, da's een aardige lap tekst, maar hopelijk heb je er iets aan. Ik heb verder geen idee hoe serieus je hiermee aan de slag wil gaan, dus als je aanvullende vragen hebt dan horen we het wel en als dit al te ver gaat dan hoor ik het ook graag. :) Als laatste vast een bron om te beginnen met lezen: [url=http://tuxradar.com/practicalphp]Practical PHP Programming[/url] Edit: dit ziet eruit als een goede introductie tot databasenormalisatie: [url=http://www.dtgeeks.com/journals/article/basic_database_design/]Basic Database Design[/url] - Bas
  • Allereerst bedankt voor jullie reacties (met name jij Bas!). Dit soort tips heb ik heel veel aan. Echter roept het ook weer wat extra vragen op :) Na de jullie reacties gelezen te hebben ben ik me wat gaan inlezen in CMS, OOP/MVC en 3NF omdat ik daar nog niet zo veel vanaf wist (in het geval van OOP/MVC zelfs niks). Bij het lezen over normalisatie kwam ik erachter dat ik dit onderwerp ooit al gehad heb tijdens mijn opleiding, dus dat scheelt weer iets. Eerst wil ik even ingaan op CMS omdat jullie beide hier over reppen. Ten eerste kan ik me er moeilijk een beeld bij vormen hoe dit "er uit ziet". Ik begrijp ongeveer wat de functionaliteit zijn, maar hoe past dit verder in het geheel van bijv de website die ik wil maken? Bij een simpele kale HTML site snap ik dat een .html file op de server van een hostingbedrijf komt te staan. Als je een interactieve site wil kan je daar .php files aan toevoegen (of zelfs scripts schrijven in een html file?). Maar hoe past een CMS precies in dat plaatje? Ik zie dat nog niet helemaal voor me. Het zelfde geld eigenlijk ook voor een database (is dat ook een apparte file waar je via een script informatie uit kan ophalen?). Dat gezegd hebbende vroeg ik me ook af of een CMS misschien niet "te makkelijk" is? Is het in feite al een voorgeprogrammeerd script? En als straks blijkt dat ik nieuwe functionaliteiten (scripts) wil toevoegen is dat dan niet lastig gezien het feit dat ik het zelf niet geprogrammeerd heb en dus de kennis mis? Verder heb ik me ook wat verdiept in OOP/MVC. Ik snap nu zo ongeveer het idee erachter, wat me trouwens erg aanspreekt. Het schept wat structuur wat van belang kan zijn voor grote projecten en kan op den duur een hoop tijd gaan schelen. Ik vroeg me alleen af of het voor mij wel handig is om al meteen OO te leren programmeren als je praktisch nog niks weet van PHP, aangezien de meeste mensen het waarschijnlijk zo niet doen? Als ik dan tegen een probleem oploop dan is daar misschien niet veel over te vinden op google? En ik kan ook moeilijk inschatten of het, voor de site die ik nu voor ogen heb, slim is om dat op die manier te doen en niet overkill is. Ook vroeg ik me af wat voor data er precies in het database moet komen en hoe de tabellen er dan ongeveer uit komen te zien. Daar heb ik nog geen enkel beeld bij in combinatie met het soort site dat ik wil gaan maken. De fase waarin ik nu in zit is eigenlijk een beetje het hele "framework" te zien en hoe alles in elkaar haakt, of moet komen te haken. Als ik eenmaal de structuur zie dan kan ik ook beter bepalen welke weg ik wil inslaan, voordat ik direct al aan de slag ga met scripten en designen. En wat Bas zegt kan ik me wel in vinden. Het liefst begin ik meteen goed. Voor nu was dit het even. Dan ga ik nu weer verder met het bestuderen van PHP ;)
  • [quote:4058d8b688="Jochem987"]Eerst wil ik even ingaan op CMS omdat jullie beide hier over reppen. Ten eerste kan ik me er moeilijk een beeld bij vormen hoe dit "er uit ziet". Ik begrijp ongeveer wat de functionaliteit zijn, maar hoe past dit verder in het geheel van bijv de website die ik wil maken?[/quote:4058d8b688]CMS staat voor Content Management System en is dus zoals je zou verwachten een manier om de inhoud van je website te beheren. Hiervoor maak je doorgaans een aparte sectie op je website waarbij alleen jijzelf of een geselecteerde groep personen kan inloggen om vervolgens delen van de website aan te passen of er dingen aan toe te voegen. De kracht van een CMS zit hem in het feit dat code en inhoud van elkaar gescheiden worden: mensen die teksten typen voor de website doen dit in een omgeving die lijkt op het schrijven van een reactie zoals op dit forum, van de achterliggende code en opmaak zoals HTML en CSS hoeven ze geen verstand te hebben. [quote:4058d8b688="Jochem987"]Bij een simpele kale HTML site snap ik dat een .html file op de server van een hostingbedrijf komt te staan. Als je een interactieve site wil kan je daar .php files aan toevoegen (of zelfs scripts schrijven in een html file?). Maar hoe past een CMS precies in dat plaatje? Ik zie dat nog niet helemaal voor me. Het zelfde geld eigenlijk ook voor een database (is dat ook een apparte file waar je via een script informatie uit kan ophalen?).[/quote:4058d8b688]Het is mogelijk om PHP in een .html-bestand te zetten door de configuratie van je server aan te passen, maar ik zou dat niet doen. Gewoon de extensie .php gebruiken lijkt mij het meest verstandig. Verder merk ik inderdaad dat je wat zaken moeilijk van elkaar kunt scheiden, dus ik zal het proberen uit te leggen. Te beginnen bij de database. Een database draait vaak op een eigen server en is speciaal ontwikkeld voor het opslaan van grote hoeveelheden gestructureerde gegevens. Bijvoorbeeld berichten op een forum: elk bericht heeft een auteur, een tekst, een datum, enzovoorts. Door dit in een database te zetten krijg je mogelijkheden om alleen bepaalde delen te selecteren en te sorteren zoals je dat zelf wil. Hiervoor heb je echter een server side taal nodig, te weten PHP. Met PHP kan je verbinding maken met de database en gegevens opvragen en opslaan. Hoewel PHP een server side taal is, kan je wel vanaf de client side een stel parameters meegeven. In een URL zie je die vaak terug als de gegevens na het vraagteken en gescheiden door amperstands (&). Door middel van die parameters kan je met hetzelfde stukje PHP-script toch iedere keer wat anders laten zien, bijvoorbeeld door een begin- en einddatum te geven. Verander je de data, dan verandert ook de inhoud van de pagina, maar het PHP-script blijft hetzelfde. Dit noemen ze dynamische content, het tegenovergestelde van statische content van een website die alleen maar uit HTML-pagina's bestaat. Dus nu weet je dat jouw gegevens (de content) van je site in een database staan en dat je die gegevens opvraagt en bewerkt met PHP. Een CMS is het geheel van alle PHP-pagina's die ervoor zorgt dat bezoekers de informatie uit de database kunnen zien en members kunnen inloggen en jij gegevens kunt toevoegen. [quote:4058d8b688="Jochem987"]Dat gezegd hebbende vroeg ik me ook af of een CMS misschien niet "te makkelijk" is? Is het in feite al een voorgeprogrammeerd script? En als straks blijkt dat ik nieuwe functionaliteiten (scripts) wil toevoegen is dat dan niet lastig gezien het feit dat ik het zelf niet geprogrammeerd heb en dus de kennis mis?[/quote:4058d8b688]Ja en nee. Als je zoiets als Wordpress downloadt dan is dat inderdaad waarschijnlijk te makkelijk, al helpt het je misschien wel een goed beeld te vormen van wat een CMS nu precies is. Uit ervaring kan ik zeggen dat het bijzonder frustrerend is om aan een kant-en-klaar CMS (aangepaste) functionaliteit toe te voegen, onder andere door de punten die je zelf al noemt. Overigens hoeft een CMS niet kant-en-klaar te zijn, er is geen enkele reden waarom je dit niet zelf zou kunnen leren schrijven. [quote:4058d8b688="Jochem987"]Ik vroeg me alleen af of het voor mij wel handig is om al meteen OO te leren programmeren als je praktisch nog niks weet van PHP, aangezien de meeste mensen het waarschijnlijk zo niet doen? Als ik dan tegen een probleem oploop dan is daar misschien niet veel over te vinden op google? En ik kan ook moeilijk inschatten of het, voor de site die ik nu voor ogen heb, slim is om dat op die manier te doen en niet overkill is.[/quote:4058d8b688]Ja, het is al handig om gelijk OOP te programmeren. OOP is wat ze noemen een programmeerparadigma (Engels: programming paradigm) en op dit moment verreweg de meest populaire. Iedereen die zichzelf serieus neemt in de programmeerwereld is er mee bekend, dus je kan altijd met jouw probleem terecht bij andere mensen. Overigens wil ik niet suggereren dat OOP de enige of de beste oplossing is, dat is namelijk niet per definitie zo en hangt af van je specifieke situatie, maar ik raad je aan daar gewoon te beginnen. Wat betreft overkill: nee, dat denk ik niet. Het is een andere manier van denken, maar daardoor niet per se meer werk. Sterker nog, je zult snel merken dat het je werk bespaart als je het gelijk goed doet, doordat je stukken code heel vaak kan hergebruiken. [quote:4058d8b688="Jochem987"]Ook vroeg ik me af wat voor data er precies in het database moet komen en hoe de tabellen er dan ongeveer uit komen te zien. Daar heb ik nog geen enkel beeld bij in combinatie met het soort site dat ik wil gaan maken.[/quote:4058d8b688]In de database komt alles te staan dat niets met de code (PHP, HTML, CSS, MySQL, JavaScript, etc.) te maken heeft. Dus de werkelijke inhoud. Om te bepalen hoe de database eruit komt te zien moet je eerst bedenken wat je op je site wil gaan zetten. Bedenk voor jezelf hoe een opsomming van verschillende gegevens zoals bijvoorbeeld een reactie eruit gaan zien. Zet een aantal voorbeeldreacties in een spreadsheet onder elkaar, doe hetzelfde met alle andere gegevens. Na een tijdje zie je dat een reactie bijvoorbeeld altijd een auteur en een tekst heeft, soms een titel. Werk dit uit voor alle soorten gegevens die je wil hebben. Als je dan zo'n verzameling van tabellen op papier hebt staan ga je die tabellen normaliseren tot 3NF/BCNF. Er moet genoeg te vinden zijn op internet, de link die ik in mijn eerste reactie plaatste is m.i. een aardig startpunt. - Bas
  • Ok, dit heeft mij weer een stuk verder geholpen denk ik! Dus als ik het goed begrijp is een CMS niets anders dan de mogelijkheid om als het ware via "invoerformulieren" die op de site staan (bestemd voor de beheerder) om in mijn geval bijvoorbeeld een nieuw nieuwsbericht te posten (maar bijv ook het reactie systeem op die nieuwsberichten). Dus inhoud toe voegen aan de site zonder dat je de .php files hoeft in te duiken. Klopt het dat als je CMS goed werkt nauwelijks meer HTML code in je .php's hebt staan? Dit wordt dan neem ik aan via zon invoerformulier opgeslagen in de database en via een PHP script weer opgehaald en als HTML weergegeven op de site. Dat is wat ik er van begrijp tenminste. Kan je zeggen dat elke interactieve site die gebruik maakt van een database een CMS heeft? En uiteindelijk kan je er dus voor kiezen om ergens een CMS kant en klaar te downloaden, óf er zelf één te ontwikkelen wat als voordeel heeft dat ie speciaal is toegespitst op mijn site. [quote:0d2ffa87fd]Hoewel PHP een server side taal is, kan je wel vanaf de client side een stel parameters meegeven. In een URL zie je die vaak terug als de gegevens na het vraagteken en gescheiden door amperstands (&). Door middel van die parameters kan je met hetzelfde stukje PHP-script toch iedere keer wat anders laten zien, bijvoorbeeld door een begin- en einddatum te geven. Verander je de data, dan verandert ook de inhoud van de pagina, maar het PHP-script blijft hetzelfde.[/quote:0d2ffa87fd] Dit stukje van je antwoord snapte ik alleen niet zo goed. Ik weet dat PHP een server side taal is, maar het gaat me met name om dat gedeelte met die parameters. Begrijp gewoon niet wat je hier mee bedoeld. Verder zat ik me te bedenken waar ik straks het beste mee kan beginnen als ik ga bouwen. Veel dingen zitten zo in elkaar verweven dat ik me kan voorstellen dat het veel werk kan schelen door het goed aan te pakken. Bijvoorbeeld door eerst te bepalen hoe je tabellen in de database eruit komen te zien voordat je begint met het scripten van je CMS (misschien zeg ik nu iets heel geks, maar ik noem maar wat). Wat zou je mij aanraden?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.