Autorius Tema: ištraukia iš db reikšmę ir prie jos pridėtu +1  (Skaityta 841 kartus)

eXpire

  • Svečias
ištraukia iš db reikšmę ir prie jos pridėtu +1
« Įrašytas: 2012-08-22 08:45:39 am »
Netbeans visai patiko, turiu dar 1 bėdą, niekaip negaliu parašyti tokio "kodo" kuris ištrauktu iš db reikšmę ir prie jos pridėtu +1... Patarimai?

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #1 Įrašytas: 2012-08-22 09:03:44 am »
Netbeans visai patiko, turiu dar 1 bėdą, niekaip negaliu parašyti tokio "kodo" kuris ištrauktu iš db reikšmę ir prie jos pridėtu +1... Patarimai?

o turi koda kuris istraukia is db reiksme ir ja tiesiog atspausdina?

p.s. 1 tema = 1 klausimas.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

eXpire

  • Svečias
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #2 Įrašytas: 2012-08-22 09:23:17 am »
Atsiprašau, taip tam naudoju :

$query = "SELECT * FROM users WHERE username='$username'";
$result = mysql_query($query);
$turnsai = mysql_result($result,'0','turns');

print $turns;

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #3 Įrašytas: 2012-08-22 09:54:43 am »
tai dabar padidink 1 ir issaugok :)

<?php
$turns
++;
$query "UPDATE users SET turns=$turns WHERE username='$username'";
mysql_query($query);
?>

Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Manualai.lt Forumas

Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #3 Įrašytas: 2012-08-22 09:54:43 am »

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #4 Įrašytas: 2012-08-22 10:16:39 am »
O kam 2 uzklausos? galima juk su viena.
UDPATE users SET turns = turns + 1 WHERE username = '$username'
Ir taip, eXpire, NetBeans cia ne prie ko :)

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #5 Įrašytas: 2012-08-22 10:22:32 am »
O kam 2 uzklausos? galima juk su viena.
UDPATE users SET turns = turns + 1 WHERE username = '$username'
Ir taip, eXpire, NetBeans cia ne prie ko :)

netbeans'as liko is kitos temos, nes cia kirpau vidury temos :)

ir beja, man bent jau neveikia toks query:


UDPATE table SET row = row + 1 WHERE id = 111
Citata
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
« Paskutinį kartą keitė: 2012-08-22 13:45:54 pm sukūrė Lukas Liesis »
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #6 Įrašytas: 2012-08-22 14:45:59 pm »
Turėtų veikti. Man va ir toks veikia:

mysql_query(" UPDATE ps_product SET price=price/100*$sk where id_product='$idas' ")

Žinau, kad jeigu SET price='price+10'  toki naudosi, t.y. jame bus kabutės, tada nepridės sumos ir bus klaida, bet jeigu nededi ČIA kabučių, tada suskaičiuoja gerai.


Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #7 Įrašytas: 2012-08-22 14:56:34 pm »
nezinau, man nesuveike ir padariau iprastai su 2 query :) cia tokie query, kad nieko tokio ar 1 ar 2..
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

eXpire

  • Svečias
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #8 Įrašytas: 2012-08-22 15:15:38 pm »
<?php
$turns++;
$query = "UPDATE users SET turns=$turns WHERE username='$username'";
mysql_query($query);
?>

puikiai veikia, ačiū :) o labai neapkrausiu taip duombazės su tokiu dažnu update?
« Paskutinį kartą keitė: 2012-08-22 15:17:41 pm sukūrė eXpire »

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #9 Įrašytas: 2012-08-22 15:17:33 pm »
Lukai, bendru atveju tai yra labai negerai. Kam naudoti papildomus resursus :) o tau neveikia, gal 'row' koks nors rezervuotas žodis. Ir ten juk ne row turi būti, o column'as. Ir jei MySQL meta tokį error'ą, tai turėtų dar pasakyti NEAR kas tas error'as yra.
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #10 Įrašytas: 2012-08-23 08:26:40 am »
Lukai, bendru atveju tai yra labai negerai. Kam naudoti papildomus resursus :) o tau neveikia, gal 'row' koks nors rezervuotas žodis. Ir ten juk ne row turi būti, o column'as. Ir jei MySQL meta tokį error'ą, tai turėtų dar pasakyti NEAR kas tas error'as yra.

jei pas mane butu tos uzklausos kazkokios dideles, tai jo ,negerai, o dabar tai yra 100 kitu vietu kur labiau reiktu optimizuoti, nei jaudintis del keliu micro sekundziu :) beja, idomu kuris metodas visgi greitesnis, ar kad php istraukia, prideda, saugo ar kad tai padaro sql. Vistiek sql tikriausiai ta pati padaro..
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

eXpire

  • Svečias
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #11 Įrašytas: 2012-08-23 08:55:51 am »
Pasidariau job`ą sql ir tenais paleidau tokį koda UPDATE users SET turns + 1 , nes tai liko iki šiol nebaigta ir su 30sec problema. o dabar viskas išspresta. :)

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #12 Įrašytas: 2012-08-23 09:23:55 am »
nepatingejau ir padariau testa su 1 uzklausa ++ ir su 2 :) stai rezultatai:



<?php
$start 
microtime(true);
mysql_connect('localhost''root''');
mysql_select_db('test');

/*
Part 1: fill up db

done in: 4.6940159797668
done in: 4.5869679450989
done in: 4.5944230556488
done in: 4.9758579730988
Users in DB:  995 total

for($i = 0;  $i < 100; $i++){
$name = uniqid();
$sql = "INSERT INTO `test`.`users` (`id`, `name`, `sum`) VALUES (NULL, '$name', '0');";
mysql_query($sql);
}
*/

/*
 +1 with 2 queries:
done in: 0.049468040466309
done in: 0.04981803894043
done in: 0.049790143966675
done in: 0.041701078414917
done in: 0.046210050582886
done in: 0.049381017684937
done in: 0.045538187026978
*/
/*
$user_id = rand(1,995);
$sql_1 = "SELECT *  FROM `users` WHERE `id` = $user_id";
$user = mysql_query($sql_1);
$user = mysql_fetch_object($user);
$sum = ++$user->sum;
$sql_2 = "UPDATE  `users` SET  `sum` =  '$sum' WHERE  `id` =$user_id;";
$result = mysql_query($sql_2);

*/

/*
+1 with 1 query :
done in: 0.086339950561523
done in: 0.060620069503784
done in: 0.043699026107781
done in: 0.045945882797241
done in: 0.06352710723877
done in: 0.12826800346375
done in: 0.049118041992188
*/
$user_id rand(1,995);
$sql_2 "UPDATE  `users` SET  `sum` =  sum+1 WHERE  `id` =$user_id;";
$result mysql_query($sql_2);

$done microtime(true) - $start;
echo 
'<hr />';
echo 
'done in: '.$done;
?>


taigi abu metodai duoda ta pati realiai greiti, bet vistiek su 1 uzklausa dazniau buvo ilgiau nei su 2, as rinkciausi visgi 2 uzklausu varianta ;p
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #13 Įrašytas: 2012-08-23 19:56:59 pm »
Na čia vėl gi nuo lentelės priklausyti gali, nuo įrašų skaičiaus, sudėtų indeksų ir pan. Nes atominių operacijų greitis bus toks pat, o užklausų mažiau. Teoriškai tikrai su 1 užklausa greičiau turi būti. Nelabai tikisi, pabandysiu kada ir aš prie progos.
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #14 Įrašytas: 2012-08-23 22:40:35 pm »
Na čia vėl gi nuo lentelės priklausyti gali, nuo įrašų skaičiaus, sudėtų indeksų ir pan. Nes atominių operacijų greitis bus toks pat, o užklausų mažiau. Teoriškai tikrai su 1 užklausa greičiau turi būti. Nelabai tikisi, pabandysiu kada ir aš prie progos.

Is esmes yra 4 skirtingi veiksmai: select, update, insert, delete ir poto visus sustresnius dalykus padaro php arba sql serveris (musu atveju, kai programinam su php) Tikrai daznai buna kad php greiciau padaro uzduoti uz sql serveri, aisku tai priklauso nuo sql/php serveriu konfiguracijos, sql lenteliu nustatymu ir pns, bet jei imt mazdaug default viska, tai tikrai su didelemis uzklausomis daznai php laimi, ne karta esu ta mates.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #15 Įrašytas: 2012-08-24 11:26:17 am »
Na taip, toliau viskas nuo aplinkos jau priklauso. Bet įdomus būtent šitas atvejis, su field + 1. :) pas tave antram teste su viena užklausa kažkodėl laiko išsibarstymas labai didelis. Čia lokaliai darei? Ar apkrova kompo buvo tokia pati per abudu testus? Na žodžiu, ant dienų irgi pabandysiu tai padaryt :)
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #16 Įrašytas: 2012-08-24 11:43:50 am »
Na taip, toliau viskas nuo aplinkos jau priklauso. Bet įdomus būtent šitas atvejis, su field + 1. :) pas tave antram teste su viena užklausa kažkodėl laiko išsibarstymas labai didelis. Čia lokaliai darei? Ar apkrova kompo buvo tokia pati per abudu testus? Na žodžiu, ant dienų irgi pabandysiu tai padaryt :)


viskas localhost 1 paskui kita tiesiog uzkomentavus 1 arba kita kodo dali :) kadangi id as pasiemu random, tai gali buti, kad antro testo metu buvo skirtumas ar id arciau lenteles pradzios ar pabaigos, nes is tirko rezultatu dispersija gan didele.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 895
  • Karma: +59/-2
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #17 Įrašytas: 2012-08-24 11:54:00 am »
Na tu ir pirmu atveju irgi darei tą patį update'ą, tik su jau paskaičiuota reikšme. Dėl to ir sakau, kad įdomu, kodėl atominių operacijų vykdymo laikas ant tiek skiriasi :)
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Manualai.lt Forumas

Ats: ištraukia iš db reikšmę ir prie jos pridėtu +1
« Atsakymas #17 Įrašytas: 2012-08-24 11:54:00 am »