Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
# Database Installatie & Setup Guide
## π Overzicht
Deze guide helpt je stap-voor-stap bij het opzetten van de database voor de English Vocabulary Learning applicatie.
## π― Optie 1: Automatische Installatie (Aanbevolen)
### Via phpMyAdmin
1. **Open phpMyAdmin**
- XAMPP: `http://localhost/phpmyadmin`
- WAMP: `http://localhost/phpmyadmin`
- MAMP: `http://localhost/phpMyAdmin`
2. **Importeer Database**
- Klik op "Import" in het hoofdmenu
- Klik op "Choose File"
- Selecteer `database/schema.sql` uit de projectmap
- Scroll naar beneden en klik "Go"
- Wacht tot de import compleet is (je ziet groene succesboodschappen)
3. **Verifieer Installatie**
- Klik op de database `english_learning_app` in de linker sidebar
- Je zou 4 tabellen moeten zien:
- `categories`
- `words`
- `user_progress`
- `practice_sessions`
- Klik op elke tabel en check of er data in zit
## π― Optie 2: MySQL Command Line
### Voor Gevorderde Gebruikers
```bash
# 1. Open MySQL command line
mysql -u root -p
# 2. Importeer het schema
source C:/pad/naar/project/database/schema.sql;
# 3. Verifieer installatie
USE english_learning_app;
SHOW TABLES;
SELECT COUNT(*) FROM words;
# 4. Sluit MySQL
exit;
```
## π§ Database Configuratie Aanpassen
### php/config.php
Als je MySQL credentials anders zijn dan standaard, pas dan `php/config.php` aan:
```php
// Voor XAMPP (standaard)
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
// Voor WAMP met wachtwoord
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', 'jouw_wachtwoord');
// Voor externe database
define('DB_HOST', 'example.com');
define('DB_USER', 'database_user');
define('DB_PASS', 'secure_password');
```
## π Database Structuur Verkennen
### Tabellen Overzicht
#### 1. CATEGORIES
```sql
SELECT * FROM categories;
```
**Verwachte output:** 8 categorieΓ«n (Animals, Food, Verbs, etc.)
#### 2. WORDS
```sql
SELECT * FROM words LIMIT 10;
```
**Verwachte output:** 64 Engelse woorden met Nederlandse vertalingen
#### 3. USER_PROGRESS
```sql
SELECT * FROM user_progress;
```
**Verwachte output:** Leeg (wordt gevuld tijdens gebruik)
#### 4. PRACTICE_SESSIONS
```sql
SELECT * FROM practice_sessions;
```
**Verwachte output:** Leeg (wordt gevuld tijdens gebruik)
## π§ͺ Database Testen
### Test 1: Woorden Ophalen
```sql
-- Haal alle woorden op met categorie
SELECT
w.english_word,
w.dutch_translation,
c.category_name,
w.difficulty_level
FROM words w
JOIN categories c ON w.category_id = c.category_id
LIMIT 5;
```
### Test 2: Categorie Statistieken
```sql
-- Tel woorden per categorie
SELECT
c.category_name,
COUNT(w.word_id) as word_count
FROM categories c
LEFT JOIN words w ON c.category_id = w.category_id
GROUP BY c.category_id, c.category_name;
```
### Test 3: Moeilijkheidsgraad Verdeling
```sql
-- Woorden per difficulty level
SELECT
difficulty_level,
COUNT(*) as count
FROM words
GROUP BY difficulty_level;
```
## β Extra Woorden Toevoegen
### Via phpMyAdmin
1. Open `words` tabel
2. Klik "Insert"
3. Vul de velden in:
- `english_word`: bijv. "elephant"
- `dutch_translation`: bijv. "olifant"
- `category_id`: 1 (voor Animals)
- `difficulty_level`: "intermediate"
4. Klik "Go"
### Via SQL
```sql
-- Voeg nieuwe woorden toe
INSERT INTO words (english_word, dutch_translation, category_id, difficulty_level)
VALUES
('mountain', 'berg', 8, 'beginner'),
('ocean', 'oceaan', 8, 'beginner'),
('forest', 'bos', 8, 'beginner');
-- Controleer of ze zijn toegevoegd
SELECT * FROM words WHERE category_id = 8 ORDER BY word_id DESC LIMIT 3;
```
### Nieuwe Categorie Toevoegen
```sql
-- Voeg nieuwe categorie toe
INSERT INTO categories (category_name, description)
VALUES ('Transportation', 'Vehicles and transportation methods');
-- Haal het category_id op
SELECT category_id FROM categories WHERE category_name = 'Transportation';
-- Voeg woorden toe voor deze categorie
INSERT INTO words (english_word, dutch_translation, category_id, difficulty_level)
VALUES
('car', 'auto', 9, 'beginner'),
('bicycle', 'fiets', 9, 'beginner'),
('airplane', 'vliegtuig', 9, 'intermediate');
```
## π Database Resetten
### Alles Opnieuw Beginnen
```sql
-- Verwijder database
DROP DATABASE IF EXISTS english_learning_app;
-- Importeer opnieuw
source C:/pad/naar/project/database/schema.sql;
```
### Alleen User Data Wissen
```sql
-- Behoud woorden en categorieΓ«n, verwijder alleen progress
USE english_learning_app;
TRUNCATE TABLE user_progress;
TRUNCATE TABLE practice_sessions;
```
## π Veelvoorkomende Problemen
### "Database does not exist"
**Oplossing:**
```sql
CREATE DATABASE english_learning_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
```
### "Access denied for user 'root'"
**Oplossing:**
1. Check MySQL root wachtwoord
2. Update `php/config.php` met correcte credentials
3. Of maak nieuwe MySQL gebruiker aan:
```sql
CREATE USER 'english_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON english_learning_app.* TO 'english_user'@'localhost';
FLUSH PRIVILEGES;
```
### "Table doesn't exist"
**Oplossing:**
Re-importeer het schema bestand compleet.
## π Performance Optimalisatie
### Indexen Controleren
```sql
-- Check huidige indexen
SHOW INDEX FROM words;
SHOW INDEX FROM user_progress;
```
### Extra Indexen Toevoegen (Optioneel)
```sql
-- Voor snellere sessie queries
CREATE INDEX idx_session_word ON user_progress(session_id, word_id);
-- Voor snellere categorie filters
CREATE INDEX idx_category_difficulty ON words(category_id, difficulty_level);
```
## π Database Backup
### Backup Maken
```bash
# Via command line
mysqldump -u root -p english_learning_app > backup_$(date +%Y%m%d).sql
# Of via phpMyAdmin
# Selecteer database β Export β Go
```
### Backup Herstellen
```bash
# Via command line
mysql -u root -p english_learning_app < backup_20231119.sql
# Of via phpMyAdmin
# Import β Choose File β Go
```
## β
Installatie Checklist
- [ ] MySQL/MariaDB is geΓ―nstalleerd en draait
- [ ] phpMyAdmin is toegankelijk
- [ ] Database `english_learning_app` is aangemaakt
- [ ] Alle 4 tabellen bestaan
- [ ] CategorieΓ«n tabel heeft 8 records
- [ ] Words tabel heeft 64+ records
- [ ] `php/config.php` heeft correcte database credentials
- [ ] Test queries werken zonder errors
## π Hulp Nodig?
Als je vast zit:
1. Check de main `README.md` voor algemene troubleshooting
2. Verifieer dat Apache en MySQL beide draaien
3. Check de browser console voor JavaScript errors (F12)
4. Kijk in de PHP error logs (XAMPP: `xampp/apache/logs/error.log`)
---
**Succes met de installatie! π**