Autor Zpráva
Petrbo123456
Profil
Zdravím

Nebudu se tajit, dělám domácí úkol a potřebuji radu/pomoc.

Jedná se o poslední domácí úkol a nějak nemohu dohledat, co mám řešit. Zadání je:
Napište společné funkce
1 Pro práci s databází vytvořte následují obecné funkce v souboru funkceDB.php. Ke každému bodu vytvořte maximálně jednu funkci s vhodnými parametry a použijte ji na všech místech, kde se daná databázová operace používá:
1.1 Připojení k databázi, zvolení databáze a nastavení kódování
1.2 Provedení MySQL příkazu, vrácení jeho výsledku a případné oznámení chyby při zpracování MySQL
1.3 Vrátí obsah celé tabulky
1.4 Vložení záznamu
1.5 Editace záznamu
1.6 Smazání záznamu
1.7 Zjednodušené vyhledání záznamů podle zadaného sloupce a jeho zadané hodnoty
2 Pro vykreslení stránky vytvořte následují obecné funkce funkceZobraz.php. Ke každému bodu vytvořte maximálně jednu funkci s vhodnými parametry a použijte ji na všech místech, kde se daná věc vykresluje:
2.1 Hlavička stránky
2.2 Menu stránky
2.3 Patička stránky
2.4 Tabulka s obsahem databáze
3 Doplňte další vhodné funkce hlavně pro kód, který často opakujete, ušetří to do budoucna práci.
4 Zajistětě, aby žádná funkce nebyla příliš dlouhá, maximálně 20 řádků. Pokud najdete funkci delší než 20 řádků, tak z vhodného kusu kódu uvnitř funkce vytvořte novou funkci, kterou zde budete volat. Příklad: funkce na zobrazení obsahu stránky (mezi hlavičkou a patičkou) má 40 řádků a postupně zobrazuje tři sloupce. Ke každému sloupci uděláme samostatnou funkci, kterou v obsahu jen zavoláme a vzniknou tak čtyři funkce s maximálně 20 řádky.
5 Každou funkci výstižně a stručně pojmenujete a napiště před ní komentář s popisem toho, co dělá, popisem vstupních proměnných a případného výstup

Studijní podpora v tomto případě neexistuje a jsem odkázán na internet. Na netu jsou ukázky funkcí, ale většinou se jedná o nějaké vypočtení dvou hodnot, případně spojení řetězců. Nemáte někdo příklady funkcí, ze kterých bych mohl čerpat? Například jak udělat funkci na připojení databáze? Vezmu všechny řádky, které řeší připojení databáze, zabalím je do jedné funkce a v místě kde připojení potřebuji ji jen zavolám?
Nebo mám například tabulku, kde se vypisují data z mysql databáze. Jak využiji funkci v pravém slova smyslu, abych voláním funkce odeslal i parametry?

Nějak v tom tápu a nezdá se mi, že je správné použití funkce ve smyslu, že jen vezmu část kódu a přesunu jej někam jinam a pak jen volám. To mi připadá vhodnější to třeba rozkouskovat a volat jen pomocí include...
Joker
Profil
Petrbo123456:
Pro začátek si můžete pročíst základní kurz na Péhápku: Základní kurz
Funkce jsou skoro až na konci, ale neuškodí si alespoň proletět i ty předchozí kapitoly.

Nějak v tom tápu a nezdá se mi, že je správné použití funkce ve smyslu, že jen vezmu část kódu a přesunu jej někam jinam a pak jen volám. To mi připadá vhodnější to třeba rozkouskovat a volat jen pomocí include...
Část odpovědi je napsaná ve zmíněné kapitole o funkcích na Péhápku: Návrh funkcí.

Zásadní výhoda funkcí oproti include je oddělení proměnných od zbytku kódu a možnost transparentně předávat hodnoty dovnitř a ven.
I když začátečníkovi to nejdřív může připadat jako nevýhoda, protože musí řešit nějaké parametry a návratové hodnoty, místo aby si jednoduše měnil nějakou sadu globálních proměnných.
Pokud to ale zkusí, přijde na to, že posílání hodnot z místa na místo v globálních proměnných vede ke špagetovému kódu, který prakticky není možné udržovat a enormní množství času zabírají problémy, kdy v globálních proměnných jsou neočekávané hodnoty a není možné zjistit, jak se tam vzaly.
juriad_
Profil *
Studuj Základní kurz 13: Funkce
Ano, na vypsání hlavičky a patičky by šlo použít include, ale co když chceš v hlavičce zobrazit různý titulek pro různé stránky? Pak by ten include vyžadoval parametr. Hm. Takže se vlastně snažíme o emulování funkce.
Viz Funkce vs inlclude pro argumenty, proč použít funkce.

Pro přístup k databáze použij funkce z rodiny mysqli_* (starší mysql_* ti práci stejně neušetří a není dobré se učit něco, co je zavržené už několik let). Pokud najdeš nějaké příklady s tím starším rozhraním, lze je snadno přepsat do nového většinou přídáním jednoho argumentu každé funkci. Některé zdroje také používají objecktový přístup například $db->connect, to pak stačí nahradit za mysqli_connect a podobně pro další funkce. Jaké přesně parametry tyto funkce mají najdeš v dokumentaci.

Nemáte někdo příklady funkcí, ze kterých bych mohl čerpat?
Varoval bych tě před slepou důvěrou v různé tutorialy na webu. Většinou jsou chybně. Nauč se pracovat s oficiálními dokumentacemi PHP a MySQL (anglicky snad umíš?).

Vezmu všechny řádky, které řeší připojení databáze, zabalím je do jedné funkce a v místě kde připojení potřebuji ji jen zavolám?
Víceméně tak. A zavoláš ji jen jednou a výsledek si zapamatuješ a budeš jej předávat všem dalším funkcím, které něco dělají s databází.

Jelikož je to úkol, nejspíš ti moc nebudeme chtít dávat své kusy kódu. Ale na druhou stranu, pokud sem něco napíšeš ty, dočkáš se poznámek, co je špatně a jak to udělat lépe.
Těch striktních limitů na 20 řádek si zpočátku nevšímej a piš, tak jak je ti to přirozené.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: