Last ned appen nå og test gratis i 10 dager
Valuta Velg språk Velg region

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.

CMS