Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, bandau toki dalyka padaryt kad kai laukeliai pasiekia skaiciu 5 automatiskai updeitina vartotojo taskus, prideda 1 taska, bet man kaskodel neveikia sitas daykas, kai tik 1 zmogus pasiekia iki 5 suveikia puikiai, bet kai pasiekia tarkim 3 vienu metu tada tik paciam pirmam updeitina o apie kitus pamirsta, o kai niekas nepasiekes dar 5 tada bando updeitinti niekam, o su if funkcija to neturejo buti, if man tikrina ar pasieke kaskas 5, nesuprantu kaskokia man cia mistika vyksta, kodas liktais tvarkyngas, prasau padekit kas suprantat :)

 

 

$task = dbquery("SELECT * FROM ".DB_PREFIX."kom_taskai WHERE t_st='5'");
$isvi = mysql_fetch_array($task);
if($isvi['user_name'] == 5){
dbquery("UPDATE " . DB_USERS . " SET user_taskai = user_taskai +1 WHERE user_name='" . $isvi['user_name'] . "'");
}

 

Atsiprasau uz gramatines klaidas, skubedamas rasiau ir klavetura stringa buna nepasispaudzia..

Redagavo AndriusKapara
Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. SQL kuriame yra integer kabuciu nedek. t_st='5' reiktu daryti t_st=5

2. If salyga neteisinga. Tu imi user name iš DB lenteles kom_taskai, ar jis ten tikrai yra toks laukas? Abejoju, geriausiu atveju user_id nebent durnas dizainas duomenų bazės padarytas. Kitas dalykas ne !=, o !==

 

Toliau neskaičiau, iš esmės darai ne taip. Yra SQL su kuriuo gali tai padaryti:

 

"UPDATE ".DB_USERS." U SET U.user_taskai = U.user_taskai + 1 WHERE U.user_name = ( SELECT B.user_name FROM ".DB_PREFIX."kom_taskai B WHERE B.t_st = 5 )"

 

Čia yra 1 SQL tai padarai, realiai netikrinau reiktu pasibandyti bet esmė tokia.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pasidariau, visgi nakti vakar jau galva nedirbo :) stai toki dalyka padariau ir veikt pradejo

buvo

if($isvi['user_name'] == 5){

padariau

if($isvi['t_st'] === "5"){

 

1. SQL kuriame yra integer kabuciu nedek. t_st='5' reiktu daryti t_st=5

2. If salyga neteisinga. Tu imi user name iš DB lenteles kom_taskai, ar jis ten tikrai yra toks laukas? Abejoju, geriausiu atveju user_id nebent durnas dizainas duomenų bazės padarytas. Kitas dalykas ne !=, o !==

 

Toliau neskaičiau, iš esmės darai ne taip. Yra SQL su kuriuo gali tai padaryti:

 

UPDATE name_table1  A
SET A.cell1 = ( SELECT B.cell1
                FROM name_table2 B WHERE B.cell1 = 5 ) + 1

aciu uz bandyma padeti :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Vistiek ne optimaliai darai, reiškiasi pas tave taškai grąžinami kaip string reikšmė, nors turėtu būti integer, nes tai yra skaičius, čia pirmas dalykas, antras tas kad tiesiog neoptimalus sprendimo būdas toks.

na taip pas mane kaip string padaryta, o kodel turetu buti kaip integer padaryta?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Patikslinu tavo atveju SQL vienu kartu kuri gali padaryti:

 

"UPDATE	".DB_USERS." U SET U.user_taskai = U.user_taskai + 1 WHERE U.user_name = ( SELECT B.user_name FROM ".DB_PREFIX."kom_taskai B WHERE B.t_st = 5 )"

 

Tik ta konstanta DB_USERS neaiski, cia TABLE_USERS logiška kad turėtu būti, nes dabar skamba kaip users duomenų bazė atskira.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Sukurti naują...