19. Články v databázi

Nejdříve si v databázi vytvoříme tabulku Clanky, do které budeme ukládat všechny články. 

Jednotlivé sloupce tabulky budou tyto:

  • ID (zároveň primární klíč),
  • název článku,
  • autor,
  • obsah článku
  • a datum.

Tuto tabulku můžete buď vytvořit ručně přes nějaké rozhraní typu Adminer nebo PHPMyAdmin a nebo jej můžete spustit přes soubor, který vidíte níže. Název může být např. vytvor-clanky.php. Soubor obsahuje příkazy SQL a je napojen na db.php, který zabezpečuje připojení k databázi. Ten samozřejmě musíte vytvořit nejdříve (viz předcházející kapitola).

Soubor vytvor-clanky.php může vypadat např. takto:

<?php
// Napojení souboru se spojením k databázi
require 'db.php';
// SQL příkaz k vytvoření tabulky Clanky v databázi
$vytvor_clanky = "CREATE TABLE Clanky (
id INT(6) AUTO_INCREMENT PRIMARY KEY, 
nazev VARCHAR(30) NOT NULL,
autor VARCHAR(30) NOT NULL,
obsah TEXT,
datum VARCHAR(30) NOT NULL
)";
if (mysqli_query($spojeni, $vytvor_clanky)) {
    echo "Tabulka Clanky byla vytvořena";
} else {
    echo "Chyba, tabulka nebyla vytvořena: " . mysqli_error($spojeni);
}
mysqli_close($spojeni);
?>

Samotný příkaz SQL vypadá takto:

CREATE TABLE Clanky (
id INT(6) AUTO_INCREMENT PRIMARY KEY, 
nazev VARCHAR(30) NOT NULL,
autor VARCHAR(30) NOT NULL,
obsah TEXT,
datum VARCHAR(30) NOT NULL
)

Dále si vytvoříme soubor, kterým budeme články vytvářet - novy-clanek.php:

<?php
require 'db.php' ;
?>
<form action="" method="post">
Název článku:<br>
<input type="text" name="nazev"><br>
Autor:<br>
<input type="text" name="autor"><br>
Obsah článku:<br>
<textarea name="obsah"></textarea><br>
<input type="submit" value="Uložit článek">
</form>
<?php
if (!empty ($_POST))
// empty - prázdný a jeho negace nebo-li
// pokud bylo cokoliv zadáno do formuláře, začne se vykonávat následující podmínka
{ 
// přijme všechny zadané informace do formuláře
$nazev = $_REQUEST["nazev"];
$autor = $_REQUEST["autor"];
$obsah = $_REQUEST["obsah"];
$datum = StrFTime("%d.%m.%Y", Time());
// uložíme data do databáze
$novy_clanek = mysqli_query($spojeni, "INSERT INTO Clanky (nazev, autor, obsah, datum)
VALUES ('$nazev', '$autor', '$obsah','$datum')");
// Po uložení vypíše hlášku
echo ("Článek byl uložen<br>");
}
echo ('<a href="vypis.php">Výpis článků</a>');
mysqli_close($spojeni);
?>

V závěru předchozího kódu "voláme" soubor vypis.php, kterým si necháme vypsat všechny články v databázi:

<?php
require 'db.php';
$vysledek = mysqli_query($spojeni, "SELECT * FROM Clanky ORDER BY datum DESC");
// Načtení článků seřazených podle datumu
while($data = mysqli_fetch_assoc($vysledek))
{
echo "<i>Název: </i><b>";
echo $data['nazev'];
echo "</b><br><i>Autor: </i>";
echo $data['autor'];
echo "<br><i>Vytvořeno: </i>";
echo $data['datum'];
echo "<br><i>Obsah článku:</i><br>";
echo $data['obsah'];
echo "<hr>";
}
?>

Prohlédněte si demo.

Takovýto systém ovšem neumožňuje editovat uložené články.