getAddressesDatabaseConfig(); echo "Configuration:\n"; echo "- Environnement: " . $appConfig->getEnvironment() . "\n"; echo "- Host: " . $addressesConfig['host'] . "\n"; echo "- Database: " . $addressesConfig['name'] . "\n"; echo "- Username: " . $addressesConfig['username'] . "\n\n"; // Initialiser les connexions Database::init($appConfig->getDatabaseConfig()); AddressesDatabase::init($addressesConfig); $mainDb = Database::getInstance(); $addressesDb = AddressesDatabase::getInstance(); echo "✓ Connexion réussie aux deux bases!\n\n"; // Lister les tables cp* disponibles echo "Tables d'adresses disponibles:\n"; $stmt = $addressesDb->query("SHOW TABLES LIKE 'cp%'"); $tables = $stmt->fetchAll(PDO::FETCH_COLUMN); foreach ($tables as $table) { // Extraire le numéro de département $dept = str_replace('cp', '', $table); // Compter les lignes $countStmt = $addressesDb->query("SELECT COUNT(*) as total FROM `$table`"); $count = $countStmt->fetch()['total']; echo "- $table (département $dept): " . number_format($count) . " adresses\n"; } echo "\n"; // Tester avec une entité echo "Test de récupération du département d'une entité:\n"; $testEntityId = 1; // Changez selon votre base $stmt = $mainDb->prepare("SELECT id, nom, departement FROM entites WHERE id = :id"); $stmt->execute(['id' => $testEntityId]); $entity = $stmt->fetch(); if ($entity) { echo "- Entité #{$entity['id']}: {$entity['nom']} (département {$entity['departement']})\n"; $tableName = "cp" . $entity['departement']; // Vérifier si la table existe if (in_array($tableName, $tables)) { echo "✓ Table $tableName existe\n"; // Tester une requête sur cette table $stmt = $addressesDb->query("SELECT numero, rue, cp, ville, gps_lat, gps_lng FROM `$tableName` WHERE gps_lat != '' AND gps_lng != '' LIMIT 3"); $addresses = $stmt->fetchAll(); echo "\nExemples d'adresses dans le département {$entity['departement']}:\n"; foreach ($addresses as $addr) { echo "- {$addr['numero']} {$addr['rue']}, {$addr['cp']} {$addr['ville']} "; echo "(lat: {$addr['gps_lat']}, lng: {$addr['gps_lng']})\n"; } // Tester une requête géospatiale echo "\nTest de requête géospatiale:\n"; $testLat = $addresses[0]['gps_lat'] ?? 48.8566; $testLng = $addresses[0]['gps_lng'] ?? 2.3522; $sql = "SELECT COUNT(*) as total FROM `$tableName` WHERE ST_Distance_Sphere( POINT(CAST(gps_lng AS DECIMAL(10,8)), CAST(gps_lat AS DECIMAL(10,8))), POINT(:lng, :lat) ) <= 1000 AND gps_lat != '' AND gps_lng != ''"; $stmt = $addressesDb->prepare($sql); $stmt->execute(['lat' => $testLat, 'lng' => $testLng]); $result = $stmt->fetch(); echo "✓ Adresses dans un rayon de 1km autour de ($testLat, $testLng): " . $result['total'] . "\n"; } else { echo "✗ Table $tableName n'existe pas dans la base adresses\n"; } } } catch (Exception $e) { echo "✗ Erreur: " . $e->getMessage() . "\n"; echo "Trace:\n" . $e->getTraceAsString() . "\n"; } echo "\n";