|
|
|
php ลบข้อมูลแบบ checkbox เลือกลบได้ทีละหลายเรคคอร์ด แล้วมีสองตารางที่ต้องการให้ลบโดยมีฟิวเชื่อมกัน |
|
|
|
|
|
|
|
ลองแบบนี้ดูก่อนนะครับ
Code (PHP)
$strSQL = "DELETE FROM admin ";
$strSQL .="WHERE admin_id = '".$_POST["chkDel"][$i]."' ";
$objQuery = mysql_query($strSQL) or die (mysql_error()); // เอา Error ออกมาดูในกรณีที่ลบไม่ได้
echo $strSQL; // เอาออกมาดูว่าเป็นอย่างไรค่าถูกส่งมารึเปล่า
$strtest = "DELETE FROM users WHERE user_ID = '$user_ID[$i]'";
echo $strtest; // เอาออกมาดูว่าเป็นอย่างไรค่าถูกส่งมารึเปล่า
$objtest = mysql_query($strtest)or die (mysql_error());// เอา Error ออกมาดูในกรณีที่ลบไม่ได้
|
ประวัติการแก้ไข 2010-11-03 16:32:20
|
|
|
|
Date :
2010-11-03 16:24:52 |
By :
adaaugusta |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอใส่โค้ดเพิ่มดู แล้วกดเลือกลบดู แจ้งแบบนี้ค่ะ
DELETE FROM admin WHERE admin_id = '4' DELETE FROM users WHERE user_ID = ''Record Deleted.
มันคือผิดพลาดตรงไหนหรือค่ะ แก้ตรงไหนดีค่ะ
|
|
|
|
|
Date :
2010-11-03 17:22:47 |
By :
nuie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
print_r($_POST);
$user_ID[] = $_POST['user_ID[]'];
|
|
|
|
|
Date :
2010-11-03 17:44:57 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเอาโค้ดคุณ PlaKriM ไปวางดู
มันได้ผลแบบนี้อ่าค่ะ
Array ( [chkDel] => Array ( [0] => 7 ) [btnDelete] => Delete [user_ID] => Array ( [0] => ) [hdnCount] => 1 ) DELETE FROM admin WHERE admin_id = '7' DELETE FROM users WHERE user_ID = ''Record Deleted.
มันพลาดตรงไหนอ่ะค่ะ
|
ประวัติการแก้ไข 2010-11-03 18:07:47
|
|
|
|
Date :
2010-11-03 18:06:21 |
By :
nuie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DELETE FROM users WHERE user_ID = '' <== ไม่มีค่าส่งมาให้มันลบอ่ะครับ
ลองเปลี่ยนเป็นแบบนี้ดู
for($i=0;$i<count($user_ID);$i++) {
แทนที่เราจะไป count chkDel
ก็ให้มัน Count สมาชิกอาเรย์ที่มีอยู่ใน $user_ID ไปเลย
ไม่รู้ได้ป่าวอ่ะครับ
|
|
|
|
|
Date :
2010-11-03 18:26:56 |
By :
adaaugusta |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ย้ายนี่
<input type="hidden" name="user_ID[]" id="user_ID[]" value="<?php echo $objResult['user_ID'];?>" />
ไปไว้ใน while($objResult = mysql_fetch_array($objQuery))
|
|
|
|
|
Date :
2010-11-03 20:06:43 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_r($_POST);
$user_ID[] = $_POST['user_ID[]'];
อยากรู้ค่ะว่า คำสั่ง print_r($_POST); คือคำสั่งอะไรหรือค่ะ อันนี้ลองทำแล้วแต่ยังไม่ได้ผลเลยอ่ะค่ะ
|
|
|
|
|
Date :
2010-11-04 09:08:07 |
By :
nuie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองทำตามคำแนะนำที่คุณ PlaKriM บอกแล้วค่ะ
สมมติว่า ข้อมูลในตาราง user ประกอบด้วยเรคคอร์ดดังนี้
user_id username password status_use
24 aomka school helper เม้าส์อะไร น้ำ
25 catza cat085 helper นักร้องไต้หวันที่ชอบ F4
26 aisonline aisonline helper น้องอุ่นใจค่ายอะไร ais
แล้วข้อมูลในตาราง admin ก็จะประกอบด้วยรายละเอียดของ
username aomka
catza
aisonline
เมื่อนำ
<input type="hidden" name="user_ID[]" id="user_ID[]" value="<?php echo $objResult['user_ID'];?>" />
ไปไว้ใน while($objResult = mysql_fetch_array($objQuery))
ซึ่งลูปนี้ไว้ใช้วนข้อมูลในตาราง admin ออกมาทั้งหมด
ทำให้พอเลือก check box ลบบางเรคคอร์ด โดยลองเลือก เรอคอร์ดที่ 1 กับ 3 (aomka , aisonline)
ผลลัพธ์คือ สามารถลบ เรคคอร์ดที่ 1 กับ 3 ใน ตาราง adminได้ค่ะ
แต่เพี้ยน กับ การลบเรคคอร์ด ตาราง users เพราะการลบในตาราง users กลับลบทั้ง สามเรคคอร์ดเลยค่ะ
คิดว่าเกิดจากการรับค่า user_id มันวนลูปอยู่ในการแสดงข้อมูลทั้งหมดในตาราง admin จึงทำให้ user_id ได้รับทุกค่าที่มีในตาราง admin
หรือเปล่าน้า จะต้องแก้ไขอย่างไรดีค่ะ ให้มันรับค่า user_id เฉพาะที่ ทำการ checkbox หน่ะค่ะ ขอบพระคุณทุกท่านเลยนะค่ะ
|
ประวัติการแก้ไข 2010-11-04 09:10:07
|
|
|
|
Date :
2010-11-04 09:08:42 |
By :
nuie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<script language="JavaScript">
function ClickCheckAll(vol)
{
var i=1;
for(i=1;i<=document.frmMain.hdnCount.value;i++)
{
if(vol.checked == true)
{
eval("document.frmMain.chkDel"+i+".checked=true");
}
else
{
eval("document.frmMain.chkDel"+i+".checked=false");
}
}
}
function onDelete()
{
if(confirm('Do you want to delete ?')==true)
{
return true;
}
else
{
return false;
}
}
</script>
<form name="frmMain" action="phpMySQLDeleteMultiRecord.php" method="post" OnSubmit="return onDelete();">
<?
mysql_select_db($database_connproject, $connproject);
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
$strSQL = "SELECT * FROM admin";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">คำนำหน้า</div></th>
<th width="98"> <div align="center">ชื่อ </div></th>
<th width="98"> <div align="center">นามสกุล </div></th>
<th width="77"> <div align="center">เบอร์โทร </div></th>
<th width="79"> <div align="center">E-mail </div></th>
<th width="30"> <div align="center">
<input name="CheckAll" type="checkbox" id="CheckAll" value="Y" onclick="ClickCheckAll(this);" />
</div></th>
</tr>
<?
$i = 0;
while($objResult = mysql_fetch_array($objQuery))
{
$i++;
?>
<tr>
<td><div align="center"><?=$objResult["title_admin"];?></div></td>
<td><?=$objResult["firstname_admin"];?></td>
<td><?=$objResult["lastname_admin"];?></td>
<td><div align="center"><?=$objResult["tel_admin"];?></div></td>
<td align="right"><?=$objResult["email_admin"];?></td>
<td align="center"><input type="checkbox" name="chkDel[]" id="chkDel<?=$i;?>" value="<?=$objResult["admin_id"];?>">
<input type="hidden" name="user_ID[<?=$objResult["admin_id"];?>]" id="user_ID<?=$i;?>" value="<?php echo $objResult['user_ID'];?>" /></td>
</tr>
<?
}
?>
</table>
<input type="submit" name="btnDelete" value="Delete">
<input type="hidden" name="hdnCount" value="<?=$i;?>">
<?
mysql_close($connproject);
?>
</form></div>
Code (PHP)
<?php require_once('Connections/connproject.php'); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<body>
<?
mysql_select_db($database_connproject, $connproject);
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
for($i=0;$i<count($_POST["chkDel"]);$i++)
{
if($_POST["chkDel"][$i] != "")
{
$strSQL = "DELETE FROM admin ";
echo $strSQL .="WHERE admin_id = '".$_POST["chkDel"][$i]."' ";
//$objQuery = mysql_query($strSQL);
echo $strtest = "DELETE FROM users WHERE user_ID = '".$_POST['user_ID'][$_POST["chkDel"][$i]]."'";
//$objtest = mysql_query($strtest);
}
}
echo "Record Deleted.";
mysql_close($connproject);
?>
ลองรันดูก่อนนะ ถ้าออกมายังไงโพสต์มาดูหน่อย ถ้ามัน echo ออกมาถูกต้องแล้วก็เอา echo ออกแล้วเอา comment ตรง mysql_query ออก
|
|
|
|
|
Date :
2010-11-04 11:08:06 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|