Show sourcecode
The following files exists in this folder. Click to view.
Media/
Ovningar/
comments.php
exercises.php
incl/
index.php
install.php
mySQL/
source.php
style/
update_db/
viewsource.php
install.php
84 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
<?php
/**
**** HOW TO USE ****
* 1. I phpMyAdmin:
* Export tables as separate files [x]
* IF NOT EXISTS statements [x]
* INSERT IGNORE statements [x]
*
* 2. Ladda ner som zip och extrahera till update_db
*/
include("./incl/dbconnection.php");
/**
* @var PDO $dbconn
*/
if ($dbconn) {
echo "<p>Connection Successful!</p>";
} else {
die("Failed to connect to database");
}
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
// Kör alla SQL-filer i en mapp
$sqlDir = __DIR__ . '/update_db'; // mappen där alla tabellfiler finns
echo '<p>' . $sqlDir . '</p>';
// Hämta alla .sql-filer
$files = glob($sqlDir . '/*.sql');
$foreignKeysFile;
var_dump($files);
// Stäng av FK-kontroller temporärt
$dbconn->exec("SET FOREIGN_KEY_CHECKS = 0;");
foreach ($files as $file) {
echo "<p>Kör fil: $file</p>";
if (preg_match("/_extra\.sql/", $file)) {
echo "fil är för foreign nycklar, skippar";
$foreignKeysFile = $file;
continue;
}
$sql = file_get_contents($file);
try {
$dbconn->exec($sql);
} catch (\PDOException $e) {
echo "Fel vid körning av $file: " . $e->getMessage() . "\n";
}
}
// Kör filen med restriktioner (foreign keys, auto_increment, etc.)
if (isset($foreignKeysFile) && is_readable($foreignKeysFile)) {
echo "<p>Kör fil med restriktioner: $foreignKeysFile</p>";
$sqlContent = file_get_contents($foreignKeysFile);
// Dela upp filen i enskilda SQL-satser
$sqlStatements = explode(';', $sqlContent);
foreach ($sqlStatements as $statement) {
$statement = trim($statement);
if (!empty($statement)) {
try {
$dbconn->exec($statement . ';');
echo "<p>Körde kommando: " . htmlspecialchars(substr($statement, 0, 100)) . "...</p>";
} catch (PDOException $e) {
// Ignorera fel om t.ex. en nyckel redan finns, men rapportera det.
echo "<p>Kunde inte köra kommando (kanske finns redan?): " . htmlspecialchars(substr($statement, 0, 100)) . "...<br>Fel: " . $e->getMessage() . "</p>";
}
}
}
}
// Slå på FK-kontroller igen
$dbconn->exec("SET FOREIGN_KEY_CHECKS = 1;");
echo "<br><p><b>Installationen är klar!</b></p>";