PDO transaction prepared statements

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

Back-end PHP Software Developer - Juniorfunctie

Functieomschrijving Wij zijn op zoek naar een PHP Software Developer om ons team te versterken en mee te werken aan de ontwikkeling van eigen IOT-oplossingen. In deze functie ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor het uitlezen en managen van sensoren in machines. Je werkt nauw samen met een team van ontwikkelaars en engineers om de beste software-oplossingen te creëren. Jouw werkzaamheden zien er als volgt uit: Je bent in deze rol verantwoordelijk voor het ontwerpen, ontwikkelen en onderhouden van webapplicaties en softwaretoepassingen voor in-house ontwikkelde IOT oplossingen. Je werkt aan complexe databases en back-end

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

C# .NET Ontwikkelaar ASP.NET

Samengevat: Deze werkgever is een inkooporganisatie. Ben jij een ervaren .Net ontwikkelaar? Heb je ervaring met .Net en C#? Vaste baan: C# .NET Developer .Net MBO HBO €3.100 - €4.300 Onze missie is: “Een essentiële bijdrage leveren aan het verlagen van de integrale kostprijs van de aangesloten groothandels, middels het bundelen van inkoopvolume en het creëren van synergie met en tussen de groothandels en leveranciers, met scherpe inkoopprijzen, goede handelscondities en gerichte dienstverlening als resultaat” Zij werken voor MKB klanten. Deze werkgever heeft veel verschillende projecten. Houd jij van afwisseling? Dan zit je bij hun goed! De branche van dit

Bekijk vacature »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

Bekijk vacature »

Pagina: 1 2 volgende »

Michael -

Michael -

23/04/2014 13:33:57
Quote Anchor link
Allen,

Op de bekende zoekmachine kom ik genoeg voorbeelden tegen van prepared statements i.c.m. transactions.
Maar toch werkt bij mij de rollback niet. Een exception op de 2e tabel, terwijl de 1e wel is toegevoegd.

Kan iemand mij uitleggen wat er fout gaat? Dit is de eerste keer dat ik transactions wil gebruiken.

Ingekort voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
try
{
    $db->beginTransaction();

    $sql = "
    INSERT
        INTO "
. TABLE_PREFIX . "profile
        (
            naam
        )
        VALUES
        (
            :naam
        )
    "
;
    
    $stmt = $db->prepare($sql);
    
    $stmt->bindParam(':naam', $_POST['gegevens']['naam'], PDO::PARAM_STR);

    $stmt->execute();
    
    $profile_id = $db->lastInsertId();
    
    $sql = "
    INSERT
        INTO "
. TABLE_PREFIX . "application
        (
            profile_id
        )
        VALUES
        (
            :profile_id
        )
    "
;
    
    $stmt = $db->prepare($sql);
    
    $stmt->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);

    $stmt->execute();
    
    $db->commit();
}

catch(PDOException $e)
{

    if(isset($db))
    {

        $db->rollBack();
    }
}

?>


Bvd
 
PHP hulp

PHP hulp

26/04/2024 20:00:50
 
Erwin H

Erwin H

23/04/2014 14:41:53
Quote Anchor link
Welke storage engine gebruik je? Niet elke storage engine ondersteunt transactions (MyISAM, de standard, in elk geval niet).
 
Michael -

Michael -

23/04/2014 14:48:05
Quote Anchor link
Dat verander ik eigenlijk nooit, dus standaard MyISAM.
Dan kan ik lang blijven zoeken als het daarop niet werkt.

Welke raad je wel aan te gebruiken?

Ik heb de volgende keuzes
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<select name="new_tbl_type">
    <option value="MRG_MYISAM" title="Collection of identical MyISAM tables">
        MRG_MYISAM
    </option>
    <option value="BLACKHOLE" title="/dev/null storage engine (anything you write to it disappears)">
        BLACKHOLE
    </option>
    <option value="CSV" title="CSV storage engine">
        CSV
    </option>
    <option value="MEMORY" title="Hash based, stored in memory, useful for temporary tables">
        MEMORY
    </option>
    <option value="ARCHIVE" title="Archive storage engine">
        ARCHIVE
    </option>
    <option value="MyISAM" title="Default engine as of MySQL 3.23 with great performance" selected="selected">
        MyISAM
    </option>
</select>
Gewijzigd op 23/04/2014 14:49:04 door Michael -
 
Erwin H

Erwin H

23/04/2014 15:14:50
Quote Anchor link
Uhm.... dan heb je denk ik geen enkele engine die transactions ondersteunt. InnoDB is de meeste gebruikte die het ondersteunt (en die meestal wel geinstalleerd is), maar die zie ik er ook niet tussen staan.

Hier een lijstje met engines van Wikipedia: http://en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines
 
Michael -

Michael -

23/04/2014 15:23:41
Quote Anchor link
Ik kan me InnoDB wel herinneren, maar zie hem er nu inderdaad niet (meer) tussen staan.
Misschien eens contact opnemen met m'n hosting of hun wat voor me willen/kunnen doen.

Bedankt voor je reactie in ieder geval. Ik weet nu in ieder geval waar het probleem ligt.

Toevoeging op 23/04/2014 15:51:54:

Ik krijg als antwoord van de support om de 'MariaDB database (BETA)' te gebruiken die wel InnoDB ondersteund.
Wat vinden jullie van MariaDB en is het verschil met MySQL erg groot?
 
Erwin H

Erwin H

23/04/2014 16:03:05
Quote Anchor link
Geen ervaring mee, maar een snelle blik op de Wikipedia pagina ( http://en.wikipedia.org/wiki/MariaDB ) leert dat het wel goed zou moeten zitten. Ontwikkeld door hetzelfde team als dat MySQL heeft ontwikkeld. Ik kan alleen zo snel niet vinden welke php mogelijkheden er zijn, maar iets zegt me dat je gewoon PDO moet kunnen gebruiken.
Gewijzigd op 23/04/2014 16:03:24 door Erwin H
 
Michael -

Michael -

23/04/2014 16:11:50
Quote Anchor link
Blijkbaar is het een kopie, maar vanuit daar verder ontwikkelt. Dus is het eigenlijk MySQL maar met extra functies.
Ik ga morgen verder kijken hoe ik kan overschakelen.
Quote:
The goal for Maria-DB is to be a drop-in replacement for MySQL – with more features and better performance.

MariaDB is based on the corresponding version of MySQL, if one exists. For example, MariaDB 5.1.53 is based on MySQL 5.1.53, with some added bug fixes, additional storage engines, new features, and performance improvements. Versions of MariaDB that do not have an equivalently numbered version of MySQL (e.g., MariaDB 5.2.4) contain major new features the developers felt warranted a new version number. When comparing the two here, I’ll focus on the additional features of MariaDB.

bron
 
Ozzie PHP

Ozzie PHP

23/04/2014 16:31:04
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

23/04/2014 18:28:34
Quote Anchor link
Ik vind het wel typisch dat een hosting adviseert om MariaDb te gaan gebruiken omdat de MySQL versie die zij draaien geen InnoDB engine heeft. Welke versie is dat?
 
Ward van der Put
Moderator

Ward van der Put

23/04/2014 19:08:36
Quote Anchor link
Waar Ger nog aardig "typisch" schrijft, zou ik "verontrustend" invullen.
 
Michael -

Michael -

23/04/2014 20:09:08
Quote Anchor link
Ozzie, bedankt. Dat maakt in ieder geval duidelijk dat je om mariadb te gebruiken niks hoeft aan te passen. Dus heb er zeker wat aan.

Ger & Ward, ja bijzonder is t wel. Ik weet ook niet hoeveel werk het voor hun is om InnoDB op MySQL te installeren? Ze kunnen vast niet aan alle gebruikerswensen gehoor geven.

Ger, Welke versie MySQL? Waar kan ik dat vinden? In phpinfo() staat 'MySQL Client API version 5.5.35' en in phpmyadmin staat 'MySQL-client versie: 5.1.72'.

Edit:

Voor de MySQL is het versie 5.1.73
Voor MariaDB is de MySQL versie 5.5.36


Toevoeging op 23/04/2014 20:33:23:

Ik heb zojuist een database aangemaakt in MariaDB er hier de tabellen in geïnstalleerd.
Standaard staat deze engine wel op InnoDB en de rollback werkt! :)
Gewijzigd op 23/04/2014 20:15:26 door Michael -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

23/04/2014 21:21:54
Quote Anchor link
Volgens mij kan je in PMA (ik gebruik dat bij voorkeur niet) boven aan de pagina zien welke server versie gebruikt wordt van MySQL
Voor een zichzelf respecterende hosting provider zou dat op zijn minst 5.5 moeten zijn
Gewijzigd op 23/04/2014 21:31:10 door Ger van Steenderen
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 07:27:02
Quote Anchor link
Je kunt de MySQL-versie ook controleren met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT VERSION();

Om de engines te tonen gebruik je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SHOW ENGINES;

Ger van Steenderen op 23/04/2014 21:21:54:
Volgens mij kan je in PMA (ik gebruik dat bij voorkeur niet) boven aan de pagina zien welke server versie gebruikt wordt van MySQL
Voor een zichzelf respecterende hosting provider zou dat op zijn minst 5.5 moeten zijn

Inderdaad, en als dat minimaal MySQL 5.5 is, dan wordt het alleen nog vreemder: vanaf versie 5.5 is InnoDB namelijk de standaard engine...
 
Michael -

Michael -

24/04/2014 09:26:03
Quote Anchor link
Ik had in een eerdere post al de versies en engines genoemd.
MySQL heeft versie 5.1.73
MariaDB heeft MySQL versie 5.5.36 (Standaard InnoDB inderdaad).
 
Reshad F

Reshad F

24/04/2014 09:42:06
Quote Anchor link
Hoe heb je MyISAM altijd gebruikt dan i.c.m. relaties? :o
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 09:51:44
Quote Anchor link
Michael, kom je er nu uit met de prepared statements? Of heb je nog wat hulp nodig?

Ik zou zelf twee kleinigheden veranderen:

• de transactie pas starten na het klaarzetten van de prepared statement, dus voor de eerste execute();

• van het tweede prepared statement een gewone query maken, want je gebruikt hier de last insert ID rechtstreeks uit de database.
 
Michael -

Michael -

24/04/2014 10:05:49
Quote Anchor link
>> Hoe heb je MyISAM altijd gebruikt dan i.c.m. relaties? :o
Wat bedoel je? JOINS? Dat werkt gewoon.

Ward, Ja de rollback werkt nu.
Dus regel 4 kan beter op regel 21.
Waarom is de tweede niet goed dan? (en dus ook de 3e,4e,5e,6e..) Ik zou wel graag de prepared statements behouden i.v.m. security.
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 10:26:04
Quote Anchor link
De tweede mag ook een prepared statement zijn hoor, alleen gebruik je in dit voorbeeld uitsluitend de last insert ID rechtstreeks uit de database. Er komt hier niets mogelijk kwaadaardigs van buiten naar binnen, dus voegt een prepared statement weinig toe.

Aangezien de database pas bij de execute() daadwerkelijk wordt gewijzigd, kun je het starten van de transactie uitstellen totdat alle voorbereidingen afgerond zijn (dus het "prepared" van een prepared statement rond is). Schematisch is dat zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$stmt_one
   = $dbh->prepare('...');
$stmt_two   = $dbh->prepare('...');
$stmt_three = $dbh->prepare('...');

$stmt_one->bindParam('...');
$stmt_two->bindParam('...');
$stmt_three->bindParam('...');

$dbh->beginTransaction();

try {

    $stmt_one->execute();
    $stmt_two->execute();
    $stmt_three->execute();

    $dbh->commit();

}
catch (PDOException $e) {

    $dbh->rollBack();

}

?>


Uiteraard kun je ook in het eerste deel nog foutafhandeling toevoegen, alleen hoeft de rollBack() eigenlijk de drie keer execute() terug te rollen.
 
Michael -

Michael -

24/04/2014 10:50:39
Quote Anchor link
Bedankt voor de uitleg!
Wat doe je nu met de last insert id dan? Dat laat je niet zien. Wanneer is die beschikbaar en kan ik die toevoegen in de tabellen.

Zoals ik het nu heb wordt er al een id aangemaakt, auto_increment, en vervolgens weer verwijdert.
Wat ik dus krijg als er een fout in de 2e,3e,4e... tabel zit, dat alles wordt terug gedraaid, en ik weer wat toevoeg, dat hij dan een id overslaat. Heb je dat met jouw voorbeeld nog steeds?
Op zich vind het niet heel erg, dan kan ik ook zien wanneer er wat fout is gegaan, maar vroeg het me af.
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 10:59:09
Quote Anchor link
>> Wat doe je nu met de last insert id dan?

Daarvoor moet je dan wel een extra query of prepared statement tussenvoegen. Je krijgt dan inderdaad een andere volgorde dan mijn (algemene) voorbeeld, want de last insert ID is pas na het uitvoeren van de voorafgaande prepared statement bekend.
 
Michael -

Michael -

24/04/2014 11:09:06
Quote Anchor link
Mweh... dan kan ik jouw voorbeeld dus al niet toepassen.
Hoe doe je dat zelf dan om tabellen te koppelen? Ik moet toch weten welke bij welke horen. Dat kan ik niet achteraf nog gaan uitzoeken lijkt me.

Maakt ie in jouw voorbeeld wel een id aan en verwijdert deze weer? Dus de a_i verhoogt met 1?
In onderstaande zou dat sowieso wel weer gebeuren.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$stmt_one
   = $dbh->prepare('...');
$stmt_one->bindParam('...');
$stmt_one->execute();
$profile_id = $dbh->lastInsertId();

$stmt_two   = $dbh->prepare('...');
$stmt_three = $dbh->prepare('...');

$stmt_two->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);
$stmt_three->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);

$dbh->beginTransaction();

try {
    $stmt_two->execute();
    $stmt_three->execute();

    $dbh->commit();

}
catch (PDOException $e) {

    $dbh->rollBack();

}

?>
 

Pagina: 1 2 volgende »



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.