2015-02-26 3 views
0

Пожалуйста, посмотрите, почему этот код не работает, я не удалял строки. Подключение к серверу в порядке. Я могу добавить новые строки, но когда я нажимаю DELETE на выбранных строках - отмечая, что происходит. Я думаю, что что-то не так в «за».php удалить строку из mysql

Заранее спасибо!

<?php 
$host="localhost"; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name=""; // Database name 
$tbl_name="test_mysql"; // 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); 
?> 

<table width="400" align="center" 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>Imię</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Nazwisko</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Wiek</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Płeć</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['id']; ?>"></td> 
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['name_client']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['lastname_client']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['old_client']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['sex_client']; ?></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 "<meta http-equiv=\"refresh\" content=\"0;URL=login_success.php\">"; 
} 
} 
mysql_close(); 
?> 

</table> 
</form> 
</td> 
</tr> 
</table> 
+1

Где '$ delete', '$ count' и' $ checkbox' определены? – lmarcelocc

+0

@andrzej, пожалуйста, предоставьте много информации. Кроме того, где $ delete, $ count & $ checkbox определяется в вашем коде? Пожалуйста, предоставьте полный код, чтобы мы могли идентифицировать проблему. –

+0

Я думаю, что он использует register_globals, поэтому $ _POST ['toto'] = $ toto. Жаль, что знаю! –

ответ

0

Чтобы все было в порядке, просто замените приведенный ниже код на линии 59-69.

if(isset($_POST) && isset($_POST['checkbox'])) 
{ 
    $toDelete = $_POST['checkbox']; 
    for($i=0; $i<count($toDelete); $i++) 
    { 
     $del_id = $toDelete[$i]; 
     $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=login_success.php\">"; 
} 

Кроме того, вы лучше пересмотреть код:

  • Я считаю, что '' в запросе "удалить" являются избыточными,
  • mysql_connect() является deprecated,
  • короткие теги открытия (<?) являются discouraged,
  • Вы можете удалить все выбранные элементы в одном SQL-запросе, а не делать это r по-разному: $idsToDelete = implode (',', $_POST['checkbox']); $sql = "DELETE FROM $tbl_name WHERE id IN ($idsToDelete);";
+0

Спасибо! действительно помогли! – andrzej

+0

Добро пожаловать, и добро пожаловать в ТАК. – someOne

Смежные вопросы