In this tutorial we will learn how to delete data from database in PHP using button. I will take a simple blog posts example to demonstrate you delete functionality. Before jumping into the code let’s see how this process will work.
Steps: Delete Data from Database
- Prompt user to a dialog box when user click on delete button. If he/she wants to continue or not
- If user select No, Close the dialog box without any action
- If user select Yes, Get the current record id and delete the respective record
- Once record will delete. Show success message to user.
For dialog box I will use javascript confirm()
function.
Create MySQL Database:
1 2 3 |
Create database demo; |
MySQL Database Table:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
CREATE TABLE `blog` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) NULL DEFAULT NULL, `blog_content` TEXT NULL, `author` VARCHAR(255) NULL DEFAULT NULL, `created` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB AUTO_INCREMENT=1 ; INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (1, 'Quae fugiat et voluptatem ad sit aperiam inventore distinctio.', 'Sed quam quisquam aut. Ut rem unde nemo facere voluptas voluptatum. Qui facere facilis nisi. Repellendus rerum quod qui blanditiis. Assumenda non sit ab voluptatem in possimus aut. Voluptas corporis repellendus ex et est. Totam fuga distinctio est magnam est. Aliquid dolorem earum magni. Illo accusantium odit dolor adipisci tenetur et. Rem voluptatum dignissimos magni. Et sint neque quia ab maxime vitae error.', 'Edgar', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (2, 'Quisquam exercitationem atque quos voluptatem nam.', 'Non ab distinctio unde incidunt nihil voluptas saepe tempore. Ex inventore atque ab provident. Facilis dolores voluptate hic et nisi. Unde repudiandae quia et vero recusandae laboriosam. Odit amet ut et commodi soluta similique. Et corrupti laborum hic dolores iusto. Autem repellendus veritatis ut voluptate voluptas. Eveniet et incidunt eius sunt. Voluptatem eius tenetur sint rem aperiam. Adipisci dolor illum qui quasi adipisci voluptatem nihil. Voluptatum ab sunt sit reprehenderit aliquid error eos. Sequi expedita nisi et hic. Praesentium rerum ea sint aut.', 'Ignatius', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (3, 'Harum iure omnis aperiam in.', 'Dicta voluptas et illum. Voluptatem dignissimos aliquam sint ut laudantium. Sed asperiores nihil rerum consequuntur ut consequatur nisi. Dolor occaecati sit sit quidem ipsa quis eaque quia. Enim dolor cumque est id voluptatem dolor odit et. Aut ab saepe maxime. Officia voluptatum et quisquam ducimus occaecati. Odio magni voluptatibus adipisci odit impedit tempore iste dolores. Ullam labore expedita minus et. Corrupti optio corrupti ut est dolor. Modi at non quibusdam a corporis aut. Eos pariatur voluptas officia molestiae vero ipsum. Atque repellendus enim corporis veniam aperiam. Quas quam nihil maxime provident sint temporibus. Esse et molestiae aut occaecati fugit eligendi aspernatur. Eligendi sint recusandae qui animi dolorum earum. Et blanditiis quia est alias. Voluptate accusamus rerum animi nihil doloribus possimus enim. Aut et ullam voluptatibus ducimus. Eligendi quo vel iste eum. Quia optio quas itaque autem at nihil.', 'Florencio', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (4, 'Laborum quo nemo qui nihil explicabo ipsum autem.', 'Neque et voluptatum qui inventore a et. Voluptatibus quia minus repudiandae maiores est. Et itaque omnis alias architecto omnis omnis. Eveniet est mollitia tempore fugiat suscipit consequatur. Similique enim possimus sint quis at. Voluptas optio in molestias id corrupti ut. Harum deleniti illo quis odio distinctio perspiciatis est. Nam dolor facere perferendis recusandae quis vel. Sed enim reprehenderit et natus possimus facilis inventore delectus. Est cupiditate neque quod. Dolore non et tenetur quia et vel. Ut et est laudantium sed. Aperiam tempora consequatur consequatur laboriosam. Magnam id aliquid velit adipisci reiciendis vel. Maiores nihil corporis similique nobis. Itaque eos est omnis consequuntur iste ad ex. Maiores vitae numquam quaerat sunt voluptatem. Sit velit sed ex quaerat. Qui est deserunt et quis illum voluptas. Perferendis eos facere nam exercitationem sit.', 'David', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (5, 'Tempore quia praesentium maiores sint sit ipsa explicabo.', 'Voluptatem ut assumenda est et quo voluptatem sunt. Quae nihil quas placeat repellat dolorum rerum nulla. Quos nihil sunt corporis suscipit velit consequatur. Sed odio quisquam dolores. Voluptatem neque inventore vero facere exercitationem tempora quo. Fuga hic quod error illum. Voluptatem impedit magni minus sint minus id nostrum. Aut necessitatibus non eveniet nobis non unde sint ipsam. Velit eos modi consequuntur temporibus porro. Voluptatem voluptatibus adipisci debitis sint. Laboriosam incidunt dolor veniam consequuntur incidunt. Id voluptas repudiandae voluptates aut illum omnis voluptatibus. Nulla cupiditate corporis est. Tempore aperiam non debitis perferendis similique culpa aut. Quis maiores neque odio nobis atque fugiat dolor.', 'Gregory', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (6, 'Officia ducimus ut iure aliquid ea dolores.', 'Assumenda et ea porro quia aut cumque. Expedita eveniet quam et et iste labore. Fugiat suscipit dolores deserunt dolorum voluptas quia. Laudantium nesciunt ut aut aspernatur omnis. Fuga ad ut dolore qui quisquam suscipit. Rem quam natus et sunt. Commodi aut pariatur voluptatem eos ex doloribus alias. Ex ullam numquam et non. Ut ut ut eaque aut saepe optio repudiandae. Provident illum repellat molestias et. Rerum totam animi labore ullam aliquam vel. Modi sed architecto voluptate consectetur.', 'Isai', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (7, 'Explicabo officiis quae fugiat quae neque atque ea sequi.', 'Rerum quia rerum cum est. Praesentium eum odit dignissimos excepturi dolorem sit. Qui a et voluptatem quas non. Eum qui quia doloremque dignissimos ut eos quaerat. Architecto quia vero libero sit modi suscipit voluptatem. Sit et repudiandae qui nostrum porro aut est repellendus. Hic autem ipsam doloribus eos illum tenetur et. Voluptas sequi ullam quaerat rem omnis ullam. Nesciunt omnis est ab omnis. Ea commodi nihil blanditiis at et id velit. Ipsam sit quasi et provident culpa deleniti. Quibusdam libero qui inventore et. Commodi sint explicabo possimus harum quisquam quasi eius. Hic omnis consequatur voluptas debitis. Tempora est aliquam est qui. Deserunt placeat amet possimus dolorem voluptatem rerum. Iusto distinctio praesentium et dolores. Nemo voluptatibus illum sed eum doloremque nisi doloribus. Vitae est id nesciunt corrupti veniam voluptatem.', 'Waldo', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (8, 'Praesentium ut modi error qui fugit voluptatem molestias quidem.', 'Ea eligendi in asperiores maiores perferendis. Molestias aut minus sint et et. Ipsum eius ipsam aliquam voluptate porro harum consequatur aliquid. Provident dolorum magni eos aut et qui. Dolorum dolorem quia voluptatem dolorem. Non ea nam esse at quo quae. Quis hic voluptatum beatae et consequatur corporis. Culpa enim velit tenetur repellat at. Adipisci dolores sed sunt ipsa nostrum praesentium. Nobis ipsum a aut non et aliquam. Nostrum sequi quia sint explicabo eius. Maxime reiciendis et minima magni a dolorum quo. Porro quisquam qui ea rerum.', 'Justen', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (9, 'Rerum ipsum et voluptatem dolor consequatur nesciunt quo.', 'Aut voluptates eos tempora eligendi dolorum. Aut inventore vitae doloribus assumenda iusto ut. In omnis iusto optio. Ab voluptatem error et quia voluptatum cumque. Veniam ad nihil illum qui. Quis dolores autem consectetur vero illum harum in. Ab illum veritatis ut et eaque et nihil nulla. Non facere iste error qui consequatur temporibus. Officiis laudantium voluptatum quasi voluptatem totam inventore dolores. Iusto dolores et sint tempore autem porro ea. Omnis provident quia veritatis quo ut quaerat blanditiis. Deleniti ex illo est culpa beatae ea ut quaerat. Veniam doloribus dolorum aut aliquam porro. Ipsa iure ipsum iste laborum itaque distinctio ut. Possimus minima eligendi ipsum. Dolor quia assumenda autem consequuntur necessitatibus voluptatem dignissimos debitis. Ipsam et esse est quae eum. Earum et quis accusantium in quis delectus quam.', 'Rowan', '2017-11-21 19:39:43'); INSERT INTO `blog` (`id`, `title`, `blog_content`, `author`, `created`) VALUES (10, 'Maxime error aspernatur dolores enim.', 'Dolore nisi inventore veritatis vel vero. Ipsa veniam libero quia sequi rerum non. Veniam odio ducimus odit aut et. Eos et quae quasi iusto a. In incidunt perferendis incidunt vel sint officia asperiores. Qui sint beatae officia ut officiis. Sed harum quia tenetur sed voluptatem numquam in cum. Temporibus est cumque iusto labore assumenda dolorum. Et iusto omnis nostrum quis et placeat. Aliquid aspernatur eius voluptatem ut deleniti. Est et alias laboriosam est accusantium quod. Quam minus nostrum cupiditate iure ut iure.', 'Theo', '2017-11-21 19:39:44'); |
Database Connection:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $host = 'localhost'; $user = 'root'; $password = ''; $database = 'demo'; $conn = mysqli_connect($host,$user,$password,$database); if (mysqli_connect_errno()) { echo "MYSQL Connection failed: " . mysqli_connect_error(); exit(); } ?> |
Fetch All Data:
1 2 3 4 5 |
$sql = 'select * from blog'; $result = mysqli_query($conn,$sql); $rows = mysqli_fetch_all($result,MYSQLI_ASSOC); |
Display All Data:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<table> <tr> <th>id</th> <th>Title</th> <th>Author</th> <th>Created</th> <th>Action</th> </tr> <?php foreach($rows as $post) { ?> <tr> <td><?php echo $post['id'] ;?></td> <td><?php echo $post['title'] ;?></td> <td><?php echo $post['author'] ;?></td> <td><?php echo $post['created'] ;?></td> <td><button class="delete-post" onclick="deletePost(<?php echo $post['id'] ;?>)"> Delete </button></td> </tr> <?php } ?> </table> |
In the above code I use onclick
event and pass deletePost
javascript function that takes post id as parameter.
Javascript Confirmation:
1 2 3 4 5 6 7 8 9 10 11 12 |
<script> function deletePost(id){ if(id){ var deleteConfirm = confirm('Are you Sure?'); if(deleteConfirm == true){ window.location.href="index.php?action=delete&id="+id; } } } </script> |
deletePost
is a custom javascript function which trigger confirm dialog box with ‘Are you Sure?’ message. When user will click on ‘OK’ then this function will redirect user to same page but with action and id as query string.
Delete Record:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php if(isset($_GET['action'],$_GET['id']) && $_GET['action'] == 'delete') { $id = trim($_GET['id']); $deleteSql = 'delete from blog where id = '.$id; mysqli_query($conn,$deleteSql); if(mysqli_query($conn,$deleteSql)) { header('location:index.php?success=true'); exit(); } } ?> |
Above code will check action and id parameter. And delete the record using id. After successfull deletion above code will redirect user to index.php
with success query string
Success Message:
1 2 3 4 5 6 7 8 |
<?php if(isset($_GET['success']) && $_GET['success'] == true) { echo '<div class="alert-success">Record has been deleted successfully</div>'; } ?> |
All Together:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
<?php $host = 'localhost'; $user = 'root'; $password = ''; $database = 'demo'; $conn = mysqli_connect($host,$user,$password,$database); if (mysqli_connect_errno()) { echo "MYSQL Connection failed: " . mysqli_connect_error(); exit(); } $sql = 'select * from blog'; $result = mysqli_query($conn,$sql); $rows = mysqli_fetch_all($result,MYSQLI_ASSOC); if(isset($_GET['action'],$_GET['id']) && $_GET['action'] == 'delete') { $id = trim($_GET['id']); $deleteSql = 'delete from blog where id = '.$id; mysqli_query($conn,$deleteSql); if(mysqli_query($conn,$deleteSql)) { header('location:index.php?success=true'); exit(); } } ?> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Demo Delete Data from database in php using button</title> <style> .container{ width:900px; margin:0 auto; padding:5px; } h1{ font-size: 23px; font-family: sans-serif; } table{ width:100%; border-collapse:collapse; } table th{ border:1px solid #F05519; padding:10px; background:#061e5a; color:#ffffff; } table td{ border:1px solid #F05519; padding:10px; } button{ background:red; border:1px solid red; padding:5px; color:#ffffff; cursor:pointer; } button:hover,button:focus{ background:green; border:1px solid green; } .alert-success{ border: 1px solid #a8eaa8; padding: 5px; margin: 10px 0px; background: #009b00; color: white; } </style> </head> <body> <div class="container"> <h1>Blog Posts</h1> <?php if(isset($_GET['success']) && $_GET['success'] == true) { echo '<div class="alert-success">Record has been deleted successfully</div>'; } ?> <table> <tr> <th>id</th> <th>Title</th> <th>Author</th> <th>Created</th> <th>Action</th> </tr> <?php foreach($rows as $post) { ?> <tr> <td><?php echo $post['id'] ;?></td> <td><?php echo $post['title'] ;?></td> <td><?php echo $post['author'] ;?></td> <td><?php echo $post['created'] ;?></td> <td><button class="delete-post" onclick="deletePost(<?php echo $post['id'] ;?>)"> Delete </button></td> </tr> <?php } ?> </table> </div> <script> function deletePost(id){ if(id){ var deleteConfirm = confirm('Are you Sure?'); if(deleteConfirm == true){ window.location.href="index.php?action=delete&id="+id; } } } </script> </body> </html> |