Я хочу удалить несколько строк из базы данных MYSQL. Я создал этот файл delete.php, чтобы выбрать различные ссылки и удалить их с помощью флажков.
<html> <head> <title>Links Page</title> </head> <body> <h2>Choose and delete selected links.</h2> <?php $dbc = mysqli_connect('localhost','root','admin','sample') or die('Error connecting to MySQL server'); $query = "select * from links ORDER BY link_id"; $result = mysqli_query($dbc,$query) or die('Error querying database'); $count=mysqli_num_rows($result); ?> <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"> </td> <td colspan="3" bgcolor="#FFFFFF"><strong>Delete multiple links</strong> </td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td> </tr> <?php while ($row=mysqli_fetch_array($result)) { ?> <tr> <td align="center" bgcolor="#FFFFFF"><input name="checkbox" type="checkbox" value="<?php echo $row['link_id']; ?>"></td> <td bgcolor="#FFFFFF"><?php echo $row['link_id']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_name']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_url']; ?></td> </tr> <?php } ?> <tr> <td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td> </tr> <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"> </td> <td colspan="3" bgcolor="#FFFFFF"><strong>Delete multiple links</strong> </td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td> </tr> <?php while ($row=mysqli_fetch_array($result)) { ?> <tr> <td align="center" bgcolor="#FFFFFF"><input name="checkbox" type="checkbox" value="<?php echo $row['link_id']; ?>"></td> <td bgcolor="#FFFFFF"><?php echo $row['link_id']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_name']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_url']; ?></td> </tr> <?php } ?> <tr> <td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td> </tr> <?php // Check if delete button active, start this if(isset($_POST['delete'])) { $checkbox = $_POST['checkbox']; for($i=0;$i<count($checkbox);$i++){ $del_id = $checkbox[$i]; $sql = "DELETE FROM links WHERE link_id='$del_id'"; $result = mysqli_query($sql); } // if successful redirect to delete_multiple.php if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=view_links.php\">"; } } mysqli_close($dbc); ?> </table> </form> </td> </tr> </table> </body> </html>
Кажется, это не удаляет любую строку. Мои данные заполнены в таблице. Я думаю, проблема связана с PHP-кодом. Пожалуйста, помогите мне здесь.
Вы должны рассматривать его как массив, подобный этому,
<input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>">
Тогда только, вы можете взять его счетчик и зацитировать его для удаления.
Вам также необходимо передать соединение с базой данных для запроса.
$result = mysqli_query($dbc, $sql);
Ваш не включил его:
$result = mysqli_query($sql);
Используйте нотацию массива, такую как name="checkbox[]"
в вашем элементе input
. Это даст вам $_POST['checkbox']
как массив. В запросе вы можете использовать его как
$sql = "DELETE FROM links WHERE link_id in "; $sql.= "('".implode("','",array_values($_POST['checkbox']))."')";
Это один единственный запрос, чтобы удалить их все.
Примечание . Вам нужно избегать значений, переданных в $_POST['checkbox']
с помощью mysql_real_escape_string
или аналогичных для предотвращения SQL-инъекций .
Удалить несколько флажков с помощью PHP Code
<input type="checkbox" name="chkbox[] value=".$row[0]."/> <input type="submit" name="delete" value="delete"/> <?php if(isset($_POST['delete'])) { $cnt=array(); $cnt=count($_POST['chkbox']); for($i=0;$i<$cnt;$i++) { $del_id=$_POST['chkbox'][$i]; $query="delete from $tablename where Id=".$del_id; mysql_query($query); } }
<?php $sql = "SELECT * FROM guest_book"; $res = mysql_query($sql); if (mysql_num_rows($res)) { $query = mysql_query("SELECT * FROM guest_book ORDER BY id"); $i=1; while($row = mysql_fetch_assoc($query)){ ?> <input type="checkbox" name="checkboxstatus[<?php echo $i; ?>]" value="<?php echo $row['id']; ?>" /> <?php $i++; }} ?> <input type="submit" value="Delete" name="Delete" /> if($_REQUEST['Delete'] != '') { if(!empty($_REQUEST['checkboxstatus'])) { $checked_values = $_REQUEST['checkboxstatus']; foreach($checked_values as $val) { $sqldel = "DELETE from guest_book WHERE id = '$val'"; mysql_query($sqldel); } } }
Недавно я дал ответ о передаче значения флажка через js на php.
Проверить здесь
Теперь, как и выше, вы можете запросить удаление для iDs, которое вы получите в базовом коде php.
Что-то, что иногда появляется, может / не знать о
При использовании IE не всегда будет использоваться $ _POST ['delete']. Однако Firefox и хром должны работать нормально. Я использую отдельный isntead, который решает проблему для IE
Что касается того, что вы не удаляете свой код выше, вы, похоже, эхом отдаете 2x набора флажков и вытаскиваете одни и те же данные? Является ли это просто копией + вставить ошибку или это на самом деле, как ваш код?
Если это будет связано с тем, как ваш код будет проблемой, так как пользователь может отметить один элемент элемента checkbox, а другой будет снят, поэтому код php для удаления будет запутан. Переименовать второй флажок или удалить этот блок html, вам не нужно отображать один и тот же список дважды?
$deleted = $_POST['checkbox']; $sql = "DELETE FROM $tbl_name WHERE id IN (".implode(",", $deleted ) . ")";
Очень просто удалить несколько строк с помощью PHP.
Шаг 1. Во время отображения массива с использованием флажка (обязательно добавьте уникальное значение)
Шаг 2: Добавить кнопку отправки
Шаг 3: Получить массив с предыдущей страницы (выбранный флажок)
Шаг 4. Обработка каждой строки шаг за шагом
Ссылка Ссылка Нажмите здесь