2009-12-30 2 views
1
<?php 


$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="toybox"; // Database name 
$tbl_name="Emp"; // Table name 


// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$sql="SELECT * FROM $tbl_name"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

// echo $count; 

?> 

<table width="400" border="0" cellspacing="1" cellpadding="0"> 
<tr> 
<td><form name="form1" method="post" action=""> 
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td bgcolor="#FFFFFF">&nbsp;</td> 
<td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td> 
</tr> 
<tr> 
<td align="center" bgcolor="#FFFFFF">#</td> 
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Lastname</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Email</strong></td> 
</tr> 

<?php 
while($rows=mysql_fetch_array($result)){ 
?> 
<tr> 
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['EmpId']; ?>"></td> 
<td bgcolor="#FFFFFF"><?php echo $rows['EmpId']; ?></td> 
<td bgcolor="#FFFFFF"><?php echo $rows['FirstName']; ?></td> 
<td bgcolor="#FFFFFF"><?php echo $rows['LastName']; ?></td> 
<td bgcolor="#FFFFFF"><?php echo $rows['Email']; ?></td> 
</tr> 
<?php 
} 
?> 
<tr> 
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td> 
</tr> 

<?php 
// Check if delete button active, start this 
if($delete){ 
for($i=0;$i<$count;$i++){ 
    $del_id = $checkbox[$i]; 
    $sql = "DELETE FROM $tbl_name WHERE id='$del_id'"; 
    $result = mysql_query($sql); 
} 

// if successful redirect to delete_multiple.php 
if($result){ 
    echo " Record have been deleted"; 
} 
} 
mysql_close(); 
?> 

</table> 
</form> 
</td> 
</tr> 
</table> 

답변

5

보다는 당신의 삭제 루프의 각 반복에 대한 쿼리를하고, 나는 문자열로까지 모든 인덱스를 구축하고, 다음과 같은 것을 사용합니다 :

DELETE FROM tableName 
WHERE id IN (1,2,12,53) 

또한 제출 버튼은 $delete이 아니며 대신 $_POST["delete"]입니다. 그리고 당신의 연결 :

mysql_connect("$host", "$username", "$password") 

당신은 정말 (일반적으로) 문자열과 같은 변수를 사용하지 마땅 -로이 기입해야합니다

mysql_connect($host, $username, $password) 

는 또한, 당신이 주위에 몇 가지 더 많은 문제를 가지고 귀하의 논리를 삭제하십시오. 예를 들어, 서버에 등록 된 후에 <input type='submit' name='delete' /> 단추가 $_POST["delete"]으로 알려 졌음을 이미 지적했습니다. 마찬가지로 ID 값이 checkbox[] 인 확인란은 서버에서 간단히 $_POST["checkbox"]으로 알려져 있습니다.

또한 삭제 논리에 사용 된 변수 $count은 모든 레코드를 선택하는 이전 쿼리를 기반으로합니다. 삭제할 체크 박스의 수를 반영하지는 않으며 표시되는 레코드의 수를 반영합니다.

for ($i = 0; $i < count($_POST["checkbox"]); $i++) 
{ 
    // delete $_POST["checkbox"][$i]; 
} 

을 그리고 다시, 나는 당신이 값의 캐릭터를 구축하고 여러 대신 단일 쿼리를 실행 제안 : 따라서, 귀하의 루프는이를 기반으로해서는 안된다.

+0

{(; $ i가 $ 카운트 <; $ I = 0 $ 난 ++) 용 \t을 ($ _ POST는 [ "삭제"]) 경우에 { \t \t $ del_id = $ 선택란 [$ i]는; \t \t $ sql = "DELETE FROM $ tbl_name 여기서 id = '$ checkbox [$ i]'"; \t \t $ 결과 = mysql_query ($ sql); \t} –

+0

나는 이것을 사용했지만 여전히 삭제하지 않습니다 –

+0

Srikanth, 내 대답은 내 대답을 읽어보십시오. 다른 여러 문제가 있습니다. – Sampson

1
Working Code .. Consider Point 1 2 and 3 

<?php 
// Make a MySQL Connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("funconnect") or die(mysql_error()); 

// Get all the data from the "example" table 
$result = mysql_query("SELECT * FROM members") 
or die(mysql_error()); 
$count=mysql_num_rows($result); 

echo "<form name='sendmail' method='post' action='memberList.php'><table border='1'>"; 
echo "<tr> <th>Select</th> <th>Name</th> </tr>"; 
// keeps getting the next row until there are no more to get 
$countSn = 0; 
while($row = mysql_fetch_array($result)) { 
    // Print out the contents of each row into a table 
    $chkname = "checkbox".$countSn; #Point 1- Create defferent name for checkboxex like checkbox0, checkbox1 
    echo "<tr><td><input type='checkbox' name=".$chkname." value=".$row['m_id']." /></td>"; 

    echo "</td><td>"; 
    echo $row['m_name']; 
    echo "</td></tr>"; 
    $countSn++; 
} 
echo '<tr><td colspan=2><input name="delete" type="submit" id="delete" value="Delete"></td></tr></table></form>'; 
$delete=$_POST['delete']; 
$checkbox=$_POST['checkbox']; 
// Check if delete button active, start this 
if($delete){ 
for($i=0;$i<$count;$i++){ 
    $cname = "checkbox".$i;# Point 2- Create check box name like checkbox0, checkbox1 
    $checkbox=$_POST[$cname]; #Point 3 - Retrieve data against name 
    echo $i."===".$checkbox."<br />"; 
    //echo $del_id; 
//$sql = "DELETE FROM $tbl_name WHERE id='$del_id'"; 
//$result = mysql_query($sql); 
} 

// if successful redirect to delete_multiple.php 
if($result){ 
//echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_multiple.php\">"; 
} 
} 
mysql_close(); 
?>