Autor Zpráva
Manu
Profil *
Ahoj, mám následující kousek kódu:
$sql=mysql_query("...");
 while($a=mysql_fetch_array($sql))
{
   $grep = explode(";", $a['sloupec']);
    if(in_array($_GET["rubrika"], $grep)) 
   {
      ...vypisu prispevky, ktere jsou jakoby v rubrice...
    }
}


a o co se snažím - selectovým menu vyberu kategorii, které si načtu do URL a z databáze tahám data a v případě, že vytáhnu informaci, která se tváří že patří do vybraného menu (je v poli znaků - parsuju explodem), vypisuji. A chci teď iudělat to, že když kliknu na kategorii a ona se v tom poli znaků, které tahám z DB nenachází, aby se mi vypsla o tom hláška. Bohužel se pohybuju v cyklu a tedy vytáhnu-li 10 hodnot a 2 patří do vybrané rubriky, vypíše se mi 8x že "Rubrika neobsahuje články." (při použití následujícího kódu - logicky):
$sql=mysql_query("...");
 while($a=mysql_fetch_array($sql))
{
   $grep = explode(";", $a['sloupec']);
    if(in_array($_GET["rubrika"], $grep)) 
   {
      ...vypisu prispevky, ktere jsou jakoby v rubrice...
    }
   elseif(!(in_array($_GET["rubrika"], $grep)) )
   {
      echo "Rubrika neobsahuje články";
    }
}
igamenir
Profil
asi bych jednoduše při vypisování příspěvku nastavil nějakou proměnnou $neco_vypsano na TRUE až následně porovnat a při FALSE vypsat.
Nicméně mi přijde zbytečné tahat veškeré příspěvky z databáze a porovnávat rubriky v php, určitě by šlo najít nějaké řešení, aby se vytřídily články přímo v databázi a query by ti vrátilo jen ty příspěvky, které už tam patří.
Tomasds
Profil
Manu
Špatná organizace databáze. Správně je to takto:

tblClanky
ID, nadpis .. ... .

tblRubriky
ID, nazev .. .. ..

tblClankyvRubrikach
IDclanku, IDrubriky
Manu
Profil *
Tomasds
určitě to není ideální, ale upravuju už hotové zaběhnuté řešení a chtěl bych najít nějaké řešení, ne to přeprogramovat...
Manu
Profil *
igamenir
Tomasds
tak jsem to vyřešil... $i jsem pořešil jako globální proměnnou... jen mě zajímá... všude čtu jak jsou ty globální proměnné rizikové... nenapsali byste mi proč?
Tomasds
Profil
Manu
Jestli ti jde jen o to, že se ti tvoje hláška "Rubrika neobsahuje články." opakuje x-krát, tak si před ten while dej $vypsathlasku = false; tam kde teď vypisuješ, dej $vypsathlasku = true; a až skončí while, použij jeden if. Ale jak říkám, jdeš na to špatně a vymstí se ti to.
Manu
Profil *
Tomasds
jj tohle už mám pořešené...

přemýšlím právě zda se to vyplatí přeprogramovávat, jestli se stěmi daty v DB bude manipulovat ještě jinak než teď - čili výpis, řazení...
AM_
Profil
Manu
Problém by nastal spíš pri vyšším vytížení - při hodně dotazech to bude pomalé.
Globální proměnné jako takové nejsou nebezpečné, to, co jsi četl je zřejmě o register_globals, tedy registrace položek superglobálních polí jako globálních proměnných, což je dávno zavrhnutá metoda. Deklarovat iterátor (předpokládám, že $i je řídící proměnná cyklu dle zvyklosti, nikde tu nevidím, že bys její význam vysvětlil) jako globální je spíš nesmysl než nebezpečné, ale budiž.

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: