Autor Zpráva
Joan
Profil
Zdravím poprvé tento rok a moc prosím o zkouknutí, zda mnou použitelný skript na skládání stránek pomocí dvou parametrů na pěkné URL je "php-gramaticky" dobrý. Chodí mi to s ním, ale protože si chci svoje hlavní stránky vbrzku překopat do této podoby, nerada bych to dělala od počátku s nějakou zbytečnou chybou. Zde se dá shlédnout myslím přehledný skript
Děkuji předem a ač v Brně prší, přeji všem ochotným příjemný den :-)
Alphard
Profil
Nikdo neodpovídá, žádnou chybu, která by měla ohrožovat funkčnost skriptu, tam nevidím, tak jen pár postřehů, které tady už dva dny sepisuji:

//aby se nezobrazovalo "Undefined index"
Spíš nastavení defaultní hodnoty, i když později ze scriptu plyne, že fakt jen nechcete, aby se při generování menu vypisovaly chyby. (Možná jsem sám, komu se zdá komentář "aby to neházelo chybu" divný :-) )

Ve funkci titulek() nepracovat se superglobální $_GET, ale předávat parametry. Je to univerzálnější, je vhodné konstruovat funkce tak, aby nebyly "magicky" závislé na vnějších proměnných.
Což je ale jen taková meziúvaha, titulky bych zadával u konkrétní stránky, udržovat nějaké externí pole nebude pohodlné.

V úvodu bych nepřepisoval $_GET['str'], ale zkopíroval si hodnotu do jiné proměnné a případně doplnil defaultní hodnotu. Opět kvůli univerzálnosti, později byste mohla chtít získat skutečnou hodnotu v get, ale už by to nešlo.

.htaccess se obvykle dělá maximálně jednoduchý a pak se vše rozebere až v php, umožňuje to komplikovanější routery, ale vám to zatím asi stačí.

Obecně se mi to zdá docela dobré, než člověk přejde na MVC návrh aplikace.
Joan
Profil
Alphard:
Velmi Ti děkuji za tvůj čas na odpověď! Vycházela jsem z tohoto návodu, včetně includování titulku.

Spíš nastavení defaultní hodnoty
Já jsem právě byla přesvědčená, že defaultní hodnota je právě ta hodnota "uvod" - při neexistenci korektní stránky...

Ve funkci titulek() nepracovat se superglobální $_GET, ale předávat parametry
Omlouvám se, pro mne jako samouka není PHP vůbec silná stránka, co prosím ta výše uvedená věta znamená? Resp. jak by vypadal nějaký příklad?

V úvodu bych nepřepisoval $_GET['str'], ale zkopíroval si hodnotu do jiné proměnné a případně doplnil defaultní hodnotu
Znamená to snad, že $_GET['str']=="uvod" mám nějak vložit do nově vytvořené proměnné?

.htaccess se obvykle dělá maximálně jednoduchý a pak se vše rozebere až v php
Ehm, on jde můj .htaccess ještě více zjednodušit?

než člověk přejde na MVC návrh aplikace
Co prosím znamená ta zkratka MVC? Nic mi to neříká...

Budu vděčná za Tvé odpovědi, abych se posunula dál. Moje chyba, nějak se zatím moc nechytám...
Bertram
Profil
Joan:
co prosím ta výše uvedená věta znamená?
Ahoj, znamená to, že není dobré uvnitř funkcí pracovat s globálními proměnnými, ale veškeré parametry předávat při volání funkce.
function titulek ($param1, $param2);

Znamená to snad, že $_GET['str']=="uvod" mám nějak vložit do nově vytvořené proměnné?
$str = $_GET['str'];
a dále pracovat s proměnnou $str

Co prosím znamená ta zkratka MVC?
Je to architektura aplikace Model-View-Controller
Alphard
Profil
Joan:
V podstatě ti odpověděl Bertram, jen doplním pár obrázků v MVC.
Tady je řekl bych původní MVC.
Pro webové použítí se často trochu modifikuje, např. ve stylu Nette MVP.
Cílem těchto návrhů je rozčlenit aplikační logiku do přehlednějších struktur. Hlavní využití je ve velkých projektech, ale jak se s tím člověk naučí, používá to všude. Mám chuť odkázat TOHLE. KURVA. ANI. OMYLEM. (http://phpfashion.com/tohle-kurva-ani-omylem náš geniální filtr nedovolí vytvořit odkaz), ale asi tomu nebudete zatím moc rozumět. Pak by člověk neřeší vůbec vaši výrobu routeru, ale definuje konkrétní podobu url a kód stránky napíše do konkrétní metody. Vše ovšem samozřejmě stojí na OOP.

Takže znovu říkám, body v [#2] nejsou výtky, spíš návrhy, co v budoucnu změnit.


Některé věci, které jsem se snažil ve stručnosti popsat, jsou v další díle návodu.
Joan
Profil
Přeji pěkné skoropoledne,
moc děkuji za Vaše odpovědi!
Zkusila jsem nové informace "přechroustat" - takže na samý začátek skriptu mám napsat $str = $_GET['str'] a dál už pokračovat pouze s touto proměnnou? (A samozřejmě totéž udělat i s druhou proměnnou pro druhou úroveň $vyber= $_GET['vyber']).

Tj.:
$str = (isset($str) ? $str : "uvod"); (nejsem si jistá potřebností závorek...)
a potom:

<ul id="menu">
<li><a href="/uvod/"<?php if($str == "uvod") echo ... atd. </a></li>

Názvy pro titulky lovím ve funkci z pole array. Omlouvám se, ale není mi vůbec jasné, jak tam dostanu nějaké parametry.

Alphard:
titulky bych zadával u konkrétní stránky, udržovat nějaké externí pole nebude pohodlné.
Každou stránku mám ve formátovaném DIVu. Rozumím tomu dobře, že nad tento DIV mám umístit přímo tag TITLE a do něj vepsat název stránky?

MVC je pro mě zatím hodně, hodně daleko :-)

Zatím díky a přeji pěkný den!
Alphard
Profil
Joan:
takže na samý začátek skriptu mám napsat $str = $_GET['str']
Já bych to preferoval. Ale zdůrazňuji, že to neříkám obecně pro kopírovaní ze superglobálních polí jak je někdy vidět. Jde čistě o případ dosazení defaultní hodnoty.
$str = isset($str) ? $str : "uvod";
Tady závorky nejsou potřeba, ale kdyby to bylo součástní řetězce, už by musely být.
$str = 'string'.(isset($str) ? $str : "uvod").'string';

Rozumím tomu dobře, že nad tento DIV mám umístit přímo tag TITLE a do něj vepsat název stránky?
Přímo tak jsem to nemyslel, ale prý to taky funguje. Bylo to ve FAQ než jsme moc plnili začátek a smazal se nám konec. :-/
Moje představa by byla spíš uložit obsah do proměnné a pak vypsat.

clanek.phtml:
<?php
$title = "Jak dostat titulek do html hlavičky";
ob_start();
?>
<p>Tady je normálně obsah článku</p>
<p>Libovolné html, ale klidně i php</p>
<?php
$obsah = ob_get_contents();  // já nemám bufferovací funkce moc rád, ale asi jediná
ob_end_clean();  // možnost jak umožnit psát normálně html a pak to dostat do proměnné
?>

index.php:
<?php
// tady je router
include "clanek.phtml"; // includuje se to, co řekne router

echo "<html>\n<head>\n<title>$title</title>\n</head>\n<body>\n$obsah</body>\n</html>";

Cílem toho všeho je dostat všechna data k jednomu článku do jednoho souboru. Ale jestli je chcete mít zvlášť v poli, klidně to tak může být.

Jestli budete nadále takto odpovídat do 3 dnů s novými dotazy, tak jsme za 3 roky u MVC :-)
Joan
Profil
Alphard:
Děkuji moc, s tím už se poperu. Sama bych to dohromady nedala, díky!
Hezký den.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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