Sometimes its require to quickly modify multiple records and save them to the MySQL database table.
It makes easier to update records instead of updating one by one.
With checkboxes, enable multiple records selected from the list.
In this tutorial, I show how you can update multiple selected records to MySQL with PHP.
Contents
1. Table structure
Create users table.
CREATE TABLE `users` ( `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `username` varchar(80) DEFAULT NULL, `fname` varchar(50) NOT NULL, `lname` varchar(50) NOT NULL, `age` int(2) DEFAULT NULL, `salary` int(10) NOT NULL, `email` varchar(80) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. Configuration
Create a config.php for database connection.
Completed Code
<?php
$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = "tutorial"; /* Database name */
$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
3. Record List
Create a <form > which contains submit button for update selected records and <table > to list records.
In the <table > add a checkbox in a <th> for check/uncheck all checkboxes.
Loop on fetched records and create <tr >. In first <td> add the checkbox for record selection. Set name='update[]' and value='<?= $id ?>'.
jQuery Script –
When checkAll checkbox state change then check if it is checked or not. If checked then set all records checkboxes checked property true otherwise false.
On the update checkbox click check if the total number of checkboxes equals to total checked checkboxes. If equal then set checkAll checkbox checked property true otherwise false.
Completed Code
<div class='container'>
<!-- Form -->
<form method='post' action=''>
<!-- Submit button -->
<input type='submit' value='Update Selected Records' name='but_update'><br><br>
<!-- Record list -->
<table border='1' style='border-collapse: collapse;' >
<tr style='background: whitesmoke;'>
<!-- Check/Uncheck All-->
<th><input type='checkbox' id='checkAll' > Check</th>
<th>Username</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
<th>Salary</th>
<th>Email</th>
</tr>
<?php
$query = "SELECT * FROM users";
$result = mysqli_query($con,$query);
while($row = mysqli_fetch_array($result) ){
$id = $row['id'];
$username = $row['username'];
$fname = $row['fname'];
$lname = $row['lname'];
$age = $row['age'];
$salary = $row['salary'];
$email = $row['email'];
?>
<tr>
<!-- Checkbox -->
<td><input type='checkbox' name='update[]' value='<?= $id ?>' ></td>
<td><?= $username ?></td>
<td><input type='text' name='fname_<?= $id ?>' value='<?= $fname ?>' ></td>
<td><input type='text' name='lname_<?= $id ?>' value='<?= $lname ?>' ></td>
<td><input type='number' name='age_<?= $id ?>' value='<?= $age ?>' ></td>
<td><input type='number' name='salary_<?= $id ?>' value='<?= $salary ?>' ></td>
<td><input type='text' name='email_<?= $id ?>' value='<?= $email ?>' ></td>
</tr>
<?php
}
?>
</table>
</form>
</div>
<!-- Script -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// Check/Uncheck ALl
$('#checkAll').change(function(){
if($(this).is(':checked')){
$('input[name="update[]"]').prop('checked',true);
}else{
$('input[name="update[]"]').each(function(){
$(this).prop('checked',false);
});
}
});
// Checkbox click
$('input[name="update[]"]').click(function(){
var total_checkboxes = $('input[name="update[]"]').length;
var total_checkboxes_checked = $('input[name="update[]"]:checked').length;
if(total_checkboxes_checked == total_checkboxes){
$('#checkAll').prop('checked',true);
}else{
$('#checkAll').prop('checked',false);
}
});
});
</script>
4. Update Records
On <form > submit loop on selected checkboxes ids if selected.
Read the values from DOM elements according to $updateid. If all values entered then execute UPDATE query on $updateid.
Completed Code
if(isset($_POST['but_update'])){
if(isset($_POST['update'])){
foreach($_POST['update'] as $updateid){
$fname = $_POST['fname_'.$updateid];
$lname = $_POST['lname_'.$updateid];
$age = $_POST['age_'.$updateid];
$salary = $_POST['salary_'.$updateid];
$email = $_POST['email_'.$updateid];
if($fname !='' && $lname !='' && $age >0 && $salary >0 && $email != '' ){
$updateUser = "UPDATE users SET
fname='".$fname."',lname='".$lname."',
age=".$age.",salary=".$salary.",email='".$email."'
WHERE id=".$updateid;
mysqli_query($con,$updateUser);
}
}
}
}
5. Output
6. Conclusion
For multiple records, selection use checkbox elements and assign record id in the value attribute for accessing it on form submit for select and update records.
You can also use it to delete multiple records.
If you found this tutorial helpful then don't forget to share.
