• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با متد POST
#1
عرض سلام وخسته نباشید
من یک فرم طراحی کرده ام که اطلاعات یکی از جداول دیتابیس را سلکت کرده و در یک تیبل ساخته شده با تگ تیبل میریزم و جلوی هر کدام از سطر های این جدول نیز یک دکمه delete و یک دکمه edit قرار داده ام و به این دکمه ها name و id داده ام و همچنین به سطرها یعنی تگ td هم name داده ام. حال میخواهم وقتی دکمه delete زده شد آن سطر حذف و وقتی ادیت زده شد امکان ویرایش فراهم شود. آی دی آن سطر و نام دکمه را از طریق متد post ارسال می کنم ولی متغیر پست خالی است و مقداری داخل آن نیست. لطفا بنده را راهنمایی بفرمایید.
کد را ضمیمه کرده ام.
ممنون


فایل‌های پیوست
.txt   function.txt (اندازه 1.01 KB / تعداد دانلود: 7)
.txt   sourceCode.txt (اندازه 272 بایت / تعداد دانلود: 6)
  پاسخ
تشکر شده توسط :
#2
اول اینکه وقتی فرم مینویسی باید داخل تگ form باشه .
دوم اینکه شلخته پلخته نوشتی !
سوم اینکه یه چیز توی این مایه ها
کد پی‌اچ‌پی:
<?php
    
if( ! empty($_POST['post_id']) and $_POST['action']==='del')
    {
        
$post_id = (int) $_POST['post_id'];
        
mysql_query("delete from `post` where `id`={$post_id}");
    }
?>
<form action='' method=post>
    <input type=hidden value='1' name=post_id />
    <input type=hidden value='del' name=action />
    <input type=submit value='DELETE' />
</form> 
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : phpProgrammer1
#3
به چنتا چیز دقت نکردی
ابن که فقط متدهای value و name از تگ input در متد پست بر میگرده و دادن نام به تگ td چاره کارت نیست اگه تاکیدت رو ارسال با پسته باید برای هر سطر جدولت یه تگ form بنویسی و داخلش تو یه input مخفی شماره رکوردی که میخای عملیات ویرایشی روش انجام بدی و دوتا دکمه ویرایش و حذف
کد پی‌اچ‌پی:
<?php 
if (isset($_POST))
{
    if(
$_POST['btn']==='EDIT')
    {echo
"edit";
echo 
$_POST['record_id'];
}
    elseif(
$_POST['btn']==='DELETE')
    {echo
"delete";
echo 
$_POST['record_id'];
}
}
 
?>

<table>
<tr>
<td>
<form method="post">
<input type=hidden value='id' name="record_id" />
<input type=submit name="btn" value='DELETE' />
<input type=submit name="btn" value='EDIT' />
</form>
</td>
</tr>
</table> 
  پاسخ
تشکر شده توسط : phpProgrammer1
#4
(۱۳۹۱ مرداد ۳۰, ۰۴:۱۱ ق.ظ)sneaker نوشته: به چنتا چیز دقت نکردی
ابن که فقط متدهای value و name از تگ input در متد پست بر میگرده و دادن نام به تگ td چاره کارت نیست
ممنونم از راهنمایی کامل و جامعی که انجام دادید
حقیقت اینکه من تازه یک هفته هست پی اچ پی رو شروع کردم
خودم وقتی کد شما رو دیدم فهمیدم خیلی بد کد نوشتم البته پیشنهاد کسی بوده که برام توضیح داده
دیگه اینکه اصلا نمیدونستم متد پست فقط با تگ input کار میکنه از این بابت بسیار ممنونم
کارهایی رو که فرمدید انجام دادم همه چیز درسته و عملیات حذف و ویرایش انجام میشه و روی دیتابیس هم اعمال میشه فقط رو یک خط با وجود اجرا شدن خطا میده اونهم خط زیر هست:

کد پی‌اچ‌پی:
if($_POST['btn']=='DELETE'
ممنونم میشم راهنمایی بفرمایید
البته دعا میکنم بی دقتی نکرده باشم چون خیلی شرمنده میشم.

(۱۳۹۱ مرداد ۳۰, ۰۸:۲۵ ق.ظ)phpProgrammer1 نوشته: فقط رو یک خط با وجود اجرا شدن خطا میده اونهم خط زیر هست:

کد پی‌اچ‌پی:
if($_POST['btn']=='DELETE'
ممنونم میشم راهنمایی بفرمایید
البته دعا میکنم بی دقتی نکرده باشم چون خیلی شرمنده میشم.
الان خودم متوجه اشتباهم شدم
در if اولی که گذاشتم باید پارامتر btn پست رو چک کنم تا موقع لود شدن صفحه عملیات انجام نده و منتظر کلیک بر روی دکمه باشه


بازم یک دنیا ممنون

(۱۳۹۱ مرداد ۲۹, ۰۵:۵۹ ب.ظ)Reza نوشته: اول اینکه وقتی فرم مینویسی باید داخل تگ form باشه .
این نکته اول رو رعایت کردم ولی کدم رو ریفکتور که کردم تگ فرم رفته تو یک صفحه دیگه
(۱۳۹۱ مرداد ۲۹, ۰۵:۵۹ ب.ظ)Reza نوشته: دوم اینکه شلخته پلخته نوشتی !
این رو قبول دارم و بابت این تذکر سپاسگذارم خودم هم از نحوه کد نویسیم شکایت دارم ولی این نوع کد نویسی پیشنهاد کسی هست که منو با این زبان آشنا کرده و البته بنده یک هفته هست شروع کردم انشالله در مکتب دوستان خوبی مثل شما سعی میکنم این مشکلات رو برطرف کنم
از راهنمایی شما دوست گرامی بی نهایت سپاسگذارم

با سلام خدمت دوستان عزیز
یک سوال باز در رابطه با همین برناه برام پیش اومده
برای باز کردن یک صفحه وب جدید روشی به جز استفاده از تگ <a></a> وجود ندارد؟
در این برنامه میخواهم با زده شدن کلید edit صفحه جدیدی باز شود ولی دقیقا نمیدانم بدون تگ <a></a> چطور این کار را انجام بدم و علاوه بر باز شدن صفحه هم میخواهم پارامتر هم بفرستم که باید یا post و یا get استفاده کنم ولی اول باید بفهمم خود صفحه رو بدون لینک چطور باز کنم؟
ممنون میشوم در صورتی که راهنمایی بفرمایید
  پاسخ
تشکر شده توسط :
#5
نقل قول:دیگه اینکه اصلا نمیدونستم متد پست فقط با تگ input کار میکنه از این بابت بسیار ممنونم
کی گفته؟ textarea چی پس ؟ select چی پس ؟

نقل قول:در این برنامه میخواهم با زده شدن کلید edit صفحه جدیدی باز شود ولی دقیقا نمیدانم بدون تگ <a></a> چطور این کار را انجام بدم و علاوه بر باز شدن صفحه هم میخواهم پارامتر هم بفرستم که باید یا post و یا get استفاده کنم ولی اول باید بفهمم خود صفحه رو بدون لینک چطور باز کنم؟
بهش میگن ای جکس !
فعلاً دنبالش نرو تا یه کمی توی پی اچ پی تسلط پیدا کنی .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : phpProgrammer1
#6
[quote='Reza' pid='38288' dateline='1345445154']
نقل قول:کی گفته؟ textarea چی پس ؟ select چی پس ؟

بهش میگن ای جکس !
فعلاً دنبالش نرو تا یه کمی توی پی اچ پی تسلط پیدا کنی .

ممنون دوست عزیز پس علاوه بر input این تگ ها هم وجود داره ممنونم که فرمودید
اما در مورد سوال دومم چجوری بدون ای جکس فعلا این کار رو بکنم؟
در حال حاضر لازم دارم با زدن دکمه ادیت یک صفحه جدید باز بشه
بنظر شما راهی وجود داره؟
  پاسخ
تشکر شده توسط :
#7
(بله درسته حواسم نبود textarea و select هم هست)
درجواب سواله آخری که کردی، الزامی نیست که متد get که بهش کویری استرینگ هم میگن حتمن تو تگ فرم ارسال بشه میتونی تو تگ a کویری استرینگتو بسازی که همون کاریو میکنه که با متد get تو تگ form انجام میدی
کد:
<a href="sample.php?act=edit&id=2" target="_new">edit</a>  
<a href="sample.php?act=delete&id=2" target="_new">delete</a>
بالاتر گفته بودم اگر تاکیدت به ارسال با متد پسته باید در هر سطر یه فرم بنویسی
الان دیگه با متد پست کاری نداریم پس نیازی به نوشتن فرم برای هر سطر نیست باید برای هر سطر لینک ویرایش و حذف بسازی که تفاوت هر لینک با بعدی تو شماره رکورده(id)
پی اچ پی منوآل هم واست پیوست کردم خیلی کمکت میکنه
__________________________________
مثه اینکه فضای کافی نیست اینجا آپ کردم:
http://dl.dropbox.com/u/15526627/php_manual_en.chm
  پاسخ
تشکر شده توسط : phpProgrammer1
#8
من فکر کردم میگه یه صفحه جدید باز نشه !Undecided
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#9
(۱۳۹۱ مرداد ۳۰, ۰۲:۴۴ ب.ظ)sneaker نوشته: (بله درسته حواسم نبود textarea و select هم هست)
درجواب سواله آخری که کردی، الزامی نیست که متد get که بهش کویری استرینگ هم میگن حتمن تو تگ فرم ارسال بشه میتونی تو تگ a کویری استرینگتو بسازی که همون کاریو میکنه که با متد get تو تگ form انجام میدی
کد:
<a href="sample.php?act=edit&id=2" target="_new">edit</a>  
<a href="sample.php?act=delete&id=2" target="_new">delete</a>

ممنونم دوست عزیز
ولی میخوام دقیقا با دکمه این کار انجام بشه و از لینک نمیخوام استفاده کنم
ممنون میشم راهنمایی بفرمایید
  پاسخ
تشکر شده توسط :
#10
(۱۳۹۱ مرداد ۳۰, ۰۵:۰۳ ب.ظ)phpProgrammer1 نوشته: ممنونم دوست عزیز
ولی میخوام دقیقا با دکمه این کار انجام بشه و از لینک نمیخوام استفاده کنم
ممنون میشم راهنمایی بفرمایید

کد:
<a href="sample.php?act=delete&id=2" target="_new"><input type="button" value="delete" /></a>
  پاسخ
تشکر شده توسط : Reza phpProgrammer1


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان