Intereting Posts
PHP SimpleXML. Как получить последний товар? Как я могу вызвать функцию в другом файле? WooCommerce Бесплатная доставка – удалите исходное или измените текстовое имя при оформлении заказа и электронной почте Автоматически запускать определенные тесты при смене файла? Скрыть время в транзакционных письмах с помощью {{var order.getCreatedAtFormated ('' short '')}} Должен ли я использовать mysqli_real_escape_string или использовать подготовленные инструкции? Изменение размера базы64 изображений получить токен oauth с официальным php-клиентом tumblrs Как включить структуру Zend? Каков самый быстрый способ определить, существует ли URL-адрес в PHP? Значение коэффициента обменного курса PHP grab json из ответа API расположение таблицы – foreach Расширяется ли расширение mysqli в этой конфигурации php? Как изменить время на сервере Apache, чтобы оно соответствовало времени компьютера (PHP)? Определить тип данных из file_get_contents ()

Удаление записей в базе данных с помощью флажков

Я пытаюсь удалить определенные строки из базы данных, используя несколько флажков. До сих пор мне удалось отобразить содержимое таблицы MySQL, но удаление строк с помощью флажков не работает.

<table class="ts"> <tr> <th class="tg-031e" style='width:1px'>ID</th> <th class="tg-031e">IP address</th> <th class="tg-031e">Date added</th> <th class="tg-031e">Reason</th> </tr> <?php include 'connect.php'; $SQL = "SELECT `ID`, `IPaddress`, `DateAdded`, `Reason` FROM `banned`"; $exec = mysql_query($SQL, $connection); while ($row = mysql_fetch_array($exec)){ echo "<tr class='tg-031h'>"; echo "<td class='tg-031e'><form method='post'><input type='checkbox' name='checkbox' value=" . $row['ID'] . "></form></td>"; echo "<td class='tg-031e'>" . $row['IPaddress'] . "</td>"; echo "<td class='tg-031e'>" . $row['DateAdded'] . "</td>"; echo "<td class='tg-031e'>" . $row['Reason'] . "</td>"; echo "</tr>"; } echo "</table><form method='post'><input name='delete' type='submit' value='Delete'></form>"; if (isset($_POST['delete']) && isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $id){ $id = (int)$id; $delete = "DELETE FROM banned WHERE ID = $id"; mysql_query($delete); } } ?> 

Я не получаю никакого результата, поскольку чек не проходит, но я не знаю, что с ним не так. Запрос правильный, поэтому проблема должна заключаться в выборе флажков и получении их идентификатора.

Solutions Collecting From Web of "Удаление записей в базе данных с помощью флажков"

Здесь он протестирован и работает при использовании mysqli_ вместо mysql_

Замените ваши собственные учетные данные.

Несколько вещей, ваш флажок действительно нуждался в квадратных скобках вокруг именованного элемента, как я упоминал в своих комментариях, то есть name='checkbox[]' иначе вы получили бы неверную ошибку аргумента foreach .

Sidenote: Здесь нужно немного форматировать, но это работает.

 <table class="ts"> <tr> <th class="tg-031e" style='width:1px'>ID</th> <th class="tg-031e">IP address</th> <th class="tg-031e">Date added</th> <th class="tg-031e">Reason</th> </tr> <?php $DB_HOST = "xxx"; $DB_NAME = "xxx"; $DB_USER = "xxx"; $DB_PASS = "xxx"; $con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); if($con->connect_errno > 0) { die('Connection failed [' . $con->connect_error . ']'); } $SQL = "SELECT `ID`, `IPaddress`, `DateAdded`, `Reason` FROM `banned`"; $exec = mysqli_query($con,$SQL); echo "<form method='post'>"; while ($row = mysqli_fetch_array($exec)){ echo "<tr class='tg-031h'>"; echo "<td class='tg-031e'><input type='checkbox' name='checkbox[]' value='" . $row[ID] . "'></td>"; echo "<td class='tg-031e'>" . $row['IPaddress'] . "</td>"; echo "<td class='tg-031e'>" . $row['DateAdded'] . "</td>"; echo "<td class='tg-031e'>" . $row['Reason'] . "</td>"; } echo "</tr></table>"; echo "<input name='delete' type='submit' value='Delete'></form>"; if (isset($_POST['delete']) && isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $id){ $id = (int)$id; $delete = "DELETE FROM banned WHERE ID = $id"; mysqli_query($con,$delete); } } ?> 

Используйте mysqli_* с подготовленными инструкциями или PDO с подготовленными инструкциями для этого.


Изменить: версия mysql_

 <table class="ts"> <tr> <th class="tg-031e" style='width:1px'>ID</th> <th class="tg-031e">IP address</th> <th class="tg-031e">Date added</th> <th class="tg-031e">Reason</th> </tr> <?php include 'connect.php'; $SQL = "SELECT `ID`, `IPaddress`, `DateAdded`, `Reason` FROM `banned`"; $exec = mysql_query($SQL, $connection); echo "<form method='post'>"; while ($row = mysql_fetch_array($exec)){ echo "<tr class='tg-031h'>"; echo "<td class='tg-031e'><input type='checkbox' name='checkbox[]' value='" . $row[ID] . "'></td>"; echo "<td class='tg-031e'>" . $row['IPaddress'] . "</td>"; echo "<td class='tg-031e'>" . $row['DateAdded'] . "</td>"; echo "<td class='tg-031e'>" . $row['Reason'] . "</td>"; } echo "</tr></table>"; echo "<input name='delete' type='submit' value='Delete'></form>"; if (isset($_POST['delete']) && isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $id){ $id = (int)$id; $delete = "DELETE FROM banned WHERE ID = $id"; mysql_query($delete); } } ?> 

Вы должны сделать что-то похожее на это (полу псевдо):

 <form method="post"> /begin loop/ echo '<input type="checkbox" name="row[' . $row['ID'] . ']" />'; /end loop/ <input type="submit" /> </form> 

Затем попробуйте поместить это на страницу процессора, поверх нее:

 if ( !empty( $_POST ) ) { echo '<pre>' . print_r( $_POST, true ) . '</pre>'; die( 'see? :-)' ); } 

, , , ,

Хорошо, вот ваш код, отредактированный:

 <?php if ( !empty( $_POST ) ) { echo '<pre>'.print_r( $_POST, true ).'</pre>'; die( 'See?' ); ?> <form method="post"> <table class="ts"> <tr> <th class="tg-031e" style='width:1px'>ID</th> <th class="tg-031e">IP address</th> <th class="tg-031e">Date added</th> <th class="tg-031e">Reason</th> </tr> <?php include 'connect.php'; $SQL = "SELECT `ID`, `IPaddress`, `DateAdded`, `Reason` FROM `banned`"; $exec = mysql_query($SQL, $connection); while ($row = mysql_fetch_array($exec)){ echo "<tr class='tg-031h'>"; echo "<td class='tg-031e'><input type='checkbox' name='row[$row['ID']]'></td>"; echo "<td class='tg-031e'>" . $row['IPaddress'] . "</td>"; echo "<td class='tg-031e'>" . $row['DateAdded'] . "</td>"; echo "<td class='tg-031e'>" . $row['Reason'] . "</td>"; echo "</tr>"; } echo "</table><input name='delete' type='submit' value='Delete'>"; if (isset($_POST['delete']) && isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $id){ $id = (int)$id; $delete = "DELETE FROM banned WHERE ID = $id"; mysql_query($delete); } } ?> </form> 

Запрос удаления еще не исправлен. Попытайтесь исправить это самостоятельно 🙂