Koble PHP og MySQL i bluetronix CMS
I denne opplæringen oppretter du en egen database-tabell og kobler den til en CMS-side. Gjennom praktiske eksempler lærer du SQL-kommandoene INSERT, REPLACE, SELECT og UPDATE, og finner ut hvordan du viser databaseverdier på nettstedet ditt via HTML-plassholdere.
Opprett eksempelside
For denne veiledningen lager du først en ny eksempelside.
For eksempel:
PHP MySQL Eksempel
Siden kan være helt tom i begynnelsen.
Åpne siden deretter i en vanlig HTML-editor og legg til et vilkårlig sideavsnitt. Dette HTML-området vil senere fungere som mal for dataene som hentes fra databasen.
Opprett databasen tabel
Før du kan lagre data, trenger du en egen databasetabell.
Åpne derfor:
Database → Ny tabell
For dette eksemplet bruker vi en tabell med kolonnene ID, Dato, Tittel, Beskrivelse og Bilde.
ID inneholder den unike ID-en til posten. Dato lagrer dato og klokkeslett. Tittel inneholder tittelen, Beskrivelse en lengre tekstbeskrivelse og Bilde filnavnet på bildet.
Tabell-, kolonne- og variabelnavn bør alltid være på engelsk i utviklerveiledningene.
Åpne PHP-kode
Når tabellen er opprettet, går du tilbake til eksempelsiden din.
Åpne der:
PHP Kode
Fra dette området kan du få direkte tilgang til databasen.
Lagre data med INSERT eller REPLACE
I det første eksemplet lagrer du en post i den tidligere opprettede databasetabellen.
Sett først de nødvendige PHP-variablene.
Eksempel:
$ID = 1;
$Date = date("Y-m-d H:i:s");
$Title = "My Title";
$Description = "My Description";
$Image = "my-image.jpg";
Disse verdiene kan du deretter lagre med en MySQL Prepared Statement.
For databasetilgang bør du generelt bruke Prepared Statements. Dette gjør at verdiene behandles separat fra selve SQL-kommandoen.
Eksempel 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();

Åpne siden en gang til.
Åpne deretter:
Database → Visning
Der bør den nyopprettede post være synlig.
Forskjellen mellom INSERT og REPLACE
INSERT legger til en ny post.
Hvis det allerede finnes en post med samme unike ID eller samme primærnøkkel, kan et vanlig INSERT forårsake en Duplicate-Key-feil.
REPLACE kan brukes når en eksisterende post med samme unike ID skal erstattes.
For testeksempler med en fast ID er REPLACE derfor ofte mer praktisk, da siden kan åpnes flere ganger.
Hente data med SELECT
I neste trinn leser du den lagrede posten fra databasen.
Eksempel:
$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 utlsede verdiene befinner seg deretter i variablene $Date, $Title, $Description og $Image.
Koble database og $LayoutHTML
Den globale CMS-variabelen $LayoutHTML inneholder under renderingsprosessen det aktuelt genererte HTML-et for siden.
Dermed kan du erstatte egne plassholdere i HTML-koden med data fra MySQL-tabellen.
Sett plassholdere i HTML-koden
Åpne igjen HTML-koden til ditt eksempel.
Innholdet av den tidligere innlagte seksjonen kan nå erstattes med egne plassholdere.
For eksempel:
__MyDate__
__MyTitle__
__MyDescription__
__MyImage__
Et forenklet HTML-eksempel:
<section>
<div class="container">
<img src="__MyImage__" alt="">
<small>__MyDate__</small>
<h2>__MyTitle__</h2>
<p>__MyDescription__</p>
</div>
</section>

For dette første MySQL-eksemplet kan eksisterende oversettelses merker fjernes først. Dette gjør det lettere å se hvilke innhold som direkte blir erstattet av PHP og MySQL.
Bruke databaseverdier i layoutet
Når dataene er lastet med SELECT, erstatter du plassholderne i $LayoutHTML.
Eksempel:
$LayoutHTML = str_replace("__MyDate__",$Date,$LayoutHTML);
$LayoutHTML = str_replace("__MyTitle__",$Title,$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__",$Description,$LayoutHTML);
$LayoutHTML = str_replace("__MyImage__",$Image,$LayoutHTML);
Prosessen er dermed:
MySQL-database → SELECT → PHP-variabler → str_replace() → $LayoutHTML → ferdig nettside

Innholdet fra databasen vises dermed direkte innenfor det eksisterende HTML-layoutet.
Teste endringer direkte via databasen
Åpne:
Database → Visning
Rediger den eksisterende datasettet.
For eksempel kan du endre tittelen fra My Title til New My Title.
Også bildet kan du endre via den aktuelle BX-Image-Button.
Etter lagring og ny lasting av nettsiden vil de endrede dataene vises direkte i sidens oppsett.
Da er det en direkte kobling mellom:
Database → PHP → $LayoutHTML → Nettside
Endre data med UPDATE
Med UPDATE kan du direkte endre et eksisterende datasett via PHP.
Her angis betingelsen for hvilket datasett som skal endres.
Etter å ha utført oppdateringen kan du laste dataene på nytt med SELECT og deretter vise dem på siden via $LayoutHTML.
Sammendrag
Med PHP og MySQL kan du lagre, lese og endre data innen bluetronix CMS.
INSERT eller REPLACE lagrer data, SELECT leser data, og UPDATE endrer eksisterende datasett.
Via $LayoutHTML kan du deretter sette inn de lastede dataene direkte i eksisterende HTML-strukturer.
Dermed kan innholdet i databasen kobles på en ren måte til HTML-oppsettet på en CMS-side.
FAQ
hva kunder ofte spør oss om
Hva trenger jeg for denne PHP- og MySQL-opplæringen?
Du trenger en utvikleradgang til bluetronix CMS. Du bør også vite hvordan CMS-nettstedets gjengivelsesprosess fungerer og hva variabelen $LayoutHTML gjør.
Hvor lager jeg en ny databasetabell?
Åpne i CMS-området Database → Ny Tabell.
Hvilke kolonner brukes i eksempelet?
I opplæringen brukes kolonnene ID, Date, Title, Description og Image.
Hvorfor bør jeg bruke Prepared Statements?
Prepared Statements skiller de overførte verdiene fra den faktiske SQL-kommandoen, og er derfor designet for databaseaksesser.
Hva er forskjellen mellom INSERT og REPLACE?
INSERT legger til et nytt datasett. REPLACE kan erstatte et eksisterende datasett med samme unike ID eller samme primærnøkkel.
Hvordan leser jeg data fra databasen?
For dette bruker du en SELECT-kommando. De lastede verdiene kan du deretter lagre i PHP-variabler som $Title, $Description eller $Image.
Hvordan kommer MySQL-data inn i HTML på siden?
Du setter først inn egne plassholdere i HTML-koden og erstatter disse deretter med str_replace() innen $LayoutHTML med de innlastede databaseverdiene.
Hvordan kan jeg sjekke om forbindelsen mellom databasen og nettsiden fungerer?
Åpne Database → Vis, endre en eksisterende post og last deretter nettsiden på nytt. De nye verdiene skal så vises direkte i sidens oppsett.
Hva brukes UPDATE til?
Med UPDATE kan du endre en allerede eksisterende post direkte via PHP.
Kan jeg også bruke bilder fra databasen i sidens oppsett?
Ja. I eksemplet blir bildeverdien lagret i variabelen $Image og brukt via en egen plassholder som __MyImage__ i $LayoutHTML.