Php

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Koudelnik
nováček
Příspěvky: 3
Registrován: listopad 23
Pohlaví: Nespecifikováno
Stav:
Offline

Php

Příspěvekod Koudelnik » 15 lis 2023 23:55

Zdravím,

nejsem člověk co dokáže dobře vysvětlovat věci, proto se to budu snažit pospat co nejjednodušeji.
Tvořím stránku v php. Na její tvorbu používám architekturu mvc. V mvc nejsem až tak prakticky zběhlej, proto jsem se rozhodl jí použít, abych si jí lépe naučil.
Popíšu tedy slovy co se snažím vytvořit. Mam tedy soubor s názvem index_model.inc.php, který slouží pro získaní dat z databáze viz. příloha. Poté Mám soubor.index.inc.php, ve kterém se "jakoby snažím projit model s viewem viz. příloha". Tedy do proměnné uložím data z modelu a snažím se je poslat do viewu. Dále mam tedy view, kde příjmam data z předešlého souboru do funkce a následjně jej chci vyspat na stránku. Vypsání na stránku, provádím volání funkce ze souboru view přímo v index.php(tedy stránce kde mam html kod..). Stále dostávám tento error "Warning: foreach() argument must be of type array|object, null given in C:\xampp\htdocs\TIS\view\index_view.inc.php on line 10". Někde se mi ty data z databáze zasekavají a já nevím kde. Byl bych rád za jakékoliv rady.
Díky
3.png
2.png
1.png
4.png

Reklama
Serg01
Level 1
Level 1
Příspěvky: 65
Registrován: červenec 21
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Php

Příspěvekod Serg01 » 16 lis 2023 15:13

Tak to vem popořadě:

1) Jdeš na stránku index.php
2) Spustí se skript index.php
3) Ten vloží několik souborů, které hned taky vykoná:
- config_session.inc.php
- check_session.inc.php
- output_films.inc.php
- index_view.inc.php
4) Zavolá funkci check_session()
5) Pak začne vypisovat HTML kód
6) Zavolá funkci display_films(), která je definovaná v index_view.inc.php, který je vložený, takže zatím v pořádku
7) Ale proměnná $films zatím nebyla nikde definovaná, je tedy NULL

Nevím co teda je v prvních třech includovaných souborech, hlavně v tom output_films.inc.php, dal jsi ukázku jen index.inc.php (který ale nejspíš nikde neincluduješ)

Jinak koncept MVC je takový, že jako první by se měl zavolat Controller (to je to, co propojuje Model a View), který udělá validaci požadavku (kontrola přihlášení, oprávnění atd), vytáhne požadovaný data z Modelu a předá je do View. Ty to máš zatím tak, že jako první skript je spuštěný rovnou View. A taky se u MVC často využívá OOP a autoloader. Zkus si o MVC najít nějaký článek - nevím jestli je tady na fóru dovolený radit konkrétní web.

Koudelnik
nováček
Příspěvky: 3
Registrován: listopad 23
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Php

Příspěvekod Koudelnik » 16 lis 2023 22:19

adadadad.png
No jde o to, že ten output_films.inc.php je kompletní kod (tedy model a view v jednom souboru) na výpis filmu do stránky. A já se snažím, teď to rozdělit do těch souborů jako index_model.inc.php, index_view.inc.php a index.contr.inc.php. Jenže někde mi hapruje to posílání dat mezi soubory a funkcemi.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Php

Příspěvekod CZechBoY » 28 lis 2023 20:54

Chybu tam na prvni pohled nevidim, zkus si to projit debuggerem nebo aspon var_dumpnout co je ve $films predtim nez to posles do view.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti