diff --git a/php/zzz_sqlite-join/actions/delete.php b/php/zzz_sqlite-join/actions/delete.php
new file mode 100644
index 0000000..09ce4fb
--- /dev/null
+++ b/php/zzz_sqlite-join/actions/delete.php
@@ -0,0 +1,19 @@
+prepare("DELETE FROM intro WHERE id = :id");
+// KONTROLA -> echo $sql . "
";
+
+//vykonání příkazu a následný "report"
+if ($query->execute(["id" => $id])) {
+ echo "příkaz byl vykonán";
+ header("Location: /?del=$id");
+} else {
+ echo "Error: DELETE selhal";
+}
+
+
+?>
diff --git a/php/zzz_sqlite-join/actions/index.php b/php/zzz_sqlite-join/actions/index.php
new file mode 100644
index 0000000..58b8026
--- /dev/null
+++ b/php/zzz_sqlite-join/actions/index.php
@@ -0,0 +1,4 @@
+
diff --git a/php/zzz_sqlite-join/actions/insert.php b/php/zzz_sqlite-join/actions/insert.php
new file mode 100644
index 0000000..2d0fe90
--- /dev/null
+++ b/php/zzz_sqlite-join/actions/insert.php
@@ -0,0 +1,22 @@
+prepare("INSERT INTO intro (nazev, autor, rok_vydani) VALUES (:nazev, :autor, :rok_vydani)");
+// KONTROLA -> echo $sql . "
";
+//vykonání příkazu a následný "report"
+if ($query->execute(["nazev" => $nazev, "autor" => $autor, "rok_vydani" => $rok_vydani])) {
+ $last_id = $pdo->lastInsertId();
+ echo "příkaz byl vykonán - ID:" . $last_id;
+ header("Location: /?id=$last_id");
+} else {
+ echo "Error: INSERT selhal";
+}
+
+
+?>
diff --git a/php/zzz_sqlite-join/actions/update.php b/php/zzz_sqlite-join/actions/update.php
new file mode 100644
index 0000000..48bb0f4
--- /dev/null
+++ b/php/zzz_sqlite-join/actions/update.php
@@ -0,0 +1,47 @@
+prepare($sql);
+if ($query->execute($params)) {
+ echo "příkaz byl vykonán";
+ header("Location: /?up=$id");
+} else {
+ echo "Error: UPDATE selhal";
+}
diff --git a/php/zzz_sqlite-join/admin.php b/php/zzz_sqlite-join/admin.php
new file mode 100644
index 0000000..09d7d15
--- /dev/null
+++ b/php/zzz_sqlite-join/admin.php
@@ -0,0 +1,62 @@
+prepare("SELECT vypujceni.id, zakaznici.username, intro.nazev, vypujceni.vraceno, vypujceni.datum_vypujceni, vypujceni.datum_vraceni
+FROM vypujceni
+INNER JOIN zakaznici ON vypujceni.id_zakaznici = zakaznici.id
+INNER JOIN intro ON vypujceni.id_intro = intro.id");
+$query->execute();
+$vypujcky = $query->fetchAll(PDO::FETCH_ASSOC);
+?>
+
+
+
+
+
+
+
+ ADMIN
+
+
+
+ Admin page
+
+
+
+
+
+ | id |
+ uživatel |
+ název knihy |
+ vráceno |
+ Datum vypujčení |
+ Datum vrácení |
+
+
+ ";
+ echo "". $row["id"]." | ";
+ echo "". $row["username"]." | ";
+ echo "". $row["nazev"]." | ";
+ //dynamické využití proměnné
+ if ($row["vraceno"]) {
+ echo "Vráceno | ";
+ } else {
+ echo "Nevráceno | ";
+ }
+ echo "". $row["datum_vypujceni"]." | ";
+ echo "". $row["datum_vraceni"]." | ";
+ echo "";
+ }
+ ?>
+
+
+
diff --git a/php/zzz_sqlite-join/index.php b/php/zzz_sqlite-join/index.php
new file mode 100644
index 0000000..3500504
--- /dev/null
+++ b/php/zzz_sqlite-join/index.php
@@ -0,0 +1,55 @@
+prepare("SELECT * FROM intro ORDER BY id DESC");
+$query->execute();
+$books = $query->fetchAll(PDO::FETCH_ASSOC);
+?>
+
+
+
+
+
+
+ KNIHOVNA
+
+
+ Knihovna
+
+
+
+
+
+
+ Byla vytvořena kniha s ID:".$_GET["id"]."";
+ }
+ if (isset($_GET["del"])){
+ echo "Byla odstraněna kniha s ID:".$_GET["del"]."
";
+ }
+ if (isset($_GET["up"])){
+ echo "Byla upravena kniha s ID:".$_GET["up"]."
";
+ }
+ ?>
+
+
+ " . $row["id"]. ") ". $row["nazev"]." <-- ". $row["autor"]." | rok: ".$row["rok_vydani"];
+ echo ' Vymazat';
+ echo "";
+ }
+ ?>
+
+
+
+
diff --git a/php/zzz_sqlite-join/init.php b/php/zzz_sqlite-join/init.php
new file mode 100644
index 0000000..920c634
--- /dev/null
+++ b/php/zzz_sqlite-join/init.php
@@ -0,0 +1,75 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+} catch (PDOException $e) {
+ die("Chyba připojení k databázi: " . $e->getMessage());
+}
+
+//zapnutí foreign keys
+$pdo->exec("PRAGMA foreign_keys = ON");
+
+//vytvoření tabulek pokud neexistují
+$pdo->exec("CREATE TABLE IF NOT EXISTS intro (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ nazev VARCHAR(64) NOT NULL,
+ autor VARCHAR(64) NOT NULL,
+ rok_vydani INTEGER NOT NULL
+)");
+
+$pdo->exec("CREATE TABLE IF NOT EXISTS zakaznici (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ username VARCHAR(64) NOT NULL,
+ first_name VARCHAR(64) NOT NULL,
+ last_name VARCHAR(64) NOT NULL
+)");
+
+$pdo->exec("CREATE TABLE IF NOT EXISTS vypujceni (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ id_zakaznici INTEGER NOT NULL,
+ id_intro INTEGER NOT NULL,
+ datum_vypujceni DATETIME NOT NULL,
+ datum_vraceni DATETIME NOT NULL,
+ vraceno INTEGER NOT NULL,
+ FOREIGN KEY (id_zakaznici) REFERENCES zakaznici(id),
+ FOREIGN KEY (id_intro) REFERENCES intro(id)
+)");
+
+//vložení výchozích dat pokud jsou tabulky prázdné
+$query = $pdo->prepare("SELECT COUNT(*) FROM intro");
+$query->execute();
+$count = $query->fetchColumn();
+
+if ($count == 0) {
+ $pdo->exec("INSERT INTO intro (id, nazev, autor, rok_vydani) VALUES
+ (1, 'Kytice', 'Jaromir Erben', 1901),
+ (2, 'Karlštejn', 'Nějaky autor', 2022),
+ (3, 'Steti', 'Neznamy', 2002),
+ (4, 'Médeia', 'Euripidés', 5),
+ (5, 'Evžen Oněgin', 'A. S. Puškin', 1823),
+ (6, 'RUR', 'K. Čapek', 1920),
+ (7, 'Spalovač mrtvol', 'L. Fuks', 1967),
+ (8, 'Petr a Lucie', 'R. Rolland', 1920)
+ ");
+
+ $pdo->exec("INSERT INTO zakaznici (id, username, first_name, last_name) VALUES
+ (1, 'franta', 'Frantíšek', 'Novák'),
+ (2, 'pepa', 'Josef', 'Tyl'),
+ (3, 'kubino', 'Jakub', 'Pospíšil'),
+ (4, 'asvo', 'Alena', 'Svobodová'),
+ (5, 'olhe', 'Olga', 'Helclová')
+ ");
+
+ $pdo->exec("INSERT INTO vypujceni (id, id_zakaznici, id_intro, datum_vypujceni, datum_vraceni, vraceno) VALUES
+ (1, 2, 3, '2023-01-12 10:27:56', '2023-02-01 12:00:00', 0),
+ (2, 2, 4, '2023-01-12 10:28:39', '2023-02-01 12:00:00', 0),
+ (3, 2, 7, '2023-01-12 10:30:19', '2023-02-01 13:15:30', 1),
+ (4, 4, 8, '2023-01-12 10:31:10', '2023-02-01 13:15:30', 1),
+ (5, 4, 4, '2023-01-12 10:31:23', '2023-02-01 13:15:30', 1),
+ (6, 5, 6, '2023-01-12 10:31:53', '2023-02-01 13:15:30', 0)
+ ");
+}
+?>
diff --git a/php/zzz_sqlite-join/update.php b/php/zzz_sqlite-join/update.php
new file mode 100644
index 0000000..7f4b592
--- /dev/null
+++ b/php/zzz_sqlite-join/update.php
@@ -0,0 +1,42 @@
+prepare("SELECT * FROM intro");
+$query->execute();
+$books = $query->fetchAll(PDO::FETCH_ASSOC);
+?>
+
+
+
+
+
+
+ UPDATE
+
+
+ UPDATE DATA
+
+
+
+
+
+ " . $row["id"]. ") ". $row["nazev"]." <-- ". $row["autor"]." | rok: ".$row["rok_vydani"];
+ echo ' Vymazat';
+ echo "";
+ }
+ ?>
+
+
+
+
diff --git a/php/zzz_sqlite-up-del/actions/delete.php b/php/zzz_sqlite-up-del/actions/delete.php
new file mode 100644
index 0000000..09ce4fb
--- /dev/null
+++ b/php/zzz_sqlite-up-del/actions/delete.php
@@ -0,0 +1,19 @@
+prepare("DELETE FROM intro WHERE id = :id");
+// KONTROLA -> echo $sql . "
";
+
+//vykonání příkazu a následný "report"
+if ($query->execute(["id" => $id])) {
+ echo "příkaz byl vykonán";
+ header("Location: /?del=$id");
+} else {
+ echo "Error: DELETE selhal";
+}
+
+
+?>
diff --git a/php/zzz_sqlite-up-del/actions/index.php b/php/zzz_sqlite-up-del/actions/index.php
new file mode 100644
index 0000000..58b8026
--- /dev/null
+++ b/php/zzz_sqlite-up-del/actions/index.php
@@ -0,0 +1,4 @@
+
diff --git a/php/zzz_sqlite-up-del/actions/insert.php b/php/zzz_sqlite-up-del/actions/insert.php
new file mode 100644
index 0000000..2d0fe90
--- /dev/null
+++ b/php/zzz_sqlite-up-del/actions/insert.php
@@ -0,0 +1,22 @@
+prepare("INSERT INTO intro (nazev, autor, rok_vydani) VALUES (:nazev, :autor, :rok_vydani)");
+// KONTROLA -> echo $sql . "
";
+//vykonání příkazu a následný "report"
+if ($query->execute(["nazev" => $nazev, "autor" => $autor, "rok_vydani" => $rok_vydani])) {
+ $last_id = $pdo->lastInsertId();
+ echo "příkaz byl vykonán - ID:" . $last_id;
+ header("Location: /?id=$last_id");
+} else {
+ echo "Error: INSERT selhal";
+}
+
+
+?>
diff --git a/php/zzz_sqlite-up-del/actions/update.php b/php/zzz_sqlite-up-del/actions/update.php
new file mode 100644
index 0000000..48bb0f4
--- /dev/null
+++ b/php/zzz_sqlite-up-del/actions/update.php
@@ -0,0 +1,47 @@
+prepare($sql);
+if ($query->execute($params)) {
+ echo "příkaz byl vykonán";
+ header("Location: /?up=$id");
+} else {
+ echo "Error: UPDATE selhal";
+}
diff --git a/php/zzz_sqlite-up-del/index.php b/php/zzz_sqlite-up-del/index.php
new file mode 100644
index 0000000..c60af3e
--- /dev/null
+++ b/php/zzz_sqlite-up-del/index.php
@@ -0,0 +1,53 @@
+prepare("SELECT * FROM intro ORDER BY id DESC");
+$query->execute();
+$books = $query->fetchAll(PDO::FETCH_ASSOC);
+?>
+
+
+
+
+
+
+ KNIHOVNA
+
+
+ Knihovna
+
+
+
+
+ Byla vytvořena kniha s ID:".$_GET["id"]."";
+ }
+ if (isset($_GET["del"])){
+ echo "Byla odstraněna kniha s ID:".$_GET["del"]."
";
+ }
+ if (isset($_GET["up"])){
+ echo "Byla upravena kniha s ID:".$_GET["up"]."
";
+ }
+ ?>
+
+
+ " . $row["id"]. ") ". $row["nazev"]." <-- ". $row["autor"]." | rok: ".$row["rok_vydani"];
+ echo ' Vymazat';
+ echo "";
+ }
+ ?>
+
+
+
+
diff --git a/php/zzz_sqlite-up-del/init.php b/php/zzz_sqlite-up-del/init.php
new file mode 100644
index 0000000..69bcffb
--- /dev/null
+++ b/php/zzz_sqlite-up-del/init.php
@@ -0,0 +1,37 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+} catch (PDOException $e) {
+ die("Chyba připojení k databázi: " . $e->getMessage());
+}
+
+//vytvoření tabulky pokud neexistuje
+$pdo->exec("CREATE TABLE IF NOT EXISTS intro (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ nazev VARCHAR(64) NOT NULL,
+ autor VARCHAR(64) NOT NULL,
+ rok_vydani INTEGER NOT NULL
+)");
+
+//vložení výchozích dat pokud je tabulka prázdná
+$query = $pdo->prepare("SELECT COUNT(*) FROM intro");
+$query->execute();
+$count = $query->fetchColumn();
+
+if ($count == 0) {
+ $pdo->exec("INSERT INTO intro (id, nazev, autor, rok_vydani) VALUES
+ (1, 'Kytice', 'Jaromir Erben', 1901),
+ (2, 'Karlštejn', 'Nějaky autor', 2022),
+ (3, 'Steti', 'Neznamy', 2002),
+ (4, 'Médeia', 'Euripidés', 5),
+ (5, 'Evžen Oněgin', 'A. S. Puškin', 1823),
+ (6, 'RUR', 'K. Čapek', 1920),
+ (7, 'Spalovač mrtvol', 'L. Fuks', 1967),
+ (8, 'Petr a Lucie', 'R. Rolland', 1920)
+ ");
+}
+?>
diff --git a/php/zzz_sqlite-up-del/update.php b/php/zzz_sqlite-up-del/update.php
new file mode 100644
index 0000000..7f4b592
--- /dev/null
+++ b/php/zzz_sqlite-up-del/update.php
@@ -0,0 +1,42 @@
+prepare("SELECT * FROM intro");
+$query->execute();
+$books = $query->fetchAll(PDO::FETCH_ASSOC);
+?>
+
+
+
+
+
+
+ UPDATE
+
+
+ UPDATE DATA
+
+
+
+
+
+ " . $row["id"]. ") ". $row["nazev"]." <-- ". $row["autor"]." | rok: ".$row["rok_vydani"];
+ echo ' Vymazat';
+ echo "";
+ }
+ ?>
+
+
+
+
diff --git a/php/zzz_sqlite-uvod/index.php b/php/zzz_sqlite-uvod/index.php
new file mode 100644
index 0000000..efef7cc
--- /dev/null
+++ b/php/zzz_sqlite-uvod/index.php
@@ -0,0 +1,87 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+// 2) VYTVOŘENÍ TABULKY (pokud ještě neexistuje)
+// -----------------------------------------------
+$pdo->exec("CREATE TABLE IF NOT EXISTS zaci (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ jmeno TEXT NOT NULL,
+ vek INTEGER NOT NULL
+)");
+
+// 3) ZPRACOVÁNÍ FORMULÁŘE - přidání žáka
+// ----------------------------------------
+if (isset($_POST["pridat"])) {
+ $jmeno = $_POST["jmeno"];
+ $vek = $_POST["vek"];
+
+ // prepare + execute = bezpečný způsob vkládání dat
+ $query = $pdo->prepare("INSERT INTO zaci (jmeno, vek) VALUES (:jmeno, :vek)");
+ $query->execute(["jmeno" => $jmeno, "vek" => $vek]);
+
+ // přesměrování zpět (aby se formulář neposlal znovu při refreshi)
+ header("Location: index.php");
+ exit;
+}
+x
+// 4) ZPRACOVÁNÍ SMAZÁNÍ
+// ----------------------
+if (isset($_GET["smazat"])) {
+ $id = $_GET["smazat"];
+
+ $query = $pdo->prepare("DELETE FROM zaci WHERE id = :id");
+ $query->execute(["id" => $id]);
+
+ header("Location: index.php");
+ exit;
+}
+
+// 5) NAČTENÍ VŠECH ŽÁKŮ Z DATABÁZE
+// -----------------------------------
+$query = $pdo->prepare("SELECT * FROM zaci ORDER BY id DESC");
+$query->execute();
+$zaci = $query->fetchAll(PDO::FETCH_ASSOC);
+?>
+
+
+
+
+ SQLite úvod
+
+
+ Seznam žáků
+
+
+
+
+
+
+
+ -
+ = $zak["id"] ?>) = $zak["jmeno"] ?> - = $zak["vek"] ?> let
+ ">smazat
+
+
+
+
+
+ Žádní žáci v databázi.
+
+
+
diff --git a/php/02ukazka.sqlite b/php/zzz_sqlite-uvod/ukazka.sqlite
similarity index 98%
rename from php/02ukazka.sqlite
rename to php/zzz_sqlite-uvod/ukazka.sqlite
index fe5bce4..9fa4357 100644
Binary files a/php/02ukazka.sqlite and b/php/zzz_sqlite-uvod/ukazka.sqlite differ