Autor | Zpráva | ||
---|---|---|---|
Milan1236000 Profil |
#1 · Zasláno: 14. 7. 2015, 21:35:56
Zdravím,
mám tuhle strukturu: zakladnistranka.php, v ní require 'x.php';
v x.php <?php echo ('nějaký text ... require 'y.php'; ';?>
v y.php <?php echo ('nějaký text'); ?>
Při načtení stránky se zobrazí, že je chyba v souboru x.php na řádku, kde je require 'y.php'; .
Co je tam špatně? Ta samá chyba se zobrazuje i při odstranění echa v y.php nebo při výměně require 'y.php'; za ' . require 'y.php'; . ' .
|
||
lionel messi Profil |
#2 · Zasláno: 14. 7. 2015, 21:45:42
Milan1236000:
1. Zátvorky okolo reťazcov vypisovaných pomocou echo sú zbytočné, echo je jazyková konštrukcia, nie funkcia.
2. Správna verzia súboru x.php: <?php echo 'nějaký text'; require 'y.php'; ?> |
||
Keeehi Profil |
#3 · Zasláno: 14. 7. 2015, 21:54:25
Dá se vypisovat i "návratová hodnota" require, pak by tam mezi tím řetězcem a require musela být tečka. Ale předpokládám, že to není to, co ty chceš.
Ještě lionel messi zapomněl zmínit apostrofy které máš v tom kódu taky špatně. |
||
Milan1236000 Profil |
#4 · Zasláno: 14. 7. 2015, 22:16:20
lionel messi:
Já právě potřebuji text z y.php vypsat do x.php, které to potom vypíše na stránku. Dobrá, dám to sem přesně tak, jak to mám: zakladnistranka.php ... <body>... <?php require 'x.php'; ?> </body> ... x.php <?php echo 'text 1' . require 'y.php'; . ' pokračování textu 1'; ?> y.php <?php echo 'text 2'; ?> Keeehi: Kde přesně jsou špatně ty apostrofy? |
||
lionel messi Profil |
#5 · Zasláno: 14. 7. 2015, 22:27:29
Milan1236000:
x.php <?php echo 'text 1'; require 'y.php'; echo ' pokračování textu 1'; ?> |
||
Milan1236000 Profil |
lionel messi:
Tahle varianta mě také napadla, ale je problém, že to mám ještě složitější: x1.php, x2.php, ... A v každém právě jedno y.php. To bych to pak měl ještě složitější než teď: x1_1.php + y.php + x1_2.php, x2_1.php + y.php + x2_2.php, ... Proč vůbec nefunguje: <?php echo 'text 1' . require 'y.php'; . ' pokračování textu 1'; ?> |
||
Keeehi Profil |
#7 · Zasláno: 14. 7. 2015, 22:58:54
Require funguje zjednodušeně jako nahrazení. Vezme se soubor x.php, v něm se zjistí, že je řádek s require, takže ten řádek se smaže a na jeho místo se vloží celý obsah souboru y.php.
Pro představu: Soubor x.php echo "x1"; require "y.php"; echo "x2": Soubor y.php echo " y"; Tak se z toho vlastně vytvoří: echo "x1"; echo "y"; echo "x2"; Milan1236000: „To bych to pak měl ještě složitější než teď: x1_1.php + y.php + x1_2.php, x2_1.php + y.php + x2_2.php, ...“ Evidentně na to jdeš že špatné strany a někde ti něco hapruje v návrhu. Když nám řekneš, o co se snažíš místo používání pseudo x a y, tak ti budeme schopni poradit jak se to dá navrhnout lépe. |
||
Milan1236000 Profil |
Milan1236000, Keeehi:
Dobře, při nejhorším to tak udělám. Mám to asi takhle: zakladnistranka.php představuje klasickou stránku. x.php představuje záhlaví a menu, které se přidá na každou stránku (mám 5 verzí toho menu). y.php přidá pouze vyhledávač do záhlaví. Schválně jsem to nepřidal přímo do x.php, protože ten vyhledávač budu postupem času hodně upravovat, takže abych to nemusel dělat 5 krát u každého x.php |
||
Keeehi Profil |
#9 · Zasláno: 15. 7. 2015, 07:50:20
Milan1236000:
V tom případě je to jak jsme říkali my. require je samostatný příkaz který se do žádného echa necpe. Protože aby se vypsal jeho obsah, tak to je zaručeno automaticky, takže psát před něj ještě echo je chyba. |
||
Milan1236000 Profil |
#10 · Zasláno: 15. 7. 2015, 18:44:21
Ok. Díky za rady oběma.
|
||
yFang Profil |
#11 · Zasláno: 15. 7. 2015, 23:34:38
Milan1236000:
Ještě jde udělat tohle: a.php <?php echo 'a' . require 'b.php'; b.php <?php return 'b'; |
||
Keeehi Profil |
#12 · Zasláno: 15. 7. 2015, 23:44:20
yFangův kód je správný a funkční. Jen ho prosím Milane nikde nepoužívej. Musíš vědět přesně co děláš a proč to tak děláš, jinak ti to přinese jen problémy.
|
||
Časová prodleva: 10 let
|
0