BMZ

query(„SELECT land_region, COUNT(*) as project_count FROM projekte WHERE land_region IS NOT NULL AND land_region != “ GROUP BY land_region ORDER BY project_count DESC LIMIT 10″); $top_countries_by_count = $top_countries_by_count_stmt->fetchAll(); $total_financing_stmt = $pdo->query(„SELECT SUM(finanzierungsvolumen) FROM projekte“); $total_financing = $total_financing_stmt->fetchColumn(); $top_countries_by_financing_stmt = $pdo->query(„SELECT land_region, SUM(finanzierungsvolumen) as total_sum FROM projekte WHERE land_region IS NOT NULL AND land_region != “ GROUP BY land_region ORDER BY total_sum DESC LIMIT 10″); $top_countries_by_financing = $top_countries_by_financing_stmt->fetchAll(); $top_10_stmt = $pdo->query(„SELECT titel, finanzierungsvolumen, iati_massnahmen_id FROM projekte ORDER BY finanzierungsvolumen DESC LIMIT 10″); $top_10_projects = $top_10_stmt->fetchAll(); // 2. KONFIGURATION für Tabelle (Suche, Sortierung, Pagination) // ================================================================= $page = isset($_GET[‚page‘]) && is_numeric($_GET[‚page‘]) ? (int)$_GET[‚page‘] : 1; $limit = 25; $offset = ($page – 1) * $limit; // Filter-Parameter aus der URL lesen $searchTerm = $_GET[’search‘] ?? “; $countryFilter = $_GET[‚country‘] ?? “; $statusFilter = $_GET[’status‘] ?? ‚alle‘; // HINZUGEFÜGT: Datums-Filter aus der URL lesen $dateFrom = $_GET[‚date_from‘] ?? “; $dateTo = $_GET[‚date_to‘] ?? “; // Sortier-Parameter $sortableColumns = [‚iati_massnahmen_id‘, ‚titel‘, ‚land_region‘, ‚massnahmenstatus‘, ‚evaluierung‘, ’startdatum‘, ‚finanzierungsvolumen‘]; $sortColumn = $_GET[’sort‘] ?? ’startdatum‘; if (!in_array($sortColumn, $sortableColumns)) { $sortColumn = ’startdatum‘; } $sortOrder = isset($_GET[‚order‘]) && strtolower($_GET[‚order‘]) == ‚asc‘ ? ‚ASC‘ : ‚DESC‘; // 3. SQL-ABFRAGEN für die Tabelle // ================================================================= $sqlBase = „FROM projekte „; $whereConditions = []; $params = []; // Haupt-Suchleiste if (!empty($searchTerm)) { $whereConditions[] = „(titel LIKE ? OR land_region LIKE ? OR iati_massnahmen_id LIKE ? OR evaluierung LIKE ?)“; $likeTerm = ‚%‘ . $searchTerm . ‚%‘; $params = array_merge($params, [$likeTerm, $likeTerm, $likeTerm, $likeTerm]); } // Status-Filter if ($statusFilter !== ‚alle‘) { $whereConditions[] = „massnahmenstatus = ?“; $params[] = $statusFilter; } // Länderfilter if (!empty($countryFilter)) { $whereConditions[] = „land_region = ?“; $params[] = $countryFilter; } // HINZUGEFÜGT: Datums-Filter zur SQL-Abfrage hinzufügen if (!empty($dateFrom)) { $whereConditions[] = „startdatum >= ?“; $params[] = $dateFrom; } if (!empty($dateTo)) { $whereConditions[] = „startdatum <= ?"; $params[] = $dateTo; } // Baue die WHERE-Klausel zusammen $whereClause = ''; if (!empty($whereConditions)) { $whereClause = "WHERE " . implode(" AND ", $whereConditions) . " "; } // Zähl-Abfrage für die Pagination $countSql = "SELECT COUNT(*) " . $sqlBase . $whereClause; $countStmt = $pdo->prepare($countSql); $countStmt->execute($params); $totalRecords = $countStmt->fetchColumn(); $totalPages = ceil($totalRecords / $limit); // Haupt-Abfrage, um die Daten für die aktuelle Seite zu holen $dataSql = „SELECT iati_massnahmen_id, titel, land_region, massnahmenstatus, evaluierung, finanzierungsvolumen, startdatum, laufzeit “ . $sqlBase . $whereClause . „ORDER BY $sortColumn $sortOrder “ . „LIMIT ? OFFSET ?“; $dataParams = array_merge($params, [$limit, $offset]); $dataStmt = $pdo->prepare($dataSql); foreach ($dataParams as $key => $value) { $paramType = is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR; $dataStmt->bindValue($key + 1, $value, $paramType); } $dataStmt->execute(); $projekte = $dataStmt->fetchAll(); // Alle aktuellen Filter (außer Seite) für die Export-Links zusammenstellen $exportParams = $_GET; unset($exportParams[‚page‘]); ?> BMZ Pro

Top Länder (Anzahl Projekte)

  1. Finanzierung Gesamt


    Top Länder (Finanzierungssumme)

    1. Top 10 Projekte

      1. Alle Projekte
        Startdatum: Bis: Anzeigen Zurücksetzen