PHP-lessen - les 3.1 - Werken met MySQL-databases. Tabellen aanmaken.
In de vorige les hebben we verbinding gemaakt met de database. In deze les gaan we tabellen aanmaken voor onze toekomstige website. Laten we beginnen met het toevoegen van de naam van de gewenste database in de klasse simpleCMS:
class simpleCMS { // beheersklasse public $host = 'localhost'; // variabelen voor databaseverbinding public $username = 'root'; public $password = ''; public $db = 'testDB';
Nu moeten we deze database aanmaken op onze MySQL-server. Als je ook Denwer gebruikt, zit phpMyAdmin daar standaard in. Ga via de link naar phpMyAdmin en maak een nieuwe database aan:
Nu we de instellingen hebben toegevoegd en de database hebben aangemaakt, kunnen we de verbinding met de MySQL-server via PHP aanpassen. We wijzigen de verbindingsmethode als volgt:
public function connectDB() { $link = mysql_connect($this->host, $this->username, $this->password); // verbinding maken met MySQL-server if (!$link) { die('Verbindingsfout: ' . mysql_error()); } mysql_select_db($this->db) or die("Kan database niet vinden. " . mysql_error()); // database selecteren return $link; }
Als alles goed werkt, wordt er geen foutmelding weergegeven. Nu gaan we een tabel aanmaken. Daarvoor voegen we een nieuwe methode buildDB() toe, die we direct zullen aanroepen vanuit de methode connectDB().
public function connectDB() { $link = mysql_connect($this->host, $this->username, $this->password); // verbinding maken met MySQL-server if (!$link) { die('Verbindingsfout: ' . mysql_error()); } mysql_select_db($this->db) or die("Kan database niet vinden. " . mysql_error()); // database selecteren $this->buildDB(); // aanroepen van een methode binnen dezelfde klasse return $link; } public function buildDB(){ }
Telkens wanneer we verbinding maken, kunnen we in de methode buildDB() controleren of alle benodigde tabellen aanwezig zijn. Hiervoor sturen we een query naar de database:
public function buildDB(){ $sql = 'CREATE TABLE IF NOT EXISTS messages ( title VARCHAR(150), bodytext TEXT, created VARCHAR(100) )'; return mysql_query($sql); }
Laten we nu bekijken hoe dit werkt.
Eerst schrijven we de SQL-query in een stringvariabele, en vervolgens geven we die variabele door aan de functie mysql_query(), die de query naar de database stuurt.
Onze SQL-query begint met de operator CREATE TABLE — dit betekent het aanmaken van een nieuwe tabel. Vervolgens voegen we de voorwaarde IF NOT EXISTS toe, om te voorkomen dat een tabel met dezelfde naam (in dit geval messages) opnieuw wordt aangemaakt als deze al bestaat.
Tussen de haakjes na de tabelnaam definiëren we de velden van de tabel die worden aangemaakt. In ons geval zijn dat de velden title, bodytext en created. Na elke veldnaam volgt het gegevenstype. VARCHAR(150) betekent een tekstveld van maximaal 150 tekens, terwijl TEXT een tekstveld is waarin hele artikelen of langere teksten kunnen worden opgeslagen.
Als je nu het bestand simpleCMS.php opslaat en index.php uitvoert, wordt de tabel messages automatisch aangemaakt.
We zullen deze tabel in de volgende les gebruiken. Als je vragen of fouten tegenkomt, laat dan gerust een reactie achter.