Het opslaan van gegevens in een database
Ik heb ook een contact pagina gemaakt. De gene waarvoor ik de website maak. Wilt niet net zoals alle andere pagina’s dat je zoveel content kan toevoegen als je wilt. In plaats daarvan wilt die gene dat je op de contact pagina alleen maar 1 foto, 1 adres en 1 telefoon nummer kan toevoegen/en mogelijk om het aan te passen mocht hij een nieuw telefoon nummer hebben of zoiets. In iedergeval wil ik dat niet hardcoded doen. Wat is de beste manier om dingen op te slaan in een database als je van een bepaald gegeven nodig hebt en niet meer?
Het resultaat in de html zou er dan zo uit moeten zien, alleen weet ik niet hoe ik dat verder met database opslag moet aanpakken.
Ik wil dus geen while loop gebruiken omdat ik geen herhalende content toepas op de pagina. En het leek mij persoonlijk ook overbodig om een column in een tabel te maken voor 1 specifiek iets.
Wat heeft een contact-page te maken met het toevoegen van diverse content aan de site? Die mailt toch enkel?
Een FORM om te registreren :
https://www.codexworld.com/registration-login-system-php-mysql-session/
Een FORM om een afbeelding op te laden :
https://www.codexworld.com/upload-store-image-file-in-database-using-php-mysql/
Combineer, pas aan, voeg toe en Bob is je oom.
Ook weet ik wel hoe ik afbeeldingen moet opslaan in de database. Maar m’n vraag is heel anders. Normaal als je een tabel maakt voor bijvoorbeeld berichten. Kun je zoveel berichten toevoegen als je wilt. In dit geval wil ik bijvoorbeeld dat dw gebruiker maar 1 telefoon nummer en email kan plaatsen op de contact pagina. Daar hoef ik geen 1000 van. Ik heb het hier een beeke over iets wat te vergelijken is met de Wordpress plugin acf custom fields. Daar kan je zowel kolommen aanmaken voor velden die herhalen. Maar ook voor velden waar je er maar 1 van hebt zoals bijvoorbeeld een telefoonnummer. Dit wil ik bereiken maar dan in pure php
Het verschil is dat een contactformulier alles meestal mailt.
Maar als je dus meerdere velden wilt hebben, dan kan je die prima genormaliseerd opslaan. Maak een tabel 'fields' met daarin alle soorten velden (bericht, telefoonnummer, faxnr, mail, iban, werknemersID... whatever). En maak een veld met items_fields, en koppel daar met drie velden BerichtID, type en fieldID de juiste velden aan het bericht.
De rest spreekt denk ik dan vanzelf ;-)
Als je het luxe wilt aanpakken, zou je de field-table zelf nog kunnen uitbouwen met extra velden om een formulier te customizen, zoals wat voor HTML-type het is, of deze zichtbaar is, of het verplicht is, of het aan reguliere expressies moet voldoen etc...
Ik wilde eigenlijk gewoon dat je in het admin paneel een input hebt waar je bijv een telefoon nummer kan toevoegen. Zodra je het admin paneel bezoekt is het veld niet leeg om een nieuwe toe te kunnen voegen, maar is die gevuld met het telefoon nummer, zodat je hem bijv kan updaten.
Is er een mogelijkheid, als ik die fields tabel maak, voor specifieke waardes, dat er een soort van block op gezet kan worden, dat er niet meer dan 1 row opgeslagen kan worden?
Waarom zou je die niet bewaren, je kan hem ook enkel limiteren met LIMIT tot 1 record
Toevoeging op 16/04/2019 21:21:49:
Ik heb het uiteindelijke doel een beetje uitgetekend in een snelle schets. Misschien geeft het een idee hoe de database inrichting moet zijn om het naar mijn wens te maken: http://prntscr.com/ncvab9
Dat is dan meteen het alternatief: een soort "meta" tabel met een kolom "key" (naam van het veld, bijvoorbeeld "telefoon", "email", enz) en een kolom "value" (de bijbehorende waarde). Nadeel is dat je alle waarden als platte tekst op slaat (dus bijvoorbeeld ook een datum), maar het voordeel is dat je gewoon nieuwe waarden in kunt voegen zonder dat je je database structuur aan hoeft te passen. In je admin-beheer-scherm toon je dan gewoon een invoerveld voor elke "key".
Gewijzigd op 16/04/2019 22:10:55 door Rob Doemaarwat
In de key zou je een soort naamgevingsstramien kunnen invoeren, waarbij je de naam start met het onderdeel, bijvoorbeeld contact.phone en contact.email ofzo.
Dit zodat je direct kunt zien tot welk onderdeel zo'n configvariabele behoort. Zorg in ieder geval dat er op enigerlei wijze structuur in zit zodat geen wildgroei in dit soort variabelen ontstaat.
KEY = phonenumber, VALUE = 06132243234
Een alternatief is trouwens dat als je een specifiek "paginatype" hebt dat je hier properties aan kunt hangen die dan via een generieke pagina-bewerk-actie aangepast kunnen worden.
Dan zit die informatie dus niet in de "globale scope" maar heeft alleen betekenis binnen die pagina / binnen dat pagina-type.
Gewijzigd op 17/04/2019 01:14:59 door Thomas van den Heuvel
Is er dan ook de mogelijkheid om het te blokkeren als je al een adres ofzo in de database hebt? Dat je die ene bewijze van alleen nog kan updaten?
Je zou de key-kolom uniek kunnen maken?
Ik zou natuurlijk wel de mogelijkheid kunnen toevoegen dat hij zoveel adressen kan toevoegen als hij wilt. En dan in het systeem een keuze optie welke hij daadwerkelijk wilt tonen op z'n site?