Autor | Zpráva | ||
---|---|---|---|
fogo Profil * |
#1 · Zasláno: 6. 11. 2010, 00:38:38
Zdravím, potřeboval bych poradit s jedním porblémem - nejspíš to bude prkotin, ale nejsem schopen s tím hnout, takže můj problém je následujíc:
v jednom souboru řekněme index.php bych chtěl vypsat z mysql: if($stranky_menu){ /*vypíšu menu (to umím)*/ } if($categorie_menu){ /*vypíšu categorie, seřadím, vše jak potřebuji (to umím)*/ } a teď přichází kámen úrazu: if($stranky!=""){ /*sem si vypíšu stránku podle proměnné $stranky = $_GET['stranky'] - , vytvořím si podmínku, kde zjistím jestli taková stránka s číslem existuje - když jo vypíše mi stránku, když ne vyhodí mi hlášku, že stránka neexistuje */ } if($categorie!=""){ /*zjistím si podle proměnné $_GET['categorie'] - jestli je v db daná kategorie - pokud jo pokračuju podmínkou kde si vypíšu články jenom z dané kategorie pokud ne tak mi to vypíše, že kategorie neexistuje - to všechno ještě zvládám*/ } if($clanky!=""){ /*tady zopakuju to stejne jako u stránek, akorát se články, taky bez problémů*/ } a teď ten hlavní problém- když mám v adresním řádku http://localhost/?stranky=1&categorie=1&clanky=1 http://localhost/?stranky=1&categorie=1&clanky=1 fuj, šílenost co jsem napsal, ale kdyby někdo aspoň trochu věděl, jak na to tak bych byl fakt rád |
||
Keeehi Profil |
#2 · Zasláno: 6. 11. 2010, 00:42:39
|
||
fogo Profil * |
#3 · Zasláno: 8. 11. 2010, 10:17:39
no takže jsem tam hodil elseif
if($stranky!=""){ /*sem si vypíšu stránku podle proměnné $stranky = $_GET['stranky'] - , vytvořím si podmínku, kde zjistím jestli taková stránka s číslem existuje - když jo vypíše mi stránku, když ne vyhodí mi hlášku, že stránka neexistuje */ } elseif($categorie!=""){ /*zjistím si podle proměnné $_GET['categorie'] - jestli je v db daná kategorie - pokud jo pokračuju podmínkou kde si vypíšu články jenom z dané kategorie pokud ne tak mi to vypíše, že kategorie neexistuje - to všechno ještě zvládám*/ } elseif($clanky!=""){ /*tady zopakuju to stejne jako u stránek, akorát se články, taky bez problémů*/ } problém je v tom, že když třeba kliknu na stránku - http://localhost/?site=1 tak stránka naběhne, když za to dopíšu &catetgorie=1 ( http://loaclhost/?site=1&categorie=1) ovšem další problém přichází hned za tímhle: když to napíšu v obráceném pořadí: http://localhost/?categorie=1&site=2 Už mi to fakt leze na mozek neví někdo jak to vyřešit, i kdyby v tom adresním řádku bylo 100% proměnných, tak aby to prostě bralo jenom tu první ? a ten zbytek by to ignorovalo ? |
||
Tori Profil |
#4 · Zasláno: 8. 11. 2010, 10:54:46 · Upravil/a: Tori
Myslím, že pořadí parametrů v url je irelevantní (edit: pokud nemají shodné názvy). Ujasněte si logiku zpracování
- co má prioritu (budu nejdřív kontrolovat zadanou kategorii, nebo stránku?) - jestli jsou nějaké výjimky (pokud kategorie==2, zobrazím přímo zadanou stránku. U všech ostatních zobrazím kategorii s přehledem stránek) - jak má systém reagovat na chybějící data (kategorie==2 a platí předchozí výjimka, takže mám zobrazit pouze stránku. Co když chybí ID stránky?) Třeba si to nakreslete jako diagram nebo rozhodovací tabulku (mně to občas pomáhá ujasnit si koncept a najít shodné prvky). Co se týče výjimek, dá se celá logika uzavřít do do-while, aby se mohlo přerušit zpracování při výjimce: do { // nejdřív kontroluji kategorii if ($kategorie) { // pokud kategorie == 2, zobrazím přímo zadanou stránku. U ostatních zobrazím výpis stránek v kategorii. if ($kategorie == 2) break; // Pokud je nezadané nebo chybné ID, zobraz seznam článků v kat. if (empty($stranka) || !stranka_existuje($stranka)) // = nějaká funkce, která vrátí true | false. $stranka = 'vypis_clanku_kategorie' . $kategorie; // nebo přímo zobrazení výpisu stránek/článků. Nevím, zda ho máte samostatně. } else { // Nezadaná kategorie } } while (false); if ($stranka) { if (!stranka_existuje($stranka)) // špatné ID else // zobraz stránku } else // nezadané ID. Zobraz nějakou výchozí stránku. |
||
fogo Profil * |
#5 · Zasláno: 8. 11. 2010, 15:59:10
díky moc, nakonec jsem to vyřešil pomcí isset a empty
|
||
Časová prodleva: 13 let
|
0