Virtuální Azyl: Revoluce v adopci zvířat začíná

Beta verze spuštěna! (Hurá!!!) 😉

Rádi bychom vám představili náš nový projekt Virtuální Azyl, který vznikl s cílem propojit azylová centra, útulky a zájemce o adopci zvířat na jednom místě. Tento ambiciózní projekt přináší nový způsob, jak najít domov pro opuštěná zvířata a zároveň usnadnit adopční proces.

O projektu

Virtuální Azyl je platforma postavená na moderních technologiích, jako jsou PHP 8.3 (asi plná verze bude na 8.4), Nette framework, ORM Doctrine, Latte šablony a frontendové technologie Bootstrap a JQuery. Systém umožňuje:

  • Jednoduché vyhledávání zvířat k adopci.
  • Propojení jednotlivých útulků a azylů.
  • Vytváření profilů zájemců o adopci.
  • Transparentní a bezpečný proces komunikace.

Vývoj a současný stav

Projekt je aktuálně ve fázi beta verze, která je plně funkční, ale stále probíhá intenzivní vývoj. Spousta věcí se ještě tvoří, testuje a analyzuje. Každý den pracujeme na nových funkcionalitách, opravách chyb a optimalizaci systému. Mezi hlavní výzvy patří:

  • Vytváření efektivních a intuitivních funkcí.
  • Zajištění stability a bezpečnosti systému.
  • Testování s reálnými uživateli.

Budoucnost Virtuálního Azylu

Naší vizí je vytvořit platformu, která bude srozumitelná a dostupná jak útulkům, tak zájemcům o adopci. Pracujeme na implementaci dalších funkcí, jako je například zlepšené filtrování, správa adopčních procesů nebo integrace s dalšími systémy.

Pokud vás projekt zaujal, neváhejte nás kontaktovat nebo se zapojit do testování beta verze. Každá zpětná vazba nás posouvá blíže k cíli – spojit všechny útulky a azylová centra na jednom místě.

A na konec….

Virtuální Azyl není jen technický projekt; je to cesta, jak zlepšit život opuštěným zvířatům a propojit je s těmi, kteří jim chtějí dát nový domov. Děkujeme všem, kteří nám pomáhají na této cestě.

Vyzkoušejte beta verzi na beta.virtualniazyl.cz a dejte nám vědět, co si myslíte!

Co je SQL a proč je tak důležité?

SQL (Structured Query Language) je jazyk určený pro komunikaci s databázemi. Umožňuje uživatelům ukládat, manipulovat a načítat data uložená v relačních databázích. SQL je standardizovaný jazyk, což znamená, že jeho základní syntax je univerzální a podporují ji různé systémy pro správu databází (DBMS) jako MySQL, PostgreSQL nebo SQLite.

Základní principy SQL

SQL pracuje s tabulkami, které jsou organizovány do sloupců a řádků. Sloupce určují typy dat (například jméno, věk, email), zatímco řádky představují jednotlivé záznamy.

Například tabulka produkty:

idnazevcena
1Notebook20000
2Mobilní telefon15000
3Tablet10000

Základní SQL příkazy

  1. SELECT: Načítání dat z tabulky:
SELECT * FROM produkty;

Tento příkaz vrátí všechny sloupce a řádky z tabulky produkty.

  1. INSERT: Vložení nového záznamu:
INSERT INTO produkty (nazev, cena) VALUES ('Monitor', 5000);
  1. UPDATE: Aktualizace stávajícího záznamu:
UPDATE produkty SET cena = 18000 WHERE id = 1;
  1. DELETE: Smazání záznamu:
DELETE FROM produkty WHERE id = 3;
  1. WHERE: Filtrování výsledků:
SELECT * FROM produkty WHERE cena > 10000;

SQL v kontextu relačních databází

Relační databáze organizují data do tabulek, které mohou být propojeny relacemi. SQL umožňuje spojovat tyto tabulky pomocí příkazů jako JOIN. Například:

Tabulka zakaznici:

idjmeno
1Josef
2Anna

Tabulka objednavky:

idprodukt_idzakaznik_id
121
212

SQL dotaz na získání všech objednávek s informacemi o zákaznících:

SELECT zakaznici.jmeno, produkty.nazev
FROM objednavky
JOIN zakaznici ON objednavky.zakaznik_id = zakaznici.id
JOIN produkty ON objednavky.produkt_id = produkty.id;

Výsledek:

jmenonazev
JosefMobilní telefon
AnnaNotebook

Proč se učit SQL?

  1. Univerzálnost: SQL je standardní jazyk pro práci s databázemi, ať už jde o malé projekty nebo rozsáhlé aplikace.
  2. Efektivita: SQL umožňuje rychlé a přesné zpracování dat.
  3. Široké využití: SQL je základní dovednost pro datové analytiky, vývojáře i administrátory databází.

Příklad použití SQL v reálném projektu

Představte si e-shop, kde jsou produkty a uživatelé uloženi v databázi. Pomocí SQL můžete získat přehled o tom, kteří uživatelé nakoupili konkrétní produkty.

Příklad:

<?php
$query = "SELECT zakaznici.jmeno, produkty.nazev
          FROM objednavky
          JOIN zakaznici ON objednavky.zakaznik_id = zakaznici.id
          JOIN produkty ON objednavky.produkt_id = produkty.id";
$result = $pdo->query($query);

foreach ($result as $row) {
    echo $row['jmeno'] . " nakoupil: " . $row['nazev'] . "<br>";
}

Výstup:

Josef nakoupil: Mobilní telefon
Anna nakoupila: Notebook

Výhody a nevýhody SQL

Výhody:

  • Jednoduchost a čitelnost.
  • Standardizovaný jazyk podporovaný většinou DBMS.
  • Výkonnost pro dotazy na velké množství dat.

Nevýhody:

  • Složitější úpravy při změnách struktury databáze.
  • Omezené možnosti práce s nestrukturovanými daty.

Jak začít s SQL?

  1. Zvolte DBMS: Vyberte si systém jako MySQL, PostgreSQL nebo SQLite.
  2. Naučte se základy: Začněte se základními příkazy jako SELECT, INSERT, UPDATE, DELETE.
  3. Vyzkoušejte nástroje: Použijte rozhraní jako phpMyAdmin nebo příkazovou řádku.
  4. Praktikujte: Experimentujte s reálnými scénáři a daty.

SQL je nepostradatelným nástrojem pro každého, kdo pracuje s daty. Díky své jednoduchosti a univerzálnosti zůstává jedním z nejdůležitějších jazyků v oblasti databází.

Co je MySQL a proč je tak oblíbená?

MySQL je jedním z nejpopulárnějších systémů pro správu relačních databází na světě. Byla vytvořena v roce 1995 švédskou společností MySQL AB a dnes je vlastněna společností Oracle Corporation. MySQL je open-source software, což znamená, že je zdarma dostupná, a zároveň existuje komerční verze s pokročilými funkcemi.

Jak MySQL funguje?

MySQL je systém správy relačních databází (RDBMS), což znamená, že ukládá data do tabulek spojených vzájemnými relacemi. Data jsou organizována tak, aby byla snadno přístupná a spravovatelná pomocí jazyka SQL (Structured Query Language).

Například tabulka uzivatele může vypadat takto:

idjmenoemail
1Josefjosef@email.cz
2Annaanna@email.cz

SQL dotazy vám umožňují data do této tabulky vkládat, číst, upravovat nebo mazat.

Proč používat MySQL?

  1. Výkon: MySQL je optimalizována pro rychlost a efektivitu, což ji činí ideální pro webové aplikace.
  2. Snadná integrace: Dobře spolupracuje s PHP a dalšími programovacími jazyky.
  3. Škálovatelnost: Lze ji používat pro malé projekty i pro rozsáhlé aplikace.
  4. Podpora komunity: Díky své popularitě má MySQL rozsáhlou komunitu, která poskytuje podporu a sdílí nástroje.

Jak se připojit k MySQL z PHP

Připojení k MySQL z PHP je jednoduché díky rozhraní PDO (PHP Data Objects). Ukázkový kód vypadá takto:

<?php
try {
    $dsn = 'mysql:host=localhost;dbname=mojedb';
    $username = 'root';
    $password = '';

    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Připojení úspěšné!";
} catch (PDOException $e) {
    echo "Chyba připojení: " . $e->getMessage();
}
?>

Základní SQL dotazy

  1. Vložení dat:
INSERT INTO uzivatele (jmeno, email) VALUES ('Petr', 'petr@email.cz');
  1. Získání dat:
SELECT * FROM uzivatele;
  1. Aktualizace dat:
UPDATE uzivatele SET email = 'novy@email.cz' WHERE id = 1;
  1. Smazání dat:
DELETE FROM uzivatele WHERE id = 2;

Příklad použití MySQL v reálném projektu

Představme si, že vytváříte jednoduchou webovou aplikaci, kde si uživatelé mohou vytvořit účet. Po registraci jejich data uložíte do databáze a při přihlášení je ověříte.

Registrace:

<?php
$stmt = $pdo->prepare('INSERT INTO uzivatele (jmeno, email) VALUES (?, ?)');
$stmt->execute(['Karel', 'karel@email.cz']);

Přihlášení:

<?php
$stmt = $pdo->prepare('SELECT * FROM uzivatele WHERE email = ?');
$stmt->execute(['karel@email.cz']);
$user = $stmt->fetch();
if ($user) {
    echo "Uživatel nalezen: " . $user['jmeno'];
} else {
    echo "Uživatel neexistuje.";
}

Výhody a nevýhody MySQL

Výhody:

  • Rychlost a spolehlivost.
  • Snadná integrace s programovacími jazyky.
  • Široká podpora komunitou.
  • Open-source s možností komerčního využití.

Nevýhody:

  • Omezení při práci s velmi komplexními dotazy nebo pokročilými funkcemi.
    Nevyžaduje transakce, které jsou například v PostgreSql nutností.

Jak začít s MySQL

  1. Instalace: Nainstalujte MySQL server (např. pomocí XAMPP, WAMP nebo Dockeru).
  2. Správa: Použijte nástroje jako phpMyAdmin nebo MySQL Workbench pro správu databází.
  3. Základy SQL: Naučte se základní příkazy SQL, jako jsou SELECT, INSERT, UPDATE a DELETE.
  4. Integrace: Vyzkoušejte připojení MySQL s vaší aplikací v PHP nebo jiném jazyce.

MySQL je silný nástroj pro správu databází, který zůstává oblíbenou volbou jak pro malé projekty, tak pro rozsáhlé aplikace. Díky své jednoduchosti a výkonu je skvělým výchozím bodem pro každého vývojáře.

Co je ORM a proč ho používat?

Object-Relational Mapping (ORM) je technika, která usnadňuje práci s databázemi. Pomocí ORM můžete manipulovat s databázovými daty jako s objekty, což zjednodušuje kód a činí jej přehlednějším.

Doctrine ORM

Doctrine je populární ORM nástroj pro PHP. Poskytuje robustní nástroje pro mapování entit na databázové tabulky a podporuje pokročilé funkce, jako jsou vztahy mezi tabulkami nebo lazy loading.

Ukázka práce s Doctrine:

Definice entity:

/**
 * @Entity
 * @Table(name="products")
 */
class Product
{
    /** @Id @Column(type="integer") @GeneratedValue */
    private $id;

    /** @Column(type="string") */
    private $name;

    /** @Column(type="decimal", scale=2) */
    private $price;

    // Gettery a settery
}

Dotaz na data:

$product = $entityManager->find(Product::class, 1);
echo $product->getName();

Nextras ORM

Nextras ORM je česká alternativa k Doctrine, která se zaměřuje na jednoduchost a rychlost. Je vhodná pro projekty v Nette frameworku.

Ukázka práce s Nextras ORM:

Definice entity:

/**
 * @property int    $id    {primary}
 * @property string $name
 * @property float  $price
 */
class Product extends \Nextras\Orm\Entity\Entity
{
}

Definice repository:

class ProductRepository extends \Nextras\Orm\Repository\Repository
{
    public static function getEntityClassNames(): array
    {
        return [Product::class];
    }
}

Dotaz na data:

$product = $productRepository->getById(1);
echo $product->name;

Výhody ORM

  1. Zjednodušení: Práce s databází pomocí objektů místo SQL dotazů.
  2. Bezpečnost: Ochrana proti SQL injection.
  3. Údržba: Kód je přehlednější a snadno rozšiřitelný.

ORM nástroje, jako Doctrine nebo Nextras ORM, jsou neocenitelnými pomocníky při práci s databázemi v moderních aplikacích.

Co je to ORM? Jak ho použítvat a jaké jsou jeho výhody

Co je to ORM? Jak ho použítvat a jaké jsou jeho výhody

Objektově relační mapování (ORM) je technika používaná k propojení relačních databází s objektově orientovanými programovacími jazyky. V PHP se ORM nástroje, jako například Doctrine, Propel nebo Eloquent, staly nedílnou součástí moderního vývoje aplikací. Tento článek poskytne přehled o tom, co ORM znamená, jaké výhody a nevýhody nabízí, a srovná některé z nejpopulárnějších ORM knihoven v PHP.


Co je ORM?

ORM umožňuje vývojářům pracovat s databázemi prostřednictvím objektů namísto přímého psaní SQL dotazů. Mapuje tabulky a sloupce v databázi na třídy a vlastnosti v kódu, čímž zjednodušuje interakci mezi aplikací a databází.

Výhody ORM:

  1. Abstrakce od SQL: Vývojáři nemusí psát složité SQL dotazy.
  2. Zvýšená produktivita: ORM zrychluje vývoj díky automatizaci opakujících se úkolů.
  3. Portabilita: ORM umožňuje snadno přenášet aplikaci mezi různými databázovými systémy.
  4. Bezpečnost: Pomáhá předcházet útokům, jako je SQL injection.

Nevýhody ORM:

  1. Výkon: ORM může být pomalejší než ručně psané SQL dotazy.
  2. Složitost: Pro složitější dotazy může být ORM méně intuitivní.
  3. Náročnost na zdroje: ORM knihovny mohou být těžkopádné, pokud nejsou správně optimalizovány.

Doctrine ORM

Doctrine je jedním z nejpopulárnějších ORM nástrojů v PHP. Nabízí pokročilé funkce a flexibilitu, díky čemuž je oblíbený v komunitě vývojářů.

Klíčové vlastnosti Doctrine:

  1. Entity Manager: Slouží jako hlavní brána pro práci s databází.
  2. Podpora pokročilých vazeb: Doctrine zvládá složité relace mezi tabulkami, jako jsou mnoha na mnoho (many-to-many).
  3. Přenositelnost: Doctrine podporuje více databázových platforem.
  4. Query Builder: Poskytuje výkonný nástroj pro vytváření dynamických dotazů.

Doctrine je populární ORM nástroj pro PHP. Poskytuje robustní nástroje pro mapování entit na databázové tabulky a podporuje pokročilé funkce, jako jsou vztahy mezi tabulkami nebo lazy loading.

Ukázka práce s Doctrine – definice pro moderní verze PHP(7,8):

use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
#[ORM\Table(name: "products")]
class Product
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column(type: "integer")]
    private int $id;

    #[ORM\Column(type: "string")]
    private string $name;

    #[ORM\Column(type: "decimal", precision: 10, scale: 2)]
    private float $price;

    // Gettery a settery
}

Dotaz na data:

$product = $entityManager->find(Product::class, 1);
echo $product->getName();

Starší verze zápisu:

/** @Entity */
class User {
    /** @Id @GeneratedValue @Column(type="integer") */
    private $id;

    /** @Column(type="string") */
    private $name;

    public function getId() {
        return $this->id;
    }

    public function getName() {
        return $this->name;
    }

    public function setName($name) {
        $this->name = $name;
    }
}

// Použití Entity Manageru
$user = new User();
$user->setName('John Doe');
$entityManager->persist($user);
$entityManager->flush();

Další populární ORM knihovny

Propel ORM

Propel je další známý ORM nástroj, který nabízí lehčí alternativu k Doctrine. Je vhodný pro menší projekty nebo tam, kde je důležitá jednoduchost.

Výhody Propelu:

  • Snadná konfigurace a použití.
  • Podpora automatické generace tříd z existující databáze.
  • Menší nároky na výkon.

Nevýhody:

  • Méně funkcí ve srovnání s Doctrine.
  • Slabší komunita a podpora.

Eloquent ORM

Eloquent je ORM knihovna používaná v rámci Laravel frameworku. Je známá svou jednoduchostí a intuitivním API.

Výhody Eloquentu:

  • Silná integrace s Laravelem.
  • Snadná práce s relačními daty pomocí metod jako hasOne, belongsTo.
  • Podpora lazy loadingu.

Nevýhody:

  • Závislost na Laravelu.
  • Méně vhodný pro projekty mimo Laravel ekosystém.

Srovnání

VlastnostDoctrinePropelEloquent
FlexibilitaVysokáStředníStřední
VýkonPrůměrnýLepšíDobrý
Komunita a podporaSilnáSlabšíVelmi silná
JednoduchostNáročnějšíJednoducháVelmi snadná
Podpora vazebPokročiláZákladníPokročilá

Kdy použít Doctrine a kdy jinou knihovnu?

  • Doctrine: Ideální pro komplexní aplikace, kde je potřeba pokročilá práce s relačními daty.
  • Propel: Vhodný pro menší projekty nebo tam, kde je důležitá jednoduchost.
  • Eloquent: Nejlepší volba, pokud používáte Laravel framework.

Závěr

Výběr správného ORM závisí na konkrétních požadavcích projektu. Doctrine nabízí maximální flexibilitu a pokročilé funkce, ale může být náročné na učení. Propel poskytuje jednoduchost a výkon pro menší projekty, zatímco Eloquent je perfektní pro ty, kdo se pohybují v ekosystému Laravel. Bez ohledu na to, který nástroj si zvolíte, ORM vám umožní efektivněji pracovat s databázemi a soustředit se více na logiku aplikace.