Vytiahnutie dát z DB a následné filtrovanie cez IF

Programovacie jazyky, rady, poradňa...
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa Michaelo »

Zdravím,

vždy som si myslel že mám celkom OK logiku, no asi som sa celý čas mýlil :D


Potrebujem pri vyťahovaní z DB filtrovať dáta tak, že ak sa KLAN != KLAN_USER nič neukáž, no ak sa KLAN != KLAN_USER ale UPLOADER == USER_NAME tak to zobraz. Nejako ma nenapadá ako to spraviť bez viacnásobného ifu.

Takto to mám teraz, no toto nezobrazí danú vec ani človeku ktorý ju uploadol ak sa už nenachádza v klane, v ktorom bol počas uploadu.

Kód: Vybrať všetko

if (($data['privacy'] == "private" && $user_name != $data['user']) || ($data['privacy'] == "clan" && $user_clan != $data['clan'])) { 
}else{
Zobraz čo treba
}
Ide mi hlavne o jednoduchý kód (hlavne pre server), keďže pri pár tisíckach requestov s XYZ ifmi, by si server užil svoje.

K :plus:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa audiotrack »

ako si môžeš myslieť že máš OK logiku, keď samotné podmienky tak komplikuješ že ich robíš celé znegované a výsledkom je prázdna vetva a všetko vykonávanie ide do else. Už len to je choré.
Tú podmienku si si napísal slovne, stačí to iba zapísať do podmienky. Presne ti to nenapíšeme, lebo nevieme tvoju logiku programu. To UPLOADER je čo zač? Je to ďalšia možnosť ako máš private a clan? Ako sa zistí aktuálny užívateľ /v akej premennej ho máš/?
print_name
Medium Expert
Medium Expert
Príspevky: 96
Registrovaný: 31 dec 2013, 15:11

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa print_name »

A čo takto?

if ( KLAN != KLAN_USER ) then { nič } else if ((KLAN != KLAN_USER) && (UPLOADER == USER_NAME)) { zobraz }
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa Michaelo »

O tom že to je znegované viem, ja chcem mať najprv funkčný kód a potom ho optimalizujem, snáď ma v tomto chápeš :)

UPLOADER = $data['user']
USER_NAME = $user_name

No aby si nepovedal, tak som to upravil.
Momentálne to mám takto:

Kód: Vybrať všetko

if (($data['privacy'] == "private" && $user_name == $data['user']) || ($data['privacy'] == "clan" && $user_clan == $data['clan']) || ($data['privacy'] == "public")){
    Sprav niečo
}else{
    if ($data['privacy'] == "clan" && $user_clan != $data['clan'] && $data['user'] == $user_name){
        Sprav to isté
    }
}
Fungovať to funguje, no ide mi o skrátenie kódu.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa *****HERO***** »

Michaelo napísal:Zdravím,
Potrebujem pri vyťahovaní z DB filtrovať dáta tak, že ak sa KLAN != KLAN_USER nič neukáž, no ak sa KLAN != KLAN_USER ale UPLOADER == USER_NAME tak to zobraz. Nejako ma nenapadá ako to spraviť bez viacnásobného ifu.

Kód: Vybrať všetko

if(KLAN != KLAN_USER){
    if(UPLOADER == USER_NAME){
        zobraz();
   }else{
        nic_neukaz();
   }
}
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa Michaelo »

Prave o to ide HERO, takto to mat nemozem, kedze PRIVACY moze byt nastaveny na PUBLIC, PRIVATE alebo CLAN.

Ten druhy kod funguje, len by som ho radsej skratil (naco mat 2x rovnaky kod na zobrazenie?)
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa S-player »

Kód: Vybrať všetko

if (($data['privacy'] == "private" && $user_name == $data['user']) || ($data['privacy'] == "clan" && $user_clan == $data['clan']) || ($data['privacy'] == "public")){
    Sprav niečo
}else{
    if ($data['privacy'] == "clan" && $user_clan != $data['clan'] && $data['user'] == $user_name){
        Sprav to isté
    }
}
Čo znamená "Sprav to isté"? To isté čo sa vykonáva v prvej podmienke po tom čo je pravdivá?
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: Vytiahnutie dát z DB a následné filtrovanie cez IF

Príspevok od používateľa Michaelo »

Zobrazí to isté čo pri prvej, správne.

Ide o to, že ak KLAN = XXX ale tvoj klan = YYY, tak by ti to zobraziť nemalo, no ak si tam daný súbor pridal ty, tak by ti to malo aj tak zobraziť.

Snáď sa chápeme.


//Edit.:

Vyriešené. môžete lock :)
Napísať odpoveď