# 🔧 Guide de Résolution - Erreur "Champ user_id inconnu"

## 🚨 Problème

```
SQLSTATE[42S22]: Column not found: 1054 Champ 'h.user_id' inconnu dans where clause
```

Cette erreur signifie que la table `t_user_hobbies` n'a pas la bonne structure.

---

## 📋 Solution en 3 étapes

### **Étape 1 : Diagnostic**

Exécutez ce script pour voir la structure actuelle de votre table :

```bash
mysql -u root -p livreconnect < scripts/diagnose_hobbies_table.sql
```

**Résultat attendu :**
```
✅ La table t_user_hobbies existe
❌ user_id existe ? NON
✅ hobby_user_id existe ? OUI
```

Si vous voyez `user_id = NON`, passez à l'étape 2.

---

### **Étape 2 : Correction de la structure**

**Option A : Via phpMyAdmin**
1. Ouvrez phpMyAdmin
2. Sélectionnez la base `livreconnect`
3. Onglet **SQL**
4. Copiez le contenu de `scripts/fix_user_hobbies_table.sql`
5. Cliquez sur **Exécuter**

**Option B : Via ligne de commande**
```bash
mysql -u root -p livreconnect < scripts/fix_user_hobbies_table.sql
```

⚠️ **Attention :** Ce script supprime et recrée la table. Les données existantes seront perdues.

---

### **Étape 3 : Peupler les données**

Une fois la table recréée, peuplez-la avec les catégories et hobbies :

```bash
mysql -u root -p livreconnect < scripts/populate_hobbies.sql
```

---

## ✅ Vérification

Après avoir exécuté ces scripts, vérifiez que tout fonctionne :

1. **Relancez le diagnostic :**
   ```bash
   mysql -u root -p livreconnect < scripts/diagnose_hobbies_table.sql
   ```

   **Résultat attendu :**
   ```
   ✅ La table t_user_hobbies existe
   ✅ user_id existe ? OUI
   ✅ interest_level existe ? OUI
   ✅ is_active existe ? OUI
   ```

2. **Testez la page :**
   - Allez sur `http://bookconnect/informations_personnelles.php`
   - Cliquez sur l'onglet **Loisirs**
   - L'erreur ne devrait plus apparaître

---

## 📊 Structure correcte de la table

Voici à quoi devrait ressembler votre table `t_user_hobbies` :

| Colonne | Type | Description |
|---------|------|-------------|
| `hobby_user_id` | INT | Clé primaire (auto-incrémentée) |
| `user_id` | INT | ID de l'utilisateur (FK vers t_users) |
| `hobby_id` | INT | ID du hobby prédéfini (FK vers t_hobbies, NULL = personnalisé) |
| `category_id` | INT | ID de la catégorie (FK vers t_hobby_categories) |
| `hobby_name` | VARCHAR(255) | Nom du loisir |
| `description` | TEXT | Description du loisir |
| `interest_level` | INT | Niveau d'intérêt (1-5) |
| `hours_per_week` | INT | Temps par semaine (heures) |
| `date_added` | DATETIME | Date d'ajout |
| `date_modified` | DATETIME | Date de modification |
| `is_active` | TINYINT | Actif (1) ou supprimé (0) |

---

## 🔍 Dépannage avancé

### Erreur : "Table t_hobbies doesn't exist"

**Solution :**
```bash
mysql -u root -p livreconnect < scripts/populate_hobbies.sql
```

### Erreur : "Cannot add foreign key constraint"

**Cause :** Les tables référencées n'existent pas  
**Solution :** Vérifiez que ces tables existent :
- `t_users` (avec colonne `user_ID`)
- `t_hobbies` (avec colonne `hobby_id`)
- `t_hobby_categories` (avec colonne `category_id`)

Si elles n'existent pas :
```sql
-- Créer t_hobby_categories
CREATE TABLE t_hobby_categories (
    category_id INT PRIMARY KEY AUTO_INCREMENT,
    category_name VARCHAR(100),
    category_description TEXT,
    category_actif TINYINT DEFAULT 1
);

-- Créer t_hobbies
CREATE TABLE t_hobbies (
    hobby_id INT PRIMARY KEY AUTO_INCREMENT,
    hobby_category_id INT,
    hobby_title VARCHAR(255),
    hobby_actif TINYINT DEFAULT 1,
    FOREIGN KEY (hobby_category_id) REFERENCES t_hobby_categories(category_id)
);
```

Puis réexécutez `fix_user_hobbies_table.sql`

---

## 📞 Support

Si l'erreur persiste après avoir suivi ce guide :

1. **Vérifier les logs :**
   - Windows : `C:\wamp64\logs\php_error.log`
   - Linux : `/var/log/apache2/error.log`

2. **Exécuter le diagnostic :**
   ```bash
   mysql -u root -p livreconnect < scripts/diagnose_hobbies_table.sql
   ```

3. **Copier le résultat du diagnostic** et demander de l'aide

---

## 🎯 Ordre d'exécution complet

Si vous partez de zéro, exécutez dans cet ordre :

```bash
# 1. Diagnostic (optionnel)
mysql -u root -p livreconnect < scripts/diagnose_hobbies_table.sql

# 2. Fixer la structure
mysql -u root -p livreconnect < scripts/fix_user_hobbies_table.sql

# 3. Peupler les données
mysql -u root -p livreconnect < scripts/populate_hobbies.sql

# 4. Vérification finale
mysql -u root -p livreconnect < scripts/diagnose_hobbies_table.sql
```

---

## ✨ Résultat attendu

Après avoir suivi ce guide :
- ✅ Plus d'erreur `user_id inconnu`
- ✅ Modal d'ajout de loisir fonctionnel
- ✅ 10 catégories disponibles
- ✅ 50 hobbies prédéfinis
- ✅ Toutes les fonctionnalités opérationnelles

---

**Créé pour BookConnect - v2.0**
