Download nu de app en test 10 dagen gratis
Valuta Taal kiezen Selecteer regio

PHP en MySQL verbinden in het bluetronix CMS

In deze tutorial maak je je eigen database tabel en verbind je deze met een CMS-pagina. Aan de hand van praktische voorbeelden leer je de SQL-commando's INSERT, REPLACE, SELECT en UPDATE kennen en leer je hoe je database-waarden via HTML-placeholders op je website kunt weergeven.

Voorbeeldpagina aanmaken

Voor deze tutorial maak je eerst een nieuwe voorbeeldpagina aan.

Bijvoorbeeld:

PHP MySQL Voorbeeld

De pagina kan in eerste instantie volledig leeg zijn.

Open de pagina vervolgens in de normale HTML-editor en voeg een willekeurig paginaonderdeel toe. Dit HTML-gedeelte dient later als sjabloon voor de gegevens die uit de database worden geladen.

Database tabel aanmaken

Voordat je gegevens kunt opslaan, heb je een eigen databastabel nodig.

Open daarvoor:

Database → Nieuwe Tabel

Voor dit voorbeeld gebruiken we een tabel met de kolommen ID, Datum, Titel, Beschrijving en Afbeelding.

ID bevat de unieke ID van de gegevensregel. Datum slaat de datum en tijd op. Titel bevat de titel, Beschrijving een langere beschrijvingstekst en Afbeelding de afbeeldingsnaam.

Tabel-, kolom- en variabelenamen moeten binnen de ontwikkelaars-tutorials altijd in het Engels worden gebruikt.

PHP-code openen

Nadat de tabel is aangemaakt, ga je terug naar je voorbeeldpagina.

Open daar:

PHP Code

Vanuit dit gedeelte kun je direct toegang krijgen tot de database.

Gegevens opslaan met INSERT of REPLACE

In het eerste voorbeeld sla je een gegevensregel op in de eerder aangemaakte databastabel.

Zet daarvoor eerst de benodigde PHP-variabelen.

Voorbeeld:

$ID = 1;
$Date = date("Y-m-d H:i:s");
$Title = "My Title";
$Description = "My Description";
$Image = "my-image.jpg";

Deze waarden kun je vervolgens opslaan met een MySQL Prepared Statement.

Voor database-toegang moet je in principe Prepared Statements gebruiken. Hierdoor worden de waarden gescheiden van de daadwerkelijke SQL-opdracht verwerkt.

Voorbeeld met REPLACE:

$stmt = $mysqli->prepare("REPLACE INTO ExampleTable (ID, `Date`, Title, Description, Image) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("issss", $ID, $Date, $Title, $Description, $Image);
$stmt->execute();

Roep de pagina vervolgens eenmaal op.

Open daarna:

Database → Weergeven

Daar zou de nieuw aangemaakte record zichtbaar moeten zijn.

Verschil tussen INSERT en REPLACE

INSERT voegt een nieuwe record toe.

Als er al een record bestaat met dezelfde unieke ID of dezelfde Primary Key, kan een normaal INSERT een duplicate-key-fout veroorzaken.

REPLACE kan worden gebruikt wanneer een bestaande record met dezelfde unieke ID vervangen moet worden.

Voor testvoorbeelden met een vaste ID is REPLACE daarom vaak praktischer, omdat de pagina meerdere keren kan worden opgevraagd.

Gegevens uitlezen met SELECT

In de volgende stap lees je de opgeslagen record weer uit de database.

Voorbeeld:

$stmt = $mysqli->prepare("SELECT `Date`, Title, Description, Image FROM ExampleTable WHERE ID = ?");
$stmt->bind_param("i", $ID);
$stmt->execute();
$result = $stmt->get_result();

if($row = $result->fetch_assoc()) {
$Date = $row["Date"];
$Title = $row["Title"];
$Description = $row["Description"];
$Image = $row["Image"];
}

De uitgelezen waarden bevinden zich vervolgens in de variabelen $Date, $Title, $Description en $Image.

De database en $LayoutHTML verbinden

De globale CMS-variabele $LayoutHTML bevat tijdens het renderproces de momenteel gegenereerde HTML van de pagina.

Hierdoor kun je eigen plaatsaanduidingen binnen de HTML-code vervangen door gegevens uit de MySQL-tabel.

Plaatsvervangers in de HTML-code zetten

Open opnieuw de HTML-code van je voorbeeldpagina.

De inhoud van het eerder ingevoegde pagina-gedeelte kun je nu vervangen door eigen plaatsaanduidingen.

Bijvoorbeeld:

__MyDate__
__MyTitle__
__MyDescription__
__MyImage__

Een vereenvoudigd HTML-voorbeeld:

<section>
   <div class="container">
      <img src="__MyImage__" alt="">
      <small>__MyDate__</small>
      <h2>__MyTitle__</h2>
      <p>__MyDescription__</p>
   </div>
</section>

Voor dit eerste MySQL-voorbeeld kunnen bestaande vertaalmerken eerst worden verwijderd. Dit maakt het gemakkelijker om te zien welke inhoud rechtstreeks door PHP en MySQL wordt vervangen.

Databasewaarden in de lay-out plaatsen

Nadat de gegevens zijn geladen met SELECT, vervang je de plaatsaanduidingen binnen $LayoutHTML.

Voorbeeld:

$LayoutHTML = str_replace("__MyDate__",$Date,$LayoutHTML);
$LayoutHTML = str_replace("__MyTitle__",$Title,$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__",$Description,$LayoutHTML);
$LayoutHTML = str_replace("__MyImage__",$Image,$LayoutHTML);

De volgorde is dan:

MySQL-database → SELECT → PHP-variabelen → str_replace() → $LayoutHTML → voltooide website

De inhoud van de database wordt daardoor rechtstreeks binnen de bestaande HTML-layout weergegeven.

Wijzigingen rechtstreeks via de database testen

Open:

Database → Weergeven

Bewerk de bestaande dataset.

Bijvoorbeeld, je kunt de titel van My Title wijzigen naar New My Title.

Ook de afbeelding kun je wijzigen met de bijbehorende BX-Image-Button.

Na het opslaan en opnieuw laden van de website worden de gewijzigde gegevens direct in de pagina-indeling weergegeven.

Hiermee bestaat er een directe verbinding tussen:

Database → PHP → $LayoutHTML → Website

Gegevens wijzigen met UPDATE

Met UPDATE kun je een bestaande dataset direct via PHP wijzigen.

Daarbij wordt met een voorwaarde vastgesteld welke dataset gewijzigd moet worden.

Na het uitvoeren van de update kun je de gegevens opnieuw laden met SELECT en vervolgens via $LayoutHTML op je pagina weergeven.

Samenvatting

Met PHP en MySQL kun je gegevens binnen het bluetronix CMS opslaan, uitlezen en wijzigen.

INSERT of REPLACE slaan gegevens op, SELECT leest gegevens uit en UPDATE wijzigt bestaande datasets.

Via $LayoutHTML kun je de geladen gegevens vervolgens direct in bestaande HTML-structuren plaatsen.

Hierdoor kunnen database-inhoud en de HTML-indeling van een CMS-pagina netjes met elkaar worden verbonden.

FAQ

wat klanten ons vaak vragen

Wat heb ik nodig voor deze PHP- en MySQL-tutorial?

Je hebt een ontwikkelaarsaccount voor het bluetronix CMS nodig. Daarnaast moet je al weten hoe het CMS-pagina-renderproces werkt en welke rol de variabele $LayoutHTML speelt.

Waar maak ik een nieuwe database-tabel aan?

Open in het CMS het gedeelte Database → Nieuwe tabel.

Welke kolommen worden in het voorbeeld gebruikt?

In de tutorial worden de kolommen ID, Date, Title, Description en Image gebruikt.

Waarom zou ik Prepared Statements gebruiken?

Prepared Statements scheiden de doorgegeven waarden van de eigenlijke SQL-opdracht en zijn daarom bedoeld voor database-toegang.

Wat is het verschil tussen INSERT en REPLACE?

INSERT voegt een nieuwe dataset toe. REPLACE kan een bestaande dataset met dezelfde unieke ID of dezelfde primaire sleutel vervangen.

Hoe leze ik gegevens uit de database?

Hiervoor gebruik je een SELECT-opdracht. De geladen waarden kun je vervolgens bijvoorbeeld in PHP-variabelen zoals $Title, $Description of $Image opslaan.

Hoe komen MySQL-gegevens in de HTML van de pagina?

Je plaatst eerst je eigen plaatsaanduiders in de HTML-code en vervangt deze vervolgens met str_replace() binnen $LayoutHTML door de geladen databasewaarden.

Hoe kan ik controleren of de verbinding tussen database en website werkt?

Open Database → Weergeven, wijzig een bestaand record en laad daarna de website opnieuw. De nieuwe waarden zouden vervolgens direct in de paginalay-out moeten verschijnen.

Waarvoor wordt UPDATE gebruikt?

Met UPDATE kun je een al bestaand record direct via PHP wijzigen.

Kan ik afbeeldingen uit de database ook in de paginalay-out gebruiken?

Ja. In het voorbeeld wordt de afbeeldingswaarde opgeslagen in de variabele $Image en wordt deze via een eigen plaatsaanduiding zoals __MyImage__ in $LayoutHTML gebruikt.

CMS