summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHorus32016-03-03 12:15:11 +0100
committerHorus32016-03-03 12:15:11 +0100
commit5ef16cc4a33bad8efb5feb45d78f9843039e8fc3 (patch)
tree71fec7561bcf9ac6356141a93e1969ebd40ce9c5
parent7e967c88d60b821ee22f4d62bc6583d4025f0bad (diff)
downloadgospeladlershof.de-5ef16cc4a33bad8efb5feb45d78f9843039e8fc3.tar.gz
Bessere Fehlerbehandlung beim JSON erzeugen.
-rw-r--r--.gitignore2
-rw-r--r--intern/api/config.php3
-rw-r--r--intern/api/db.php29
-rw-r--r--intern/api/termine.php19
-rw-r--r--intern/json/.gitkeep0
-rw-r--r--intern/schema.txt19
6 files changed, 62 insertions, 10 deletions
diff --git a/.gitignore b/.gitignore
index 1624301..158da60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,5 @@
*.tar
*.gz
-config.php
+secrets.php
public/
diff --git a/intern/api/config.php b/intern/api/config.php
new file mode 100644
index 0000000..728ff37
--- /dev/null
+++ b/intern/api/config.php
@@ -0,0 +1,3 @@
+<?php
+
+$json_file = __DIR__ . "/../json/termine.json";
diff --git a/intern/api/db.php b/intern/api/db.php
index 9521148..8385ed5 100644
--- a/intern/api/db.php
+++ b/intern/api/db.php
@@ -1,8 +1,25 @@
<?php
-require_once __DIR__ . '/config.php';
-$db = new pdo($dsn, $db_user, $db_passwd);
-$db->exec('SET CHARACTER SET utf8');
+function get_db() {
+ require_once __DIR__ . '/config.php';
+ require_once __DIR__ . '/secrets.php'; // beinhaltet die Parameter für die Datenbank
+
+ try {
+ $db = new pdo($dsn, $db_user, $db_passwd);
+ } catch (Exception $e) {
+ error_log($e->getMessage());
+
+ unset($dsn);
+ unset($db_user);
+ unset($db_passwd);
+
+ return false;
+ }
+ $db->exec('SET CHARACTER SET utf8');
+
+ unset($dsn);
+ unset($db_user);
+ unset($db_passwd);
+
+ return $db;
+}
-unset($dsn);
-unset($db_user);
-unset($db_passwd);
diff --git a/intern/api/termine.php b/intern/api/termine.php
index 9c9d454..b5ff1db 100644
--- a/intern/api/termine.php
+++ b/intern/api/termine.php
@@ -1,12 +1,25 @@
<?php
+header('Content-Type: application/json');
require_once __DIR__ . '/db.php';
+require_once __DIR__ . '/config.php';
+
+$db = get_db();
+
+if ( false === $db ) {
+ echo file_get_contents($json_file); // Liest veralte JSON Datei
+ error_log (json_encode( array( "error" => true, "reason" => "Can't connect to the database", "build" => time() ) ) );
+ exit;
+}
$res = $db->query('select termin, uhrzeit from proben where date(STR_TO_DATE(termin, "%d.%m.%Y")) > (SELECT CURDATE() );');
$proben = $res->fetchAll(PDO::FETCH_ASSOC);
$res = $db->query('select termin,uhrzeit,beschreibung,anfahrt from konzert order by id desc limit 1;');
$konzert = $res->fetchAll(PDO::FETCH_ASSOC);
-$output = array("konzert" => $konzert, "proben" => $proben);
-header('Content-Type: application/json');
-echo( json_encode($output, JSON_PRETTY_PRINT) );
+$output = array("konzert" => $konzert, "proben" => $proben, "build" => time());
+$data = json_encode($output, JSON_PRETTY_PRINT);
+
+file_put_contents($json_file, $data); // speichert die JSON Datei für den Fall, dass es später Fehler gibt
+
+echo $file;
diff --git a/intern/json/.gitkeep b/intern/json/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/intern/json/.gitkeep
diff --git a/intern/schema.txt b/intern/schema.txt
new file mode 100644
index 0000000..381aa03
--- /dev/null
+++ b/intern/schema.txt
@@ -0,0 +1,19 @@
+konzert:
+ id int primary key
+ termin date
+ uhrzeit time
+ desc text
+
+proben:
+ id int primary key
+ termin date
+ uhrzeit time
+
+newsletter:
+ id int primary key
+ email text
+ eingetragen datetime
+ best-link text
+ bestätigt datetime
+ aktiv bool
+ lösch-link text