PDA

View Full Version : چرا عملگر ++ در کد من دوتا واحد به متغیرم اضافه می کنه؟



kavoshgar63
شنبه 25 مهر 1388, 12:54 عصر
سلام
این تکه کد رو ببینید.

$newsCnt=$row['newscnt'];
$newsCnt++;
$query='UPDATE news SET newscnt='.$newsCnt.' WHERE newsid='.$_GET['newsId'];
$resultupdate=mysql_query($query);
این شمارنده بازدید از خبره که نمی دونم چرا عوض این که یکی اضافه کنه دو تا دو تا اضافه میشه؟

امیـرحسین
شنبه 25 مهر 1388, 14:50 عصر
منم شبیه همین مشکل رو داشتم. مطمئن بشید که تکه کد فقط یکبار اجرا میشه. مثلا با هربار اجرا یه حرفی تو یه فایل save کنید و بعد از یک بازدید ببینید چند تا حرف ذخیره شده.
اینجوری هم تست کنید:

$query='UPDATE news SET newscnt=newscnt+1 WHERE newsid='.$_GET['newsId'];

kavoshgar63
شنبه 25 مهر 1388, 15:57 عصر
این مشکل رو نمی دونم چطور میشه حل کرد کد شما هم جواب نداد

s_salavati2002
شنبه 25 مهر 1388, 17:57 عصر
این مشکل رو نمی دونم چطور میشه حل کرد کد شما هم جواب نداد
با جاوا اسکریپت مقدارتو alert بده ببین چی میشه یا
بلافاصله بعد از متغیرت die بده ببین چند میزنه


$newsCnt++;
die($newsCnt)

k2-4u.com
شنبه 25 مهر 1388, 20:11 عصر
با جاوا اسکریپت مقدارتو alert بده ببین چی میشه یا
بلافاصله بعد از متغیرت die بده ببین چند میزنه

همین کارو انجام بدین . چون این
مثله غیر طبیعیه .
نباید اینطوری بشه
یک چیزی هم تست کنید
اونم اینه که تبدیلش کنید به int شاید درست شد


settype($foo, "integer"); // $foo is now 5 (integer)

امیـرحسین
شنبه 25 مهر 1388, 23:13 عصر
با جاوا اسکریپت مقدارتو alert بده ببین چی میشه یا
بلافاصله بعد از متغیرت die بده ببین چند میزنه


$newsCnt++;
die($newsCnt)

کاملا ایده خوبیه.
اینجوری هم خوبه ولی مطمئنا مشکل از عملگر نیست. شرط میبندم این تکه کد دوبار اجرا میشه

$old = $newsCnt;
$newsCnt++;
die("orig: $newsCnt , old: $old");