Autor | Zpráva | ||
---|---|---|---|
Manu Profil * |
#1 · Zasláno: 24. 3. 2009, 18:05:31
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 |
#2 · Zasláno: 24. 3. 2009, 22:32:23
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 |
#3 · Zasláno: 24. 3. 2009, 22:40:19
Manu
Špatná organizace databáze. Správně je to takto: tblClanky ID, nadpis .. ... . tblRubriky ID, nazev .. .. .. tblClankyvRubrikach IDclanku, IDrubriky |
||
Manu Profil * |
#4 · Zasláno: 25. 3. 2009, 12:08:01
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 * |
#5 · Zasláno: 25. 3. 2009, 12:23:42
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 |
#6 · Zasláno: 25. 3. 2009, 12:25:29
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 * |
#7 · Zasláno: 25. 3. 2009, 12:50:40
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 |
#8 · Zasláno: 25. 3. 2009, 16:52:04
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ž. |
||
Časová prodleva: 15 let
|
0