Koppla PHP och MySQL i bluetronix CMS
I den här handledningen skapar du en egen databastabell och kopplar den till en CMS-sida. Genom praktiska exempel lär du dig SQL-kommandona INSERT, REPLACE, SELECT och UPDATE, samt hur du visar databasinnehåll via HTML-platshållare på din webbsida.
Skapa exempel-sida
För den här handledningen skapar du först en ny exempelwebbsida.
Till exempel:
PHP MySQL Exempel
Sidan kan först vara helt tom.
Öppna sidan i en vanlig HTML-redigerare och lägg till valfri sektion. Det här HTML-området kommer senare att fungera som mall för den data som laddas från databasen.
Skapa databastabell
Innan du kan spara data behöver du en egen databas-tabell.
Öppna därför:
Databas → Ny tabell
För det här exemplet använder vi en tabell med kolumnerna ID, Datum, Titel, Beskrivning och Bild.
ID innehåller det unika ID:t för posten. Datum lagrar datum och tid. Titel innehåller titeln, Beskrivning en längre beskrivningstext och Bild filnamnet för bilden.
Tabell-, kolumn- och variabelnamn bör alltid användas på engelska inom utvecklartutorialer.
Öppna PHP-kod
När tabellen har skapats, går du tillbaka till din exempelwebbsida.
Öppna där:
PHP Kod
Från det här området kan du direkt nå databasen.
Spara data med INSERT eller REPLACE
I det första exemplet sparar du en post i den nyss skapade databas-tabellen.
För detta, sätt först de nödvändiga PHP-variablerna.
Exempel:
$ID = 1;
$Date = date("Y-m-d H:i:s");
$Title = "My Title";
$Description = "My Description";
$Image = "my-image.jpg";
Dessa värden kan du sedan spara med en MySQL Prepared Statement.
För databasåtkomst bör du i allmänhet använda Prepared Statements. På så sätt bearbetas värdena separat från själva SQL-kommandot.
Exempel med REPLACE:
$stmt = $mysqli->prepare("REPLACE INTO ExampleTable (ID, `Date`, Title, Description, Image) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("issss", $ID, $Date, $Title, $Description, $Image);
$stmt->execute();

Besök sidan en gång till.
Öppna därefter:
Databas → Visa
Där bör den ny skapade posten synas.
Skillnaden mellan INSERT och REPLACE
INSERT lägger till en ny post.
Om det redan finns en post med samma unika ID eller samma primärnyckel kan ett vanligt INSERT orsaka ett Duplicate-Key-fel.
REPLACE kan användas om en befintlig post med samma unika ID ska ersättas.
För testexempel med ett fast ID är REPLACE därför ofta mer praktiskt, eftersom sidan kan besökas flera gånger.
Hämta data med SELECT
I nästa steg läser du tillbaka den sparade posten från databasen.
Exempel:
$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 lästa värdena finns sedan i variablerna $Date, $Title, $Description och $Image.
Koppla databasen med $LayoutHTML
Den globala CMS-variabeln $LayoutHTML innehåller under renderingprocessen den aktuellt skapade HTML-koden för sidan.
På så sätt kan du ersätta egna platshållare inom HTML-koden med data från MySQL-tabellen.
Sätt platshållare i HTML-koden
Öppna åter HTML-koden för din exempelpagina.
Innehållet i den tidigare infogade avsnittet kan nu ersättas med egna platshållare.
Till exempel:
__MyDate__
__MyTitle__
__MyDescription__
__MyImage__
Ett förenklat HTML-exempel:
<section>
<div class="container">
<img src="__MyImage__" alt="">
<small>__MyDate__</small>
<h2>__MyTitle__</h2>
<p>__MyDescription__</p>
</div>
</section>

För detta första MySQL-exempel kan befintliga översättningsmarkörer först tas bort. Detta gör det lättare att se vilka innehåll som direkt ersätts av PHP och MySQL.
Använd databasvärden i layouten
Efter att uppgifterna har laddats med SELECT, ersätter du platshållarna inom $LayoutHTML.
Exempel:
$LayoutHTML = str_replace("__MyDate__",$Date,$LayoutHTML);
$LayoutHTML = str_replace("__MyTitle__",$Title,$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__",$Description,$LayoutHTML);
$LayoutHTML = str_replace("__MyImage__",$Image,$LayoutHTML);
Flödet blir därmed:
MySQL-databas → SELECT → PHP-variabler → str_replace() → $LayoutHTML → färdig webbplats

Innehållet i databasen visas därmed direkt inom den befintliga HTML-layouten.
Testa ändringar direkt via databasen
Öppna:
Databas → Visa
Redigera den befintliga post.
Till exempel kan du ändra titeln från My Title till New My Title.
Du kan också ändra bilden via den motsvarande BX-Image-Button.
Efter att du har sparat och laddat om webbsidan kommer de ändrade uppgifterna att visas direkt i sidlayouten.
Det finns en direkt koppling mellan:
Databas → PHP → $LayoutHTML → Webbplats
Ändra data med UPDATE
Med UPDATE kan du direkt ändra en befintlig post via PHP.
Enligt ett villkor fastställs vilken post som ska ändras.
Efter att uppdateringen har utförts kan du ladda data igen med SELECT och sedan visa dem på din sida via $LayoutHTML.
Sammanfattning
Med PHP och MySQL kan du spara, läsa och ändra data inom bluetronix CMS.
INSERT eller REPLACE sparar data, SELECT läser ut data och UPDATE ändrar befintliga poster.
Via $LayoutHTML kan du sedan direkt införliva de laddade uppgifterna i befintliga HTML-strukturer.
Detta kopplar databasinnehåll på ett rent sätt med HTML-layouten på en CMS-sida.
FAQ
vad kunder ofta frågar oss
Vad behöver jag för den här PHP- och MySQL-guiden?
Du behöver en utvecklaråtkomst till bluetronix CMS. Du bör dessutom redan veta hur CMS-sidrenderingsprocessen fungerar och vad variabeln $LayoutHTML gör.
Var skapar jag en ny databas tabell?
Öppna i CMS området Databas → Ny tabell.
Vilka kolumner används i exemplet?
I guiden används kolumnerna ID, Datum, Titel, Beskrivning och Bild.
Varför ska jag använda Prepared Statements?
Prepared Statements separerar de angivna värdena från själva SQL-kommandot och är därför avsedda för databasåtkomster.
Vad är skillnaden mellan INSERT och REPLACE?
INSERT lägger till en ny post. REPLACE kan ersätta en befintlig post med samma unika ID eller samma primära nyckel.
Hur läser jag ut data från databasen?
För detta använder du ett SELECT-kommando. De laddade värdena kan du sedan spara i PHP-variabler som $Title, $Description eller $Image.
Hur kommer MySQL-data in i sidans HTML?
Du sätter först egna platshållare i HTML-koden och ersätter dem sedan med str_replace() inom $LayoutHTML med de laddade databasvärdena.
Hur kan jag kontrollera om kopplingen mellan databas och hemsida fungerar?
Öppna Databas → Visa, ändra ett befintligt databaspost och ladda sedan om hemsidan. De nya värdena ska visas direkt i sidlayouten.
Vad används UPDATE till?
Med UPDATE kan du direkt ändra en redan befintlig datab post via PHP.
Kan jag också använda bilder från databasen i sidlayouten?
Ja. I exemplet sparas bildvärdet i variabeln $Image och används genom en egen platshållare som __MyImage__ i $LayoutHTML.