You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.6 KiB
87 lines
2.6 KiB
<?php
|
|
// =============================================
|
|
// ÚVOD DO SQLITE + PHP (PDO)
|
|
// =============================================
|
|
// SQLite = databáze uložená v jednom souboru
|
|
// Nepotřebujeme žádný server (jako MySQL)
|
|
// PDO = univerzální způsob jak se v PHP připojit k databázi
|
|
// =============================================
|
|
|
|
// 1) PŘIPOJENÍ K DATABÁZI
|
|
// -----------------------
|
|
// Soubor "ukazka.sqlite" se vytvoří automaticky
|
|
$pdo = new PDO("sqlite:" . __DIR__ . "/ukazka.sqlite");
|
|
$pdo->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);
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="cs">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>SQLite úvod</title>
|
|
</head>
|
|
<body>
|
|
<h1>Seznam žáků</h1>
|
|
|
|
<!-- FORMULÁŘ pro přidání -->
|
|
<form method="post">
|
|
<input type="text" name="jmeno" placeholder="Jméno" required>
|
|
<input type="number" name="vek" placeholder="Věk" required>
|
|
<button type="submit" name="pridat">Přidat</button>
|
|
</form>
|
|
|
|
<!-- VÝPIS z databáze -->
|
|
<ul>
|
|
<?php foreach ($zaci as $zak): ?>
|
|
<li>
|
|
<?= $zak["id"] ?>) <?= $zak["jmeno"] ?> - <?= $zak["vek"] ?> let
|
|
<a href="?smazat=<?= $zak["id"] ?>">smazat</a>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
|
|
<?php if (empty($zaci)): ?>
|
|
<p>Žádní žáci v databázi.</p>
|
|
<?php endif; ?>
|
|
</body>
|
|
</html>
|
|
|