Het opslaan van gegevens in een database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jorn Reed

Jorn Reed

15/04/2019 00:20:23
Quote Anchor link
Ik ben bezig met een website. De website bestaat voornamelijk uit content die toegevoegd kan worden zoveel als je wilt. Denk hierbij aan nieuwsberichten en andere content.
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<p>telefoon {{phone}}</p>
<p>email {{email}}</p>

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.
 
PHP hulp

PHP hulp

29/03/2024 15:22:51
 
- Ariën  -
Beheerder

- Ariën -

15/04/2019 08:15:01
Quote Anchor link
Wat heeft een contact-page te maken met het toevoegen van diverse content aan de site? Die mailt toch enkel?
 
Adoptive Solution

Adoptive Solution

15/04/2019 09:04:41
Quote Anchor link
Kijk eens hier.

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.
 
Jorn Reed

Jorn Reed

15/04/2019 15:38:08
Quote Anchor link
Op mijn contact pagina’s heb ik meestal een contact formulier en wat gegevens wat betreft de locatie.
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
 
- Ariën  -
Beheerder

- Ariën -

15/04/2019 15:48:46
Quote Anchor link
Een contactpagina is toch wat anders dan een berichten-pagina met bijv. nieuws-items.
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...
 
Jorn Reed

Jorn Reed

15/04/2019 15:57:35
Quote Anchor link
Ik begrijp het idee van de fields_table maar ik hoef ze verder niet te koppelen aan een bericht. Het ging mij er meer om dat er verschil zit tussen data die je maar 1x opslaat en data zoals berichten waar je er meer van hebt.
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input type="text" name="phonenumber" value="<?=$row['phonenumber']">
 
Jorn Reed

Jorn Reed

16/04/2019 20:26:31
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

16/04/2019 20:36:20
Quote Anchor link
Waarom zou je die niet bewaren, je kan hem ook enkel limiteren met LIMIT tot 1 record
 
Jorn Reed

Jorn Reed

16/04/2019 20:42:06
Quote Anchor link
Ik vind het zelf heel lastig om uitleggen. Posts en andere content maakt niet uit op de site. Hoeveel er ook van word opgeslagen. Ik wil met dat telefoonnummer/email en locatie dat wanneer de eigenaar van de site het invoert. De eerst volgende keer dat hij de admin pagina bezoekt. Geen leeg formulier ziet om een nieuwe toe te voegen, maar een formulier om het te bewerken.

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
 
Rob Doemaarwat

Rob Doemaarwat

16/04/2019 22:10:11
Quote Anchor link
Je wilt dus eigenlijk een soort algemene config voor de site opslaan. Unieke waarden die maar 1x voorkomen. Wat je hier toch nog vaak voor ziet is dat er een tabel voor is, met maar 1 record. Voordeel hiervan is dat je voor elke waarde een bijpassende kolom aan kunt maken (van het juiste type). Je moet er dan zelf voor zorgen dat het ook bij 1 record blijft (gewoon geen inserts doen, alleen updates). Nadeel is dat je voor elke nieuwe config waarde een extra kolom bij moet maken.

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
 
Thomas van den Heuvel

Thomas van den Heuvel

17/04/2019 00:23:41
Quote Anchor link
Gewoon een config-tabel maken met een key- en een value-kolom (en een auto-increment id uiteraard).

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.
 
Jorn Reed

Jorn Reed

17/04/2019 00:28:58
Quote Anchor link
Bedoelen jullie met key, gewoon de naam van de kolom, en value de waarde die de kolom bevat?
KEY = phonenumber, VALUE = 06132243234
 
Thomas van den Heuvel

Thomas van den Heuvel

17/04/2019 01:12:15
Quote Anchor link
Yus.

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
 
Jorn Reed

Jorn Reed

17/04/2019 01:18:30
Quote Anchor link
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?
 
Thomas van den Heuvel

Thomas van den Heuvel

17/04/2019 14:49:05
Quote Anchor link
Je zou de key-kolom uniek kunnen maken?
 
Jorn Reed

Jorn Reed

17/04/2019 19:00:47
Quote Anchor link
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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.