PDA

View Full Version : (['']unset($_post چرا این دستور عمل نمیکنه؟



nassim_20
شنبه 24 شهریور 1386, 12:58 عصر
دوستان سلام
من یه صفحه سرچ دارم که بعد از اینکه کاربر فیلد جستجو رو پر کرد برای نمایش نتایج با دکمه go به صفحه مربوطه submit میشه و نتایج رو نشون میده نمایش نتایج بوسیله چک کردن شرط


if (isset($_POST['search']))

انجام میشه که اگر true باشه یه عملیاتی انجام میشه و نیز

unset($_POST['search']);
در غیر اینصورت عملیات دیگری انجام میشه
حال اگه بخواهم از طریق دیگری به صفحه رجوع کنم( که طبیعتا [$_POST['search'رو نباید داشته باشم ) ولی بعد اینکه (var_dump($_POST گرفتم [$_POST['search' رو جز متغیرهایش ذکر کرده بود نمی دونم مشکل کارم از کجاست؟
ایا دستور unset برروی متغییرهای پست عمل نمیکنه؟

peyman1987
شنبه 24 شهریور 1386, 14:24 عصر
آرایه POST_$ جزء متغیرهای سیستمیه. شما که نمیتونین این متغیرها رو از بین ببرین. در ضمن اصلا این کار به چه درد شما میخوره؟ اگه فرم رو سابمیت کنین این آرایه رو دارین و اگه بصورت دیگه ای وارد این صفحه بشین این آرایه رو ندارین دیگه لازم نیست از بین ببرینش.

oxygenws
شنبه 24 شهریور 1386, 14:38 عصر
آرایه POST_$ جزء متغیرهای سیستمیه. شما که نمیتونین این متغیرها رو از بین ببرین.
می تونند :)

peyman1987
شنبه 24 شهریور 1386, 19:01 عصر
چناب oxygenws درست میفرماین بنده اشتباه کردم الان امتحان کردم و دیدم که میشه این متغیرها رو unset کرد. پس مشکل شما توی دستورتونه احتمالا اشتباه نحوی دارین. ولی هنوز روی حرفم هستم که شما نیازی به unset این متغیر ندارین.

I,Nobody
شنبه 24 شهریور 1386, 20:24 عصر
سلام.
من نمی خوام بحث کنم که آیا unset کردن درسته یا نه.
و همچنین بررسی نکردم که ببینم مشکل کار کجاست.
فقط یه راه حلش اینه :


$_POST['search']=null;

nassim_20
شنبه 24 شهریور 1386, 20:39 عصر
مشکل اصلی من بر سر این بود که در جایی از برنامه اگر متغییر مربوطه ست شده باشد دستورات 1 انجام بشه در غیر اینصورت دستورات 2 و این مشکل رو از طریق دیگری برطرف کردم ولی همچنان مشکل unset کردم ادامه دارم
بهتر توضیح بدهم که من دو دکمه در صفحه دارم دکمه جستجو و دکمه دیگر نمایش محتویات صفحه که هر دو دکمه به یک صفحه سابمیت میشه زماینکه جستجو انجام میدم و بعد از اون دکمه نمایش رو می زنم در حالیکه unset کرده ام زمانیکه Printr می گیرم متغییر search رو جز ارایه پست ذکر میکنه (البته یک متغییر خالی) درحالیکه اولا من unset کرده ام و ثانیا با دکمه نمایش من اصلا متغیر search رو نفرستاده بودم

oxygenws
شنبه 24 شهریور 1386, 20:58 عصر
الان انتظار داری ما بفهمیم؟؟ سورس صفحه رو ینحا بذار ببینیم!!!
به نظر می رسه مشکل ایشون اصلا ربطی به unset و متعلقات نداشته باشه!!!

nassim_20
دوشنبه 26 شهریور 1386, 13:36 عصر
الان انتظار داری ما بفهمیم؟؟ سورس صفحه رو ینحا بذار ببینیم!!!
به نظر می رسه مشکل ایشون اصلا ربطی به unset و متعلقات نداشته باشه!!!
حق با شماست شاید توضیحات من کامل نیست ولی همانطور که گفتم من مشکلم رو از طریق یه متغییر کمکی دیگر برطرف کردم ولی همچنان این مشکل در جاهای دیگر خودنمایی می کنه که همانطور که گفتید احتمالا مشکل قبلی بر سر unset نبوده است
من قسمتی از صفحه رو می ذارم اگه ممکنه تستش کنید و بگید علت اشکالاتم کجاست؟
اشکلات:
1- زماینکه روی لینک جستجوی پیشرفته کلیک میکنم صفحه مربوطه "php.2" در صفحه اصلی (php.main") اظافه(include) میشه البته با یک شرط


if ($_GET['advance']=='1') {include ("2.php");

تا اینجا درسته ولی زمانیکه روی دکمه "بگرد" کلیک میکنه به صفحه مربوطه که من اینجا "2php" تعریف کرده ام submit نمیکنه
2- زمانیکه صفحه رو refresh می کنم پیغام میده

که البته تصور می کنم منشا این مشکلات یکی است.
اگر دوستان لطف کنند صفحه رو بررسی کنند بسیار ممنون می شوم

oxygenws
دوشنبه 26 شهریور 1386, 13:47 عصر
میشه به موارد دیگه کدت هم گیر داد؟؟! :)
البته اگه این کار رو بکنم یه ۴۰۰ تا ۵۰۰ خطی ایراد میشه :)

jhoseinii
دوشنبه 26 شهریور 1386, 14:51 عصر
شما داخل فایل main.php (خط 180) یه تگ <form> باز کردید، و بدون این که ببندیدش بعدش اومدید 2.php رو include کردید، بدیهیه که submit رو action فرم اول (که هن.ز بسته نشده) عمل کنه
----------------------
جناب I,Nobody
هیچ فرقی بین

$_POST['search']=null;

و

unset($_POST['search']);

نیست؟

oxygenws
دوشنبه 26 شهریور 1386, 15:10 عصر
هیچ فرقی بین نیست؟
فرق هست، در اولی حافظهء گرفته شده توسط متغیر آزاد نمی شه، ولی در دومی میشه.

یعنی عموما دومی بهتره و اگر در ادامهء کد به این متغیر نیازی نیست، روش اول اشتباه و احمقانه است.

nassim_20
دوشنبه 26 شهریور 1386, 15:28 عصر
ممنون دوست عزیز مشکل از همین جا بود و حل شد

I,Nobody
دوشنبه 26 شهریور 1386, 22:36 عصر
من خودم هم همیشه از روش دوم استفاده می کنم و به نظر من هم روش دوم خیلی مناسبتره( پس اخمق نیستم ) اگه متن پیاممو خوب خونده باشید، می بینید که اصلاً از استفاده روش دوم چشم پوشی کردم چون نمی دونستم مشکل دوستمون در استفاده از Unset هست یا نه.
و فقط خواستم اگه با unset مشکل داره، نتیجه بگیره و اگه هم مشکل از جای دیگه باشه، اونوقت زودتر معلوم بشه.
البته به نظر من اگه کسی هم از این روش و یا روش های اشتباه تر توی کد نویسی اش استفاده کنه، احمق نیست بلکه نا آگاه هست

jhoseinii
سه شنبه 27 شهریور 1386, 15:04 عصر
من خودم هم همیشه از روش دوم استفاده می کنم و به نظر من هم روش دوم خیلی مناسبتره( پس اخمق نیستم ) اگه متن پیاممو خوب خونده باشید، می بینید که اصلاً از استفاده روش دوم چشم پوشی کردم چون نمی دونستم مشکل دوستمون در استفاده از Unset هست یا نه.
و فقط خواستم اگه با unset مشکل داره، نتیجه بگیره و اگه هم مشکل از جای دیگه باشه، اونوقت زودتر معلوم بشه.
البته به نظر من اگه کسی هم از این روش و یا روش های اشتباه تر توی کد نویسی اش استفاده کنه، احمق نیست بلکه نا آگاه هست

ما که به گویش تند جناب اکسیژن داریم عادت میکنیم. گرچه این اصلا جالب نیست :افسرده: