diff --git a/html/SQL.php b/html/SQL.php index aff47d8..4d1cf10 100644 --- a/html/SQL.php +++ b/html/SQL.php @@ -5,18 +5,17 @@ require_once 'konfiguration.php'; class DB { private static $instance = null; - private $pdo = null; - private $stmts = array(); + private static $pdo = null; + private static $stmts = array(); private function __construct() { - $datasourcename = "mysql:host=" . MYSQL_HOST . ";dbname=". MYSQL_DATENBANK . ";charset=utf8mb4"; self::$pdo = new PDO( - $datasourcename, + MYSQL_DSN, MYSQL_BENUTZER, - MYSQL_KENNWORT + MYSQL_KENNWORT, + array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING) ); - self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); } public static function getInstance() @@ -46,7 +45,14 @@ class DB { { return self::$stmts[$method . "::" . $variant]->fetchAll(); } - + public function pdoErrorCode() + { + return self::$pdo->errorCode(); + } + public function pdoErrorInfo() + { + return self::$pdo->errorInfo(); + } public function errorCode($method, $variant = '') { return self::$stmts[$method . "::" . $variant]->errorCode(); @@ -59,7 +65,7 @@ class DB { public function onErrorDie($method, $variant = '') { - if (self::errorCode($method, $variant) != 1) { + if (!is_null(self::errorCode($method, $variant)) && self::errorCode($method, $variant) != '1') { echo $method . "::" . $variant . " ungueltige Abfrage
\n"; echo "sql:" . $stmts[$method . "::" . $variant]->queryString . "
\n"; die('Ungueltige Abfrage: ' . self::errorInfo($method, $variant)[2]); diff --git a/html/Setup.php b/html/Setup.php index 4d9636b..7cfe029 100644 --- a/html/Setup.php +++ b/html/Setup.php @@ -14,14 +14,76 @@ $wizard->addCode('enterlogindata',function($storedvariables){ $logindata['user'] = $_POST['user']; $logindata['password'] = $_POST['password']; $logindata['dbname'] = $_POST['dbname']; + return $logindata; +}); + +$wizard->addCode('createdatabase',function($storedvariables){ $conf_file = fopen("../etc/konfiguration.php", "w"); fwrite($conf_file, ""); - return $logindata; + // Test configuration: + require_once("SQL.php"); + try{ + $db = DB::getInstance(); + } + catch( PDOException $exception ) { + echo "

Fehler beim Verbindungsversuch mit der Datenbank: \"".$exception->getMessage( )."\"

"; + } + if(!is_null($db->pdoErrorCode()) && $db->pdoErrorCode() != '1'){ + echo "

Fehler ".$db->pdoErrorCode()." beim Verbindungsversuch mit der Datenbank: \"".$db->pdoErrorInfo()[2]."\"

"; + $_POST['step'] = 'createdatabase'; + } else { + echo "

Successfully connected to database!

"; + } +}); + +$wizard->addCode('createdatabasetables',function($storedvariables){ + require_once("SQL.php"); + try{ + $db = DB::getInstance(); + } + catch( PDOException $exception ) { + echo "

Fehler beim Verbindungsversuch mit der Datenbank: \"".$exception->getMessage( )."\"

"; + } + if(!is_null($db->pdoErrorCode()) && $db->pdoErrorCode() != '1'){ + echo "

Fehler ".$db->pdoErrorCode()." beim Verbindungsversuch mit der Datenbank: \"".$db->pdoErrorInfo()[2]."\"

"; + $_POST['step'] = 'createdatabase'; + } else { + echo "

Successfully connected to database!

"; + } + $sql = file_get_contents("../etc/helferdb_schema_test.sql"); + $db->prepare(__METHOD__,$sql); + if(!is_null($db->errorCode(__METHOD__)) && $db->errorCode(__METHOD__) != '1'){ + echo "
";
+        var_dump(__METHOD__);
+        var_dump($db->errorCode(__METHOD__));
+        var_dump($db->errorInfo(__METHOD__));
+        echo "
"; + echo "

Fehler: \"".$db->errorInfo(__METHOD__)[2]."\"

"; + $_POST['step'] = 'createdatabasetables'; + } + $db->execute(__METHOD__); + if(!is_null($db->errorCode(__METHOD__)) && $db->errorCode(__METHOD__) != '1'){ + echo "
";
+        var_dump(__METHOD__);
+        var_dump($db->errorCode(__METHOD__));
+        var_dump($db->errorInfo(__METHOD__));
+        echo "
"; + echo "

Fehler: \"".$db->errorInfo(__METHOD__)[2]."\"

"; + $_POST['step'] = 'createdatabasetables'; + } }); $wizard->renderPHP(); diff --git a/html/konfiguration.php b/html/konfiguration.php index fcb2ca4..e5d846a 100644 --- a/html/konfiguration.php +++ b/html/konfiguration.php @@ -1,7 +1,7 @@ Tabellen einrichten" + "id": "setupsqlite", + "page": "

Datenbanksoftware installieren<\/h2>

Hier müssen ein paar Sachen per Hand in einem Terminal gemacht werden, die der Setupwizard vernünftigerweise nicht selbst machen sollte da sie Adminrechte (root) erfordern.\r\n

Wir müssen das sqlite Modul für PHP installieren, bitte dazu folgendes in der Shell (z.b. bash) eingeben:<\/p>\r\n

sudo apt-get install php-sqlite3<\/code><\/pre>

Wenn eine Fehlermeldung kommt, dass man nicht in der sudoers Datei ist (oder so ähnlich), vorher folgendes eingeben um zum Adminbenutzer zu wechseln (wenn man zum Adminbenutzer gewechselt ist kann man das vorausgestellte sudo bei allen Kommandos weglassen, es schadet aber auch nicht):<\/p>

su -<\/code><\/pre>
<\/form>" }, { "id": "enterlogindata", - "page": "

Logindaten für die Datenbank eingeben<\/h2>\r\n

Bitte hier zun\u00E4chst die Logindaten f\u00FCr die Datenbank eingeben. Es muss in der Regel nur ein Passwort vergeben werden und die anderen beiden Werte k\u00F6nnen unver\u00E4ndert bleiben.<\/p>\r\n

\r\n

\r\n Logindaten eingeben<\/legend>\r\n \r\n \r\n