Перед зацикливанием результатов из переменной результата MySQL, вы должны ВСЕГДА убедиться, что она содержит какие-либо значения:
if($total > 0)
{
while ($rows = mysql_fetch_array($result))
{
//your code goes here
}
}
Другая проблема, с которой вы столкнулись, такая же, как в вашем предыдущем вопросе , переменная $ delete не определена, исходя из вашего кода, неясно, откуда она берется.
Итак, если $delete
на самом деле является $_POST
переменной, ваш оператор if
должен выглядеть следующим образом:
if(isset($_POST['delete'])){}
Другая проблема, $checkbox
, в которой она не определена. Я бы порекомендовал вам прочитать подробнее о методе filter_input
, так как он может быть очень полезен при очистке данных, отправленных пользователями.
Также вы используете неверные HTML-теги вместо:
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
используйте правильный тег TD
, который выравнивает текст по центру и выделяет его жирным шрифтом, также bgcolor должен быть определен в файле CSS.
<th bgcolor="#FFFFFF">Id</th>
Ваш окончательный код должен выглядеть следующим образом:
<?php
$host = "localhost"; // Host name
$username = "a"; // Mysql username
$password = "a"; // Mysql password
$db_name = "b"; // Database name
$tbl_name = "emp_info"; // 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");
// Make sure that delete action was called using
//$delete = isset($_POST['delete']);
//OR
//$delete = array_key_exists('delete', $_POST);
//OR
$delete = filter_input(INPUT_POST, 'delete');
$selected = filter_input(INPUT_POST, 'checkbox', FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY);
if ($delete && !empty($selected))
{
foreach ($selected as $id)
{
$sql = "DELETE FROM $tbl_name WHERE eid='$id'";
$result = mysql_query($sql);
}
// if successful redirect to search1.php
echo "<meta http-equiv=\"refresh\" content=\"0;URL=search1.php\">";
}
$sql = "SELECT * FROM $tbl_name";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
?>
<form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<th bgcolor="#FFFFFF"> </th>
<th colspan="9" bgcolor="#FFFFFF">Delete multiple rows in mysql</th>
</tr>
<tr>
<th bgcolor="#FFFFFF">#</th>
<th bgcolor="#FFFFFF">Id</th>
<th bgcolor="#FFFFFF">Name</th>
<th bgcolor="#FFFFFF">Password</th>
<th bgcolor="#FFFFFF">Address</th>
<th bgcolor="#FFFFFF">Source</th>
<th bgcolor="#FFFFFF">salary</th>
<th bgcolor="#FFFFFF">Zip</th>
<th bgcolor="#FFFFFF">Mobile</th>
<th bgcolor="#FFFFFF">Email</th>
</tr>
<?php
if ($count)
{
while ($rows = mysql_fetch_array($result))
{
?>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input name="checkbox[]" type="checkbox" id="checkbox" value="<?php echo $rows['eid']; ?>">
</td>
<td bgcolor="#FFFFFF"><?php echo $rows['eid']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['ename']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['password']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['address']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['source']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['salary']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['zip']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['mobile']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['email']; ?></td>
</tr>
<?php
}
}
mysql_close();
?>
<tr>
<td colspan="10" align="center" bgcolor="#FFFFFF">
<input name="delete" type="submit" id="delete" value="Delete">
</td>
</tr>
</table>
</form>
Пожалуйста, не копируйте, не вставляйте, читайте и пытайтесь понять.