Topic: Kaip padaryt kad uzklausa nesikartotu?

Turiu tokia uzklausa:

$uzklausa = mysql_query("UPDATE lentele SET kazkas=kazkas+50 WHERE id='".$id."') or die (mysql_error());

Tik man reikia kad ji butu vykdoma tik viena karta, ta prasme kad negalima butu po refresh pakartoti to pacio per ta pati, gal bus pasiulymu? :|

Re: Kaip padaryt kad uzklausa nesikartotu?

čia jau tada sausainius kišk vartotojui ir tada pagal juos tikrink arba dar ką nors kita galvok, šiaip klausimas labiau skirtas PHP, bet ne SQL ;)

Re: Kaip padaryt kad uzklausa nesikartotu?

Taip, čia reikėtų su PHP jau kontroliuoti. Dažniausiai daromas redirect'as. Arba, kaip sakė kik, po užklausos į sausainiuką (COOKIE) įrašai ką nors, kasleistų vėliau identifikuoti, kad operacija jau atlikta, o prieš atliekant operacija tą patį sausainiuką tikrini.

Re: Kaip padaryt kad uzklausa nesikartotu?

minde wrote:

Taip, čia reikėtų su PHP jau kontroliuoti. Dažnoiausiai daromas redirect'as. Arba, kaip sakė kik, po užklausos į sausainiuką (COOKIE) įrašai ką nors, kas leistų vėliau identifikuoti, kad operacija jau atlikta, o prieš atliekant operacija tą patį sausainiuką tikrini.

Būtent taip ir padariau "redirektą", dekui uz patarimus.
noreciau padaryt taip kad i ta uzklausa negaletu 1 zmogus grizti tarkim valanda :|

Re: Kaip padaryt kad uzklausa nesikartotu?

Tai pradėkim nuo to, kad tu papasakoji, ką pagal save laikai "vienu žmogumi". Pagal IP, "sausainiuką", prisijungimą ar dar ką. Tada bus galima galvoti kaip tu jį identifikuoji ir kaip sukontroliuoti veiksmus.

Re: Kaip padaryt kad uzklausa nesikartotu?

minde wrote:

Tai pradėkim nuo to, kad tu papasakoji, ką pagal save laikai "vienu žmogumi". Pagal IP, "sausainiuką", prisijungimą ar dar ką. Tada bus galima galvoti kaip tu jį identifikuoji ir kaip sukontroliuoti veiksmus.

Tai mano saito registruotas narys, kiekvienas ju turi savo ID - tai ir butu identifikavimas.

Re: Kaip padaryt kad uzklausa nesikartotu?

Na tai toks paprastas būdas (nesigilinant į kitas aplinkybes) būtų prie vartotojo lentelės (ar kitoje tinkamoje vietoje) pridėti stulpelį, kuriame įrašytum datą, kuri rodytu, kada paskutinį kartą buvo vykdoma užklausa. Prieš vykdant užklausą tikrintum tą lauka: ar jame yra laikas ir jeigu yra tai ar tas laikas pakankamai senas, kad galėtum vykdyti užklausą vėl. Jeigu užklausą vykdyti galima tai po jos vykdymo turi vėl tą lauką atnaujint su nauju laiku.

Re: Kaip padaryt kad uzklausa nesikartotu?

minde wrote:

Na tai toks paprastas būdas (nesigilinant į kitas aplinkybes) būtų prie vartotojo lentelės (ar kitoje tinkamoje vietoje) pridėti stulpelį, kuriame įrašytum datą, kuri rodytu, kada paskutinį kartą buvo vykdoma užklausa. Prieš vykdant užklausą tikrintum tą lauka: ar jame yra laikas ir jeigu yra tai ar tas laikas pakankamai senas, kad galėtum vykdyti užklausą vėl. Jeigu užklausą vykdyti galima tai po jos vykdymo turi vėl tą lauką atnaujint su nauju laiku.

Dėkui už pagalba, man tai dar per sunku.. :)