How to fetch and update Dynamic Multiple select dropdown value in PHP

  • Tech Area
  • February 8, 2024



In this tutorials, We will learn how to fetch dynamic multiple select dropdown value and update it using PHP and MySQL. We are using in_array() function to show multiple select dropdown value dynamically.

Files used in this tutorial:

1- connection.php (database connection file)

2- index.php (registration form with multiple select dropdown)

3- show-details.php (show fetched data)

4- edit-details.php (update data)

Below are the step by step process of how to update dynamic multiple select dropdown value in PHP and MySQL.

Step 1: Create a Database connection

In this step, create a new file connection.php to create database connection.

connection.php

<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "college_db";
$connection = mysqli_connect("$server","$username","$password");
$select_db = mysqli_select_db($connection, $database);
if(!$select_db)
{
	echo("connection terminated");
}
?>

Step 2: Create Registration form

In this step, create a new file index.php. This is the main file used to create registration form with multiple select dropdown and insert value into database.

This screenshot shows the registration form with multiple select dropdown value.

index.php

<html>  
<head>  
    <title>Registration Form</title>  
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
    <link rel="stylesheet" type="text/css" href="css/select2.min.css">
</head>
<style>
 .box
 {
  width:100%;
  max-width:600px;
  background-color:#f9f9f9;
  border:1px solid #ccc;
  border-radius:5px;
  padding:16px;
  margin:0 auto;
 }
 .error
{
  color: red;
  font-weight: 700;
} 
</style>
<?php
include('connection.php');
if(isset($_REQUEST['register']))
{
  $name = $_REQUEST['name'];
  $email = $_REQUEST['email'];
  $subject = implode(", ",$_REQUEST['subject']);

  $insert_query = mysqli_query($connection, "insert into tbl_registration set name='$name', emailid='$email', subject='$subject'");
  if($insert_query>0)
  {
    $msg = "Data inserted successfully";
  }
  else
  {
    $msg = "Error!";
  }
}
?>
<body>  
    <div class="container">  
    <div class="table-responsive">  
    <h3 align="center">Registration Form</h3><br/>
    <a href="show-details.php">View Record</a>
     <div class="box">
     <form method="post" >
     <div class="form-group">
       <label for="name">Enter Your Name</label>
       <input type="text" name="name" id="name" placeholder="Enter Name" required class="form-control"/>
      </div>  
       <div class="form-group">
       <label for="email">Enter Your Email</label>
       <input type="email" name="email" id="email" placeholder="Enter Email" required class="form-control"/>
      </div>
      <div class="form-group">
       <label for="subject">Select Subject</label>
       <select name="subject[]" multiple required class="select form-control">
          <?php
          $select_query = mysqli_query($connection, "select subject_name from tbl_subject");
          while($result = mysqli_fetch_array($select_query)){?>
          <option><?php echo $result['subject_name']; ?></option>
        <?php } ?>
         </select>
      </div>
      <div class="form-group">
       <input type="submit" id="register" name="register" value="Submit" class="btn btn-success" />
       </div>
       <p class="error"><?php if(!empty($msg)){ echo $msg; } ?></p>
     </form>
     </div>
   </div>  
  </div>
 </body>  
</html>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/app.js"></script>
<script src="js/select2.min.js"></script>

Step 3: Fetch and Show data

In this step, create a new file show-details.php. This file is used to fetch and show data from the database.

show-details.php

<style>
table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 50%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
</style>
<table>
  <tr>
    <th>Name</th>
    <th>EmailId</th>
    <th>Subject</th>
    <th>Action</th>
   </tr>
  
  <?php
  include('connection.php');
  $select_query = mysqli_query($connection,"select * from tbl_registration");
  while($result = mysqli_fetch_array($select_query)){
  ?>
  <tr>
  <td><?php echo $result['name']; ?></td>
  <td><?php echo $result['emailid']; ?></td>
  <td><?php echo $result['subject']; ?></td>
  <td><a href="edit-details.php?ids=<?php echo $result['id'];?>">Edit</a></td>
  </tr>
  <?php } ?>
 </table>

Step 4: Update form data

In this step, create a new file edit-details.php. This file is used to update form data.

edit-details.php

<html>  
<head>  
    <title>Registration Form</title>  
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
    <link rel="stylesheet" type="text/css" href="css/select2.min.css">
</head>
<style>
 .box
 {
  width:100%;
  max-width:600px;
  background-color:#f9f9f9;
  border:1px solid #ccc;
  border-radius:5px;
  padding:16px;
  margin:0 auto;
 }
 .error
{
  color: red;
  font-weight: 700;
} 
</style>
<?php
include('connection.php');
$ids = $_GET['ids'];
$select_query = mysqli_query($connection,"select * from tbl_registration where id='$ids'");
$res = mysqli_fetch_array($select_query);

if(isset($_REQUEST['update']))
{
  $name = $_REQUEST['name'];
  $email = $_REQUEST['email'];
  $subject = implode(", ",$_REQUEST['subject']);

  $update_query = mysqli_query($connection,"update tbl_registration set name='$name', emailid='$email', subject='$subject' where id='$ids'");
  if($update_query>0)
  {
    $msg = "Data updated successfully";
    $select_query = mysqli_query($connection,"select * from tbl_registration where id='$ids'");
    $res = mysqli_fetch_array($select_query);
  }
  else
  {
    $msg = "Error!";
  }
}
?>
<body>  
    <div class="container">  
    <div class="table-responsive">  
    <h3 align="center">Registration Form</h3><br/>
    <a href="show-details.php">View Record</a>
     <div class="box">
     <form method="post" >
     <div class="form-group">
       <label for="name">Enter Your Name</label>
       <input type="text" name="name" id="name" placeholder="Enter Name" required class="form-control" value="<?php echo $res['name']; ?>"/>
      </div>  
       <div class="form-group">
       <label for="email">Enter Your Email</label>
       <input type="email" name="email" id="email" placeholder="Enter Email" required class="form-control" value="<?php echo $res['emailid']; ?>"/>
      </div>
      <div class="form-group">
       <label for="subject">Select Subject</label>
       <select name="subject[]" multiple required class="select form-control">
        <?php
        $subject = explode(", ",$res['subject']);
        $select_query = mysqli_query($connection, "select subject_name from tbl_subject");
        while($result = mysqli_fetch_array($select_query)){
          if(in_array($result['subject_name'], $subject))
            $selected = "selected";
          else
            $selected = "";
          ?>
          <option value="<?= $result['subject_name']; ?>" <?php echo $selected; ?>><?= $result['subject_name']; ?></option>
        <?php } ?>
         </select>
      </div>
      <div class="form-group">
       <input type="submit" id="update" name="update" value="Update" class="btn btn-success" />
       </div>
       <p class="error"><?php if(!empty($msg)){ echo $msg; } ?></p>
     </form>
     </div>
   </div>  
  </div>
 </body>  
</html>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/app.js"></script>
<script src="js/select2.min.js"></script>

Download Source Code


Subscribe us via Email

Join 10,000+ subscriber

Subscribe on YouTube