RC3
This commit is contained in:
parent
516273c8b4
commit
a36cb738cd
@ -21,7 +21,7 @@ $totalVotes->execute([$electionId]);
|
|||||||
$totalVotes = $totalVotes->fetchColumn();
|
$totalVotes = $totalVotes->fetchColumn();
|
||||||
|
|
||||||
// Chart Data: Participation per Grade Level
|
// Chart Data: Participation per Grade Level
|
||||||
$gradeStats = $pdo->prepare("SELECT COALESCE(u.grade_level, 'Unknown') as label, COUNT(DISTINCT v.voter_id) as count
|
$gradeStats = $pdo->prepare("SELECT COALESCE(u.grade_level::TEXT, 'Unknown') as label, COUNT(DISTINCT v.voter_id) as count
|
||||||
FROM users u JOIN votes v ON u.id = v.voter_id
|
FROM users u JOIN votes v ON u.id = v.voter_id
|
||||||
WHERE v.election_id = ?
|
WHERE v.election_id = ?
|
||||||
GROUP BY u.grade_level ORDER BY u.grade_level");
|
GROUP BY u.grade_level ORDER BY u.grade_level");
|
||||||
|
|||||||
@ -13,7 +13,9 @@ define('SUPABASE_DB_PASS', getenv('SUPABASE_DB_PASS') ?: 'gA82h8K80T5QUAwi'); //
|
|||||||
function db() {
|
function db() {
|
||||||
static $pdo;
|
static $pdo;
|
||||||
if (!$pdo) {
|
if (!$pdo) {
|
||||||
if (defined('SUPABASE_DB_PASS') && !empty(SUPABASE_DB_PASS)) {
|
$useSupabase = defined('SUPABASE_DB_PASS') && !empty(SUPABASE_DB_PASS);
|
||||||
|
|
||||||
|
if ($useSupabase && extension_loaded('pdo_pgsql')) {
|
||||||
// Use Supabase PostgreSQL
|
// Use Supabase PostgreSQL
|
||||||
$host = 'aws-1-ap-southeast-1.pooler.supabase.com';
|
$host = 'aws-1-ap-southeast-1.pooler.supabase.com';
|
||||||
$port = '6543';
|
$port = '6543';
|
||||||
@ -24,20 +26,36 @@ function db() {
|
|||||||
$pdo = new PDO("pgsql:host=$host;port=$port;dbname=$dbname", $user, $pass, [
|
$pdo = new PDO("pgsql:host=$host;port=$port;dbname=$dbname", $user, $pass, [
|
||||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||||
|
PDO::ATTR_TIMEOUT => 5, // Short timeout for faster fallback
|
||||||
]);
|
]);
|
||||||
} catch (PDOException $e) {
|
return $pdo;
|
||||||
// Fallback to local MariaDB if PostgreSQL fails
|
} catch (PDOException $pgException) {
|
||||||
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
|
// Keep the error to report it if the fallback also fails
|
||||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
||||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
// Use local MariaDB
|
|
||||||
|
// Fallback to local MariaDB/MySQL
|
||||||
|
try {
|
||||||
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
|
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
|
||||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||||
]);
|
]);
|
||||||
|
} catch (PDOException $mysqlException) {
|
||||||
|
if (!extension_loaded('pdo_pgsql')) {
|
||||||
|
die("Connection failed: The 'pdo_pgsql' extension is not enabled in your PHP configuration, and the local MySQL connection also failed.<br>MySQL Error: " . $mysqlException->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
$errorMsg = "<h3>Database Connection Failed</h3>";
|
||||||
|
if (isset($pgException)) {
|
||||||
|
$errorMsg .= "<strong>PostgreSQL (Supabase) Error:</strong> " . $pgException->getMessage() . "<br><br>";
|
||||||
|
}
|
||||||
|
$errorMsg .= "<strong>Local MySQL Error:</strong> " . $mysqlException->getMessage() . "<br><br>";
|
||||||
|
$errorMsg .= "<strong>Possible Solutions:</strong><br>";
|
||||||
|
$errorMsg .= "1. <strong>Supabase:</strong> Ensure your firewall/ISP allows outgoing connections on <strong>port 6543</strong>. Try disabling your antivirus temporarily.<br>";
|
||||||
|
$errorMsg .= "2. <strong>Local MySQL:</strong> If you want to use local MySQL, update <code>DB_USER</code> and <code>DB_PASS</code> in <code>db/config.php</code> to match your XAMPP settings (usually 'root' and empty password).<br>";
|
||||||
|
$errorMsg .= "3. <strong>Verify extension:</strong> Make sure <code>extension=pdo_pgsql</code> is uncommented in <code>php.ini</code> AND you have restarted Apache.<br>";
|
||||||
|
|
||||||
|
die($errorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $pdo;
|
return $pdo;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user