Σύνδεση PHP και MySQL στο bluetronix CMS
Σε αυτό το σεμινάριο θα δημιουργήσεις τον δικό σου πίνακα βάσης δεδομένων και θα τον συνδέσεις με μια σελίδα CMS. Μέσω πρακτικών παραδειγμάτων θα μάθεις τις εντολές SQL INSERT, REPLACE, SELECT και UPDATE και θα δεις πώς να εμφανίζεις τιμές βάσης δεδομένων μέσω χώρων HTML στην ιστοσελίδα σου.
Δημιουργία σελίδας παραδείγματος
Για αυτό το tutorial, δημιουργείς πρώτα μια νέα σελίδα παραδείγματος.
Για παράδειγμα:
PHP MySQL Παράδειγμα
Η σελίδα μπορεί αρχικά να είναι εντελώς κενή.
Άνοιξε τη σελίδα στη συνέχεια στον κανονικό HTML επεξεργαστή και πρόσθεσε κάποιο τμήμα σελίδας. Αυτή η HTML περιοχή θα χρησιμοποιηθεί αργότερα ως πρότυπο για τα δεδομένα που θα φορτωθούν από τη βάση δεδομένων.
Δημιουργία πίνακα βάσης δεδομένων
Πριν αποθηκεύσεις δεδομένα, χρειάζεσαι έναν δικό σου πίνακα βάσης δεδομένων.
Άνοιξε για αυτό:
Βάση Δεδομένων → Νέος Πίνακας
Για αυτό το παράδειγμα, θα χρησιμοποιήσουμε έναν πίνακα με τις στήλες ID, Ημερομηνία, Τίτλος, Περιγραφή και Εικόνα.
ID περιέχει το μοναδικό ID της εγγραφής. Ημερομηνία αποθηκεύει την ημερομηνία και ώρα. Τίτλος περιέχει τον τίτλο, Περιγραφή έναν πιο εκτενή περιγραφικό κείμενο και Εικόνα το όνομα της εικόνας.
Τα ονόματα πινάκων, στηλών και μεταβλητών θα πρέπει πάντα να χρησιμοποιούν την αγγλική γλώσσα μέσα στα tutorials για προγραμματιστές.
Άνοιγμα PHP κώδικα
Αφού δημιουργηθεί ο πίνακας, επιστρέφεις στη σελίδα παραδείγματός σου.
Άνοιξε εκεί:
Κώδικας PHP
Από αυτή την περιοχή μπορείς να έχεις άμεση πρόσβαση στη βάση δεδομένων.
Αποθήκευση δεδομένων με INSERT ή REPLACE
Στο πρώτο παράδειγμα, αποθηκεύεις μια εγγραφή στον πίνακα βάσης δεδομένων που δημιούργησες προηγουμένως.
Για αυτό, αρχικά θέσε τις απαραίτητες μεταβλητές PHP.
Παράδειγμα:
$ID = 1;
$Date = date("Y-m-d H:i:s");
$Title = "My Title";
$Description = "My Description";
$Image = "my-image.jpg";
Μπορείς να αποθηκεύσεις αυτές τις τιμές στη συνέχεια με μια προετοιμασμένη δήλωση MySQL.
Για τις προσβάσεις στη βάση δεδομένων, θα πρέπει πάντα να χρησιμοποιείς προετοιμασμένες δηλώσεις. Έτσι οι τιμές επεξεργάζονται ξεχωριστά από την πραγματική εντολή SQL.
Παράδειγμα με REPLACE:
$stmt = $mysqli->prepare("REPLACE INTO ExampleTable (ID, `Date`, Title, Description, Image) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("issss", $ID, $Date, $Title, $Description, $Image);
$stmt->execute();

Καλέστε την σελίδα μία φορά μετά.
Ανοίξτε στη συνέχεια:
Βάση Δεδομένων → Εμφάνιση
Εκεί θα πρέπει να είναι ορατή η νέα εγγραφή που δημιουργήθηκε.
Διαφορά μεταξύ INSERT και REPLACE
INSERT προσθέτει μια νέα εγγραφή.
Εάν υπάρχει ήδη μια εγγραφή με την ίδια μοναδική ID ή το ίδιο Primary Key, μια κανονική INSERT μπορεί να προκαλέσει σφάλμα Duplicate-Key.
REPLACE μπορεί να χρησιμοποιηθεί εάν μια υπάρχουσα εγγραφή με την ίδια μοναδική ID πρέπει να αντικατασταθεί.
Για παραδείγματα δοκιμής με στατική ID, το REPLACE είναι συχνά πιο πρακτικό, καθώς η σελίδα μπορεί να καλείται πολλαπλές φορές.
Ανάγνωση δεδομένων με SELECT
Στο επόμενο βήμα, διαβάζεις ξανά την αποθηκευμένη εγγραφή από τη βάση δεδομένων.
Παράδειγμα:
$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"];
}
Οι διαβασμένες τιμές θα βρίσκονται στη συνέχεια στις μεταβλητές $Date, $Title, $Description και $Image.
Σύνδεση βάσης δεδομένων και $LayoutHTML
Η παγκόσμια μεταβλητή CMS $LayoutHTML περιέχει κατά τη διαδικασία rendering το τρέχον παραγόμενο HTML της σελίδας.
Έτσι μπορείς να αντικαταστήσεις δικούς σου χώρους μέσα στο HTML κώδικα με δεδομένα από τον πίνακα MySQL.
Εισαγωγή placeholders στον HTML κώδικα
Άνοιξε ξανά τον HTML κώδικα της σελίδας παραδείγματός σου.
Τα περιεχόμενα του τμήματος σελίδας που προστέθηκαν νωρίτερα μπορείς τώρα να τα αντικαταστήσεις με δικούς σου χώρους.
Για παράδειγμα:
__MyDate__
__MyTitle__
__MyDescription__
__MyImage__
Ένα απλοποιημένο παράδειγμα HTML:
<section>
<div class="container">
<img src="__MyImage__" alt="">
<small>__MyDate__</small>
<h2>__MyTitle__</h2>
<p>__MyDescription__</p>
</div>
</section>

Για αυτό το πρώτο παράδειγμα MySQL, οι υπάρχουσες ετικέτες μετάφρασης μπορούν αρχικά να αφαιρεθούν. Έτσι είναι πιο εύκολο να αναγνωριστούν ποιες περιεχόμενα αντικαθίστανται άμεσα από το PHP και το MySQL.
Χρήση τιμών βάσης δεδομένων στο layout
Αφού τα δεδομένα φορτωθούν με SELECT, αντικαθιστάς τους χώρους μέσα στο $LayoutHTML.
Παράδειγμα:
$LayoutHTML = str_replace("__MyDate__",$Date,$LayoutHTML);
$LayoutHTML = str_replace("__MyTitle__",$Title,$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__",$Description,$LayoutHTML);
$LayoutHTML = str_replace("__MyImage__",$Image,$LayoutHTML);
Η διαδικασία είναι η εξής:
MySQL-Βάση Δεδομένων → SELECT → Μεταβλητές PHP → str_replace() → $LayoutHTML → έτοιμη ιστοσελίδα

Τα περιεχόμενα της βάσης δεδομένων εμφανίζονται άμεσα μέσα στο υπάρχον HTML-διάταξη.
Δοκιμή αλλαγών απευθείας μέσω της βάσης δεδομένων
Άνοιξε:
Βάση Δεδομένων → Εμφάνιση
Επεξεργαστείτε στη συνέχεια την υπάρχουσα εγγραφή.
Για παράδειγμα, μπορείτε να αλλάξετε τον τίτλο από My Title σε New My Title.
Μπορείτε επίσης να αλλάξετε την εικόνα μέσω του αντίστοιχου BX-Image-Button.
Μετά την αποθήκευση και την εκ νέου φόρτωση της ιστοσελίδας, τα τροποποιημένα δεδομένα θα εμφανίζονται απευθείας στο layout της σελίδας.
Έτσι, υπάρχει άμεση σύνδεση μεταξύ:
Δημοσίευση → PHP → $LayoutHTML → Ιστοσελίδα
Αλλαγή δεδομένων με UPDATE
Με το UPDATE μπορείτε να τροποποιήσετε μια ήδη υπάρχουσα εγγραφή απευθείας μέσω PHP.
Καθορίζεται μέσω μιας συνθήκης ποια εγγραφή θα τροποποιηθεί.
Μετά την εκτέλεση της ενημέρωσης μπορείτε να φορτώσετε ξανά τα δεδομένα με SELECT και στη συνέχεια να τα εμφανίσετε στη σελίδα σας μέσω του $LayoutHTML.
Περίληψη
Με PHP και MySQL μπορείτε να αποθηκεύσετε, να διαβάσετε και να τροποποιήσετε δεδομένα εντός του bluetronix CMS.
INSERT ή REPLACE αποθηκεύουν δεδομένα, SELECT διαβάζει δεδομένα και UPDATE τροποποιεί υπάρχουσες εγγραφές.
Μέσω του $LayoutHTML μπορείτε να ενσωματώσετε τα φορτωμένα δεδομένα απευθείας σε ήδη υπάρχουσες HTML δομές.
Έτσι μπορείτε να συνδέσετε καθαρά τα περιεχόμενα της βάσης δεδομένων με το HTML layout μιας CMS σελίδας.
Συχνές Ερωτήσεις
τι ρωτούν συχνά οι πελάτες μας
Τι χρειάζομαι για αυτό το PHP και MySQL tutorial;
Χρειάζεστε μια πρόσβαση προγραμματιστή στο bluetronix CMS. Επιπλέον, θα πρέπει ήδη να ξέρετε πώς λειτουργεί η διαδικασία απόδοσης της σελίδας CMS και ποιος είναι ο ρόλος της μεταβλητής $LayoutHTML.
Πού μπορώ να δημιουργήσω έναν νέο πίνακα στη βάση δεδομένων;
Ανοίξτε την περιοχή Βάση Δεδομένων → Νέος Πίνακας στο CMS.
Ποιες στήλες χρησιμοποιούνται στο παράδειγμα;
Στο tutorial χρησιμοποιούνται οι στήλες ID, Date, Title, Description και Image.
Γιατί να χρησιμοποιώ Prepared Statements;
Τα Prepared Statements διαχωρίζουν τις παρακαλούμενες τιμές από την πραγματική εντολή SQL και είναι γι' αυτόν τον λόγο προορισμένα για πρόσβαση στη βάση δεδομένων.
Ποια είναι η διαφορά μεταξύ INSERT και REPLACE;
Το INSERT προσθέτει μια νέα εγγραφή. Το REPLACE μπορεί να αντικαταστήσει μια υπάρχουσα εγγραφή με την ίδια μοναδική ID ή το ίδιο Primary Key.
Πώς διαβάζω δεδομένα από τη βάση δεδομένων;
Γι' αυτό χρησιμοποιείτε μια εντολή SELECT. Οι φορτωμένες τιμές μπορείτε να τις αποθηκεύσετε στη συνέχεια, για παράδειγμα, σε μεταβλητές PHP όπως $Title, $Description ή $Image.
Πώς εισάγονται τα δεδομένα MySQL στο HTML της σελίδας;
Αρχικά τοποθετείς τους δικούς σου χώρους κρατήσεων στον κώδικα HTML και στη συνέχεια τους αντικαθιστάς με το str_replace() μέσα στο $LayoutHTML με τις τιμές της φόρτωσης της βάσης δεδομένων.
Πώς μπορώ να ελέγξω αν η σύνδεση μεταξύ βάσης δεδομένων και ιστοσελίδας λειτουργεί;
Άνοιξε Βάση Δεδομένων → Προβολή, άλλαξε μια υπάρχουσα καταχώριση και φόρτωσε ξανά την ιστοσελίδα. Οι νέες τιμές θα πρέπει να εμφανίζονται απευθείας στο σχέδιο της σελίδας.
Για ποιο σκοπό χρησιμοποιείται το UPDATE;
Με το UPDATE μπορείς να αλλάξεις απευθείας μια υπάρχουσα καταχώριση μέσω PHP.
Μπορώ να χρησιμοποιήσω επίσης εικόνες από τη βάση δεδομένων στο σχέδιο της σελίδας;
Ναι. Στο παράδειγμα, η τιμή της εικόνας αποθηκεύεται στη μεταβλητή $Image και χρησιμοποιείται μέσω ενός δικού σου χώρου κρατήσεων όπως __MyImage__ στο $LayoutHTML.