Autor Zpráva
fogo
Profil *
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
tak mi to prostě vyhodí všechny 3 věci pod sebe a to je to co nepotřebuju - potřeboval bych zajistit unikátnost - i když budu mít:
http://localhost/?stranky=1&categorie=1&clanky=1
- aby se zobrazila jenom ta stránka (v jinych variacích třeba jenom kategorie atd...)

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
elseif nebo switch
fogo
Profil *
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)
tak zůstane zobrazena jenom ta stránka - tak jsem to chtěl

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
- správně bych chtěl, aby to vypsalo právě jenom tu categorii - místo toho mi to však vypíše stránku s ID 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
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 *
díky moc, nakonec jsem to vyřešil pomcí isset a empty

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0