NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 8 - Výpis článků z databáze v PHP (MVC)

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Michal Bažant
Matúš Petrofčík:20.4.2016 17:52

Ahoj, ak si dobre pamätám, tak paginácia sa rieši až v ďalšom seriáli Kompletní e-shop v PHP (Mistrovství MVC) .

Inak počet dodazov vrátených obmedzíš v SQL klauzulou /snad spravne/ LIMIT. Napr.:

SELECT FROM tabulka LIMIT 10
Editováno 20.4.2016 17:55
Odpovědět
20.4.2016 17:52
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:14.10.2016 10:02

a

Editováno 14.10.2016 10:05
 
Odpovědět
14.10.2016 10:02
Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:14.10.2016 10:13

Docela mě štvalo, že můsí být projekt (vlastněani není založen) v rootu a nemůže být v nějaké podsložce. Tak jsem trochu upravil kód a jede to.
Úpravy jsou tyto:

  1. vše se přehraje do adresare podslozka:
  2. do Kontroler.php se přidá proměnná:
protected $pod_slozka = 'podslozka/';

a ve funkci presmeruj($url) se změní první řádek na

$url = $this->pod_slozka . $url;

to je proto ať přesměrovává na podsložku.

  1. do SmerovacKontroler se do funkce parsujURL přidá za řádek za řádek, kde je ltrim
$naparsovanaURL["path"] = ltrim($naparsovanaURL["path"], $this->pod_slozka);

To je kvůli tomu, ať se zahodí podsložka z parsování.

  1. pak se všude (zatím do rozlozeni.phtml a clanek.phtm) předřadí před složku tento kód
<?= $pod_slozka ?>

Např.:

<li><a href="<?= $pod_slozka ?>clanek/uvod">Úvod</a></li>

To je proto, ať linky odkazují na podsložky.
Vše jsem dělal NetBeans. Je to založeno jako normální projekt s názvem podslozka (u mně je to MVCMag).
Jen spouštění je nastaveno na localhost/MVCMag bez index.php.
Pro produkci se pak změní v kontroleru proměná $pod_slozka na prázdnou hodnotu a je to.

 
Odpovědět
14.10.2016 10:13
Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:14.10.2016 10:31

Ještě doplnění, bez čehož by to nefungovalo:
Tam kde se předávají data do zobrazení je třeba doplnit řádek

$this->data['pod_slozka'] = $this->pod_slozka;

Tj. do SmerovacKontro­ler.php a ClanekKontroler.php funkce

public function zpracuj($parametry)
 
Odpovědět
14.10.2016 10:31
Avatar
sam hud
Člen
Avatar
sam hud:5.11.2016 16:36

Ahojte všetci. Testujem kompletný zdroják k tomuto tutoriálu a s jednou vecou si neviem rady. Pridal som dva podobné články klasicky z web rozhrania a potom som chcel ten prvý oodstrániť, a :

  1. Vo výpise článkov ten článok stále existuje
  2. Keď na to kliknem a chcem ho otvoriť, zobrazí sa Chyba 404
  3. Pri kontrole phpMyAdmina tam ten článok stále je

... Z toho vyplýva, že systém nepozná url, ale v databáze nechýba článku nič, aj svoju url má. Zaujímavé sú ďalšie dve veci :

  1. Obidva články majú rovnakú url
  2. Druhý, ktorý nebol odstránený sa po kliknutí zobrazí korektne

Zdroják som okrem pripojenia na databázu a style.css nijak neupravoval.
Poraďte mi prosím vás, ako mám upraviť kód, aby sa po kliknutí článok naozaj odstránil a aby sa odstránil aj údaj z výpisu článkov.
Vďaka za pomoc.

Odpovědět
5.11.2016 16:36
Kde je vule, tam je i cesta
Avatar
Veronika Karásková :6.5.2017 13:10

Ahojte, prosím o radu s podmínkou, kde k zástupnému znaku ? potřebuji přidat "%-?-%", abych mohla filtrovat datum podle měsíce tj. duben "%-04-%". Takhle mi to nefunguje, děkuji za radu.

public function vratMesic($mesic)
{
        return Db::dotazVsechny('
                SELECT *
                FROM `dochazka`
                WHERE `datum` LIKE "%-?-%"
                ORDER BY `datum`
        ', array($mesic));
}
 
Odpovědět
6.5.2017 13:10
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Veronika Karásková
David Hartinger:6.5.2017 13:28

Dej tam jen otazník a ta procenta dej do parametru, nějak takhle:

public function vratMesic($mesic)
{
        return Db::dotazVsechny('
                SELECT *
                FROM `dochazka`
                WHERE `datum` LIKE ?
                ORDER BY `datum`
        ', array('%-' . $mesic . '-%'));
}
Odpovědět
6.5.2017 13:28
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Veronika Karásková
David Hartinger:6.5.2017 13:32

Jinak by stálo za to použít MySQL funkci MONTH(), od toho tam je:

public function vratMesic($mesic)
{
        return Db::dotazVsechny('
                SELECT *
                FROM `dochazka`
                WHERE MONTH(`datum`) = ?
                ORDER BY `datum`
        ', array($mesic));
}
Odpovědět
6.5.2017 13:32
New kid back on the block with a R.I.P
Avatar
Veronika Karásková :6.5.2017 14:02

Moc, moc děkuji, zkoušela jsem stovky způsobů i MONTH, ale já blbec tam nedala závorky. Ještě jednou moc děkuji. :-)

 
Odpovědět
6.5.2017 14:02
Avatar
Libor Sitek
Člen
Avatar
Libor Sitek:16.8.2017 13:46

Jen jsem si všiml drobné chyby v ukázce kódu u třídy ClanekKontroler, kde se nastavuje hlavička stránky:

'popis' => $clanek['popis']

Správně tam má být:

'popis' => $clanek['popisek']
Odpovědět
16.8.2017 13:46
Když se chce, hledá se jak, když se nechce, hledá se proč
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 75.