PDA

View Full Version : سوال: تشخیص دستکاری شدن چک باکس در پاس صفحه



h.alizadeh
چهارشنبه 28 مهر 1389, 00:53 صبح
سلام،

میخواستم بدونم چطوری بفهمم کاربر مقدار چکباکسی در فرم رو تغییر داده؟(ممکنه صفحه چندبار رفرش بشه میخوام اگر هم در یک رفرش اگر چک باکسی مقدارش تغییر کرده من دیگه کلا بدونم که تغییر دستکاری شده.)
با دستور:

if( (isset($_POST['level2']))
فقط وقتی trueمیشه که کاربر تیک زده باشش ولی من میخوام بفهمم ایا اصلا کاربرتغییری در وضعیته چک باکس داده است؟

واضحتر بگم:
یک فرم ویرایش دارم که از بانک مقدار فیلدهامو میخونم و چک باکس هایی که در رکورد مربوطه تیک خورده رو تیک دار نشون میدم.
حالا من میخوام وقتی کاربر مقدار چک باکسی رو تغییر داد دیگه با رفرش صفحه اون تغییرات کاربرنشون داده بشه.

برای وضوح بیشتر منظورم کدتکست باکسم اینگونه س:

<input type="text" name="txtmobile" maxlength="150" size="20"
value="<?php echo (isset($_POST['txtmobile']) ? $_POST['txtmobile'] : $oldmobile); ?>" />

حالا برای چک باکس نمیدونم چکار کنم، اینجوری نوشتم :

<input type="checkbox" name="level2" value="2" <?php
if( (isset($_POST['level2'])) || ((!isset($_POST['level2'])) && ($oldlevel2)) )

{?> checked <?php } ?>/>
ولی درست کار نمیکنه.
اینجور یکه نوشتم دفعه اول بعله همه رو درست از بانک نشون میده ولی وقتی صفحه رفرش بشه اون چک باکس هایی که کاربر الان تیک زدشون و اون چک باکس هایی که از قبل توی بانک تیک خورده هست رو تیک دار نشون میده! که اشتباه س و مدنظر من اینه فقط اون چکباکس هایی که هم اکنون تیک خوردند رو نشون بده.


//امیدوارم منظورم رو خوب رسونده باشم.

funpatogh
چهارشنبه 28 مهر 1389, 01:30 صبح
میشه یکم وااضح تر بگید
منظورتون این شکلیه؟


<?php
static $y;
if(isset($_POST['submit'])){
if(isset($_POST['tik']))
$y="checked";
else
$y=null;
}
?>
<form method="post">
<input type="checkbox" name="tik" value="y" <?php echo $y?>>Yes<br>
<input type="submit" name="submit" value="send">
</form>

h.alizadeh
چهارشنبه 28 مهر 1389, 10:23 صبح
ممنونم واقعاً ،مشکلم حل شد،

راستی من الان کدم درست شده و اجراشو اینا راحته، فقط من 12 تا کنترل چکباکس دارم گاهی که تغییرشون میدم، و میزنم روی دکمه ی ویرایش یکهویی خیلی طول میکشه گاهی تا پردازش انجام بشه گاهی می مبینم طول کشید دوباره روی همون دکمه ویرایش کلیک میکنم ممکنه سریع انجام بشه یا اگر یکی از چک باکس ها رو تغییر بدم و روی دکمه ویرایشم دوباره کلیک بزنم خیلی سریع انجام میشه (به نظرتون دلیلش چی میتونه باشه؟)
من مشکلی توی کدها نمی بینم.
و اینکه گاهی این مشکل بوجود مییاد! ممکنه از مثلاً xxamp باشه؟(اینم احتمالش خیلی کمه!)
من روی لوکال دارم تست میکنم!

binyaft
چهارشنبه 28 مهر 1389, 12:45 عصر
شاید سرعت پایین از به کاربردن if های زیاد است ( که فکر نکنم با این تعداد تاثیری داشته باشه )
از دستور switch استفاده کنید سریعتر است

h.alizadeh
چهارشنبه 28 مهر 1389, 13:23 عصر
$level[]="";
$anytik="0";
for($i=1;$i<=12;$i++)
{
if(isset($_POST['level'.$i]))
{
$anytik="1";
$level[$i]=1;
//break;
}
else
$level[$i]=0;
}
کدم اینطوریه .
راستی static $y;
استاتیک چه معنی ایی داره؟

funpatogh
چهارشنبه 28 مهر 1389, 21:40 عصر
بنده چون نمیخواستم از دیتابیس استفاده کنم و برای راحتی کار فقط بدونم منظور شما چی بوده از static استفاده کردم
وقتی متغییری استاتیک تعریف میشه مقدار رو توی خودش نگه میداره و به این معنی نیست که هر بار صفحه رفرش بشه باز هم مقدار توش میمونه
این مثال رو آنالیز کن تا دقیق متوجه بشوید


<?php
function test(){
static $y;
echo ++$y;
}
for($i=1;$i<=5; print test()."<br>",$i++);
?>