Как удалить определенные строки с php в таблице - PullRequest
0 голосов
/ 26 июня 2018

Мне было интересно, можно ли с помощью кнопки на столе удалить указанную строку из базы данных. Вот пример:

<thead>
   <tr>
      <th>Identity</th>
      <th>Name</th>
      <th>Stuff</th>
      <th>Action(Delete)</th>
   </tr>
</thead>
<tbody>
   <?php
      $con=mysqli_connect("","","","");
      // Check connection
      if (mysqli_connect_errno())
      {
      echo "Error " . mysqli_connect_error();
      } 

      $result = mysqli_query($con,"SELECT * FROM sm_admins");

      while($row = mysqli_fetch_array($result))
      {
      echo "<tr>";
      echo "<td>" . $row['identity'] . "</td>";
      echo "<td>" . $row['name'] . "</td>";
                                          switch ($row['level']) {
                                              case "hello" : echo "<td>Nice Try</td>";
                                                  break;
                                              case "bye" : echo "<td>Row in a row</td>";
                                                  break;
                                              case "Cake" : echo "<td>Lemon</td>";
                                                  break;
                                              case "ao" : echo "<td>Key</td>";
                                                  break;
                                              case "as" : echo "<td>Charger</td>";
                                                  break;

                                          echo "<td> <button class='btn btn-red btn-icon-only' onclick='deleterow(" . $row['identity'] . ")> <i class='fa fa-times'></i> </button></td>";
                                        }
      echo "</tr>";
      }
      echo "</table>";

      mysqli_close($con);
      ?>

Например, у меня есть 2 строки в базе данных, и это создает 2 разные строки в таблице HTML, и я хочу знать, возможно ли удалить указанную строку из базы данных, используя кнопку в конце каждой строки в HTML страница

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Есть много жизнеспособных подходов. Самое простое из того, что я могу построить на основе вашего кода, выглядит примерно так:

<script>
function deleterow(rowid)
{
  var f = document.forms['theform'];
  f.rowid.value = rowid;
  f.submit();
}
</script>
<form name="theform" method="post">
<input type="hidden" name="rowid"/>
<input type="hidden" name="action" value="deleterow"/>
</form>

Затем в своем бэкэнд-коде PHP отметьте $_POST["action"] для «deleteterow» и выполните SQL delete, получив значение из $_POST["rowid"] - убедитесь, что правильно экранировали его, чтобы избежать внедрения SQL.

Более элегантный подход, который позволил бы избежать перезагрузки страницы и повторного рендеринга HTML, состоял бы в том, чтобы выполнить AJAX-вызов для бэкэнда, но это требует больше работы. Если это простое приложение, которое никогда не будет иметь более 100 или около того строк на странице, которое никогда не будет использоваться более чем двумя пользователями, то это, вероятно, более хлопотно, чем стоит.

Убедитесь, что вы понимаете, как PHP взаимодействует с HTML / Javascript. PHP выполняется на сервере. HTML визуализируется, а Javascript выполняется на клиенте. То, что вы делаете, когда пишете PHP, это отправка HTML / Javascript клиенту для рендеринга / выполнения. Затем, когда ваш клиент отправляет форму, PHP выполняется на сервере для обработки отправки. Это PHP на сервере, который общается с базой данных. Так что в вашем PHP-коде у вас должно быть что-то вроде этого:

function handle_action()
{
  $action = isset($_POST["action"]) ? $_POST["action"] : "";
  switch ($_POST["action"])
  {
    case "deleterow":
      handle_delete();
      load_data();
      break;
    default:
      load_data();
  }
}

function handle_delete()
{
  $rowid = isset($_POST["rowid"]) ? $_POST["rowid"] : "";
  if (!$rowid) return;
  mysqli_query("delete from sms_admins where identity = '".
mysqli_escape_string($rowid)."'");
}

function load_data()
{
  // put everything in your example here except for mysqli_connect
}

$con=mysqli_connect("","","","");
 // Check connection
if (mysqli_connect_errno())
{
    echo "Error " . mysqli_connect_error();
}

handle_action(); 
0 голосов
/ 26 июня 2018

Способ сделать это - использовать файл page.sql для добавления определенного кода SQL, который будет либо add, либо drop a table.

Например, любая кнопка onclick может перенаправить вас на страницу ниже и сразу же вернуться на главную страницу. Тогда у вас может быть специальная страница для каждой строки и отдельная страница SQL для удаления строк. Удачи!

name_of_whatever.sql

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Database: `database_name`
--

-- --------------------------------------------------------

--
-- Table structure for table `table_name`
--

CREATE TABLE IF NOT EXISTS `table_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `word` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table `table_name`
--

INSERT INTO `table_name` (`id`, `word`,) VALUES
(1, 'hello');

-- --------------------------------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...