Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

Webserver1/

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)
<?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($statement0100)) . "...</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($statement0100)) . "...<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>";