PDA

View Full Version : سوال: نمایش پیغام تایید هنگام حذف یک رکورد



mahsara
دوشنبه 04 مهر 1390, 08:01 صبح
با سلام
من یک فایل دارم به نام show.php که اطلاعات دیتابیس رو توش نمایش میدم و جلوی هر رکورد یک لینک گذاشتم به نام حذف. میخوام با زدن این لینک کاربر به صفحه delete.php هدایت بشه و در ضمن کد یونیک این رکورد به صفحه delete.php ارسال بشه. یعنی:
<a href=DeleteUsers.php?id=$id>حذف</a>
اما میخوام قبل از این عمل یک پیغام مبنی بر اطمینان از حدف رکورد برای کاربر نمایش داده بشه. حالا اگر من این پیغام رو با جاوا اسکریپت نمایش بدم اونوقت این کدیونیک رو چطوری ارسال کنم به صفحه delete.php؟
من مبتدی ام ولی فکر کنم نمیشه id رو به عنوان پارامتر ارسال کنم به تابعم توی جاوااسکریپت.

mohsen6500
دوشنبه 04 مهر 1390, 08:25 صبح
با سلام
برای اینکه آی دی رو بفرستی نیازی نداری به جاوا اسکریپت!
اما میتونی از آجاکس کمک بگیری برای فرستادنش
کلا بستگی به کارتون داره که دقیقا کئومش مد نظرتون باشه
در ضمن حتما باری اون فیلدتون آی دی گذاشتید
در صفحه delete هم کافیه آی دی فیلد مورد نظر رو بگیرید و اونرو حذف کنید
وقتی هم حذف شد یعنی result با موفقیت انجام شد پیغام بدید
برای اطمینان از خذف هم به کمک جاوا اسکریپت و موقعیت onclick و دستور return confirm میتونید انجام بدید
به این صورت :
a href="delete.php?id=<?php echo $id; ?>" onclick="return confirm('آيا براي حذف مطمئن هستيد؟')">حذف</a>
موفق باشید

mahsara
دوشنبه 04 مهر 1390, 09:05 صبح
ممنون از راهنماییتون ولی این کارو رو خودم هم قبلش انجام دادم ولی اینجوری اگر در جواب پیغام نمایش داده شده دکمه cancel رو برنیم باز هم به صفحه delete هدایت شده و رکورد حذف می شود. پس باید توی جاوا بگیم اگر پاسح true بود برو به صفحه delete اما دیگه اینجا نمیشه گقت delete.php?id=$id و مشکل من همینجاست.

farhadfery
دوشنبه 04 مهر 1390, 10:06 صبح
عزیز. آن confirm را بگذار تو if و true /false برگردون ، البته به نظر من یک تابع به نام confirm بنویسید که به ازای هر لینک نخواهید اینکار را تکرار کنید. بعد رو event کلیک لینک این function را صدا بزن. یا بهتر از آن با jquery رخداد کلیک این لینک ها را...

farhadfery
دوشنبه 04 مهر 1390, 10:13 صبح
این مثال را ببیند:

<a href="#" onclick="return deletechecked();">Delete checked messages</a>


function deletechecked()
{
var answer = confirm("Delete selected messages ?")
if (answer){
document.messages.submit();
}

return false;
}

البته همانطور که گفتم با jquery و استفاده از ajax خیلی زیباتر میشه عمل کرد

blackmak
دوشنبه 04 مهر 1390, 12:02 عصر
بدون js هم میشه اینکارو کرد.
کافیه محتوای کوئری delete و بزاریتو یه if بعد تو if بنویسی isset($_POST['del_b']) بعد اگه رو دکمه کلیک کرد میره تو if . انطوری نمیشه بزار بنویسم :لبخند:


<?php
$id = $_GET['id'];
?>
آیا میخواهید <?php echo $id; ?> را حذف کنید ؟
<form method="post">
<input type="submit" value="حذف" name="del_b" />
</form>

<?php
if(isset($_POST['del_b']))
{

/// delete query ///

}
?>

farhadfery
سه شنبه 05 مهر 1390, 23:05 عصر
بدون js هم میشه اینکارو کرد.
کافیه محتوای کوئری delete و بزاریتو یه if بعد تو if بنویسی isset($_POST['del_b']) بعد اگه رو دکمه کلیک کرد میره تو if . انطوری نمیشه بزار بنویسم :لبخند:


<?php
$id = $_GET['id'];
?>
آیا میخواهید <?php echo $id; ?> را حذف کنید ؟
<form method="post">
<input type="submit" value="حذف" name="del_b" />
</form>

<?php
if(isset($_POST['del_b']))
{

/// delete query ///

}
?>

هدف من از js , jquery اینکه صفحه رفرش نشه:بوس:. به طور مثال وقتی برای پاک کردن یک خبر yes داد. id خبر را با ajax بفرسته و سطر مربوطه را از این جدول اخبار پاک بشه و در ادامه بدون رفرش شدن لیستی که کاربر مشاهده می کنه آن خبر با یک افکت زیبا محو بشه. به همین دلیل در پست قبلیم گفتم:

البته همانطور که گفتم با jquery و استفاده از ajax خیلی زیباتر میشه عمل کرد

faravaghi
چهارشنبه 06 مهر 1390, 00:46 صبح
سلام،
شما با دستور location.href می توانید در جاوا اسکریپت از یک صفحه با صفحه بعد بروید. در ضمن بهتر است قبل از اینکه از تایید کاربر مطمئن نشدید، کاربر را به صفحه ای دیگه نفرستید. یعنی بهتره با جاوا اسکریپت اول مطمئن بشین آیا می خواد رکورد حذف بشه یا نه بعد برین به یک صفحه دیگه.
بهترین راه حل همان JQuery و Ajax است که به بهترین شکل و با کمترین زمان این عمل انجام میگیرد.
اینم برای نمونه :

function delete_user ( id , username )
{
resulte = window.confirm ( ": آیا مطمئن هستید \r "+username+"\r حذف شود ؟" ) ;
if ( !resulte )
return false ;
else
location.href = "../Function/delete_user.php?id="+id+"&name="+username ;
}