PDA

View Full Version : Xin giúp đoạn Code PHP xóa db qua đoạn JS!..



yatyao
05-03-2010, 14:34
mình có 1 đoạn code xóa dữ liệu viết bằng PHP nhưng trước khi xóa mình muốn nó hiện ra bảng windows hỏi có muốn xóa hay không(viết bằng javascript), vấn đề ở đây là khi mình nhấn "no" thì code PHP vẫn chạy nghĩa là vẫn thực hiện lệnh xóa?
Đây là đoạn code của mình:

switch ($_REQUEST["mode"]) {

case "remove":
{
if (isset ($_GET['cidr'])) { $cidr = strip_tags($_GET['cidr']); }
if ($cidr != 0)
{ $i = 0;
if (count($_POST[cidr]) > 0)
foreach ($_POST[cidr] as $cidrremove)
{
?>
<script language="JavaScript">
x = window.confirm('Ban chac chan muon xoa?');
if (x)
{

}
else
{
window.exit();
window.history.go(-1);
}
</script>
<?
$CidrRemove = mysql_query("DELETE FROM `NetMenu` WHERE `NetMenuId` = '$cidrremove'");
$PrefixRemove = mysql_query("DELETE FROM `net_ips` WHERE `NetCidr` = '$cidrremove'");
$AddressRemove = mysql_query("DELETE FROM `addresses` WHERE `NetID` = '$cidrremove'");
$i++;
}
}
else
{
?>
<script>
window.history.back(-1);
</script>
<?
}

$optimize = mysql_result(mysql_query("OPTIMIZE TABLE `NetMenu`"),0);
$optimize = mysql_result(mysql_query("OPTIMIZE TABLE `net_ips`"),0);
$optimize = mysql_result(mysql_query("OPTIMIZE TABLE `addresses`"),0);
// Redirect to cidr_remove.php after sql insert
?>

<h2><font color="FF0000">***272;ang c***7853;p nh***7853;t d***7919; li***7879;u</font></h4>
<meta http-equiv=Refresh content=1;url="cidr_remove.php">
<?php
}
break;

Xin cám ơn các bạn!

thuyduongcd
05-03-2010, 15:33
Bạn phải hiểu vấn đề là code php thộc về server còn code js thuộc về client. Nếu trộn chung 2 code với nhau thì lúc nào code php cũng thực thi trước cho dù nó nằm dưới hay nằm trên đoạn js. Cho nên cái đoạn script mà bạn chèn vào


<script language="JavaScript">
x = window.confirm('Ban chac chan muon xoa?');
if (x)
{

}
else
{
window.exit();
window.history.go(-1);
}
</script>

nhằm mục đích là back lại nếu người dùng chọn No, nhưng nó vô hiệu. Bởi vì khi server biên dịch đến đoạn script này nó bỏ qua (trả nguyên về cho client) và thực hiện đoạn code PHP tiếp theo cho nên dữ liệu vẫn bị xóa.

Trường hợp này nên confirm ngay lúc người ta click nút xóa. Bắt sự kiện onclick của nút Delete gọi hàm confirm, nếu chọn No thì return false còn chọn yes thì submit form đi.

yatyao
05-03-2010, 16:43
Mình hiểu rồi, cảm ơn bạn!