Divakarcool
Divakarcool

Reputation: 481

how to update multiple select box values in php mysql

<select name="specialization" multiple>
            <option value=""></option>
            <option value="United States" selected>United States</option>
            <option value="United Kingdom">United Kingdom</option>
            <option value="Afghanistan" selected>Afghanistan</option>
            <option value="Aland Islands">Aland Islands</option>
            <option value="Albania">Albania</option>
            <option value="Algeria">Algeria</option>
            <option value="American Samoa">American Samoa</option>
            <option value="Andorra">Andorra</option>
  </select>

how to update multiple select values comma separated in database column.

Upvotes: 1

Views: 10278

Answers (7)

Nana Partykar
Nana Partykar

Reputation: 10548

<form method='POST' action='somepage.php'>
    <select name="specialization[]" multiple>
        <option value=""></option>
        <option value="United States" selected>United States</option>
        <option value="United Kingdom">United Kingdom</option>
        <option value="Afghanistan" selected>Afghanistan</option>
        <option value="Aland Islands">Aland Islands</option>
        <option value="Albania">Albania</option>
        <option value="Algeria">Algeria</option>
        <option value="American Samoa">American Samoa</option>
        <option value="Andorra">Andorra</option>
    </select>
    <input type='submit' value='submit'>
</form>

somepage.php

<?
$specialization = isset($_POST['specialization']) ? $_POST['specialization'] : [] ;
$totalSpec = sizeof($specialization);
for($i = 0; $i < $totalSpec; $i++){
    $spec = $specialization[$i];
    $query="INSERT INTO TableName SET SpecializationColumnName='$spec'";
}?>

OR

<?
$specialization = isset($_POST['specialization']) ? implode(",",$_POST['specialization']) : '';
$query = "";
if(!empty($specialization)){
   $query = "INSERT INTO TableName SET SpecializationColumnName='$specialization'";
}?>

Upvotes: 2

Dexter
Dexter

Reputation: 9324

Although it is not advisable to INSERT using comma separated values into the database. But if that's what you want @Nana Partykar code will work.

But If anyone looking for Normalization method, you can do this.

<select name="specialization[]" multiple> // notice the square bracket in the name
    <option value=""></option>
    <option value="United States" selected>United States</option>
    ...
</select>

$Implode = implode(',', $_POST['specialization']);
$Explode = explode(',', $Implode);

foreach ($Explode as $specialization) {
    $sql ="INSERT INTO TableName (SpecializationColumnName) VALUES ('$specialization');"; // notice two semicolon at the end
    $query = mysqli_query($con, $sql); // This has to be inside the foreach loop to work.
}

Upvotes: 0

manigopal
manigopal

Reputation: 1

This works perfect for me:

<div class="form-group">
<label for="exampleInputEmail1">Enter Movie Genre [Check for Multiple Select]</label> <br>
<select class="form-control" id="movie_genre"  multiple name="movie_genre[]">
<!-- <option value="choose-category">Choose Movie Genre</option> -->
<?php

$sql = mysqli_query($connection, "SELECT * From genre_info");
$row = mysqli_num_rows($sql);
while ($row = mysqli_fetch_array($sql)) {
    echo "<option value='".$row['genre_type']
        ."'>".$row['genre_type']
        ."</option>";
}
?>
</select>
</div>

// assigning value

foreach($_POST["movie_genre"] as $row)
{
    $movie_genre.= $row.', ';
}
$movie_genre = substr($movie_genre, 0, -2);

// insert into Db.,

$sql_query1 = "INSERT INTO movies_info (`movie_name`,`movie_image`,`movie_description`,`movie_trailer`,`release_date`,
    `release_year`,`movie_genre`,`movie_rating`,`movie_country`,`is_featured`)
VALUES('$movie_name','$target','$movie_description','$movie_trailer','$release_date',
    '$release_year','$movie_genre','$movie_rating','$movie_country','$is_featured')";

My Question is how to make work for upd

Upvotes: 0

Pathik Vejani
Pathik Vejani

Reputation: 4491

Try this: name="specialization[]"

<select name="specialization[]" multiple>
    <option value=""></option>
    <option value="United States" selected>United States</option>
    <option value="United Kingdom">United Kingdom</option>
    <option value="Afghanistan" selected>Afghanistan</option>
    <option value="Aland Islands">Aland Islands</option>
    <option value="Albania">Albania</option>
    <option value="Algeria">Algeria</option>
    <option value="American Samoa">American Samoa</option>
    <option value="Andorra">Andorra</option>
</select>

then on submit, var_dump($_POST['specialization']); exit; you can see selected values. You will get comma separated values and then you can use implode function.

Upvotes: 0

Parth Chavda
Parth Chavda

Reputation: 1829

You can use array for store multiple data.

<select name="specialization[]" multiple>
<option value="United States" selected>United States</option>
    <option value="United Kingdom">United Kingdom</option>
    <option value="Afghanistan" selected>Afghanistan</option>
    <option value="Aland Islands">Aland Islands</option>
    <option value="Albania">Albania</option>
    <option value="Algeria">Algeria</option>
    <option value="American Samoa">American Samoa</option>
    <option value="Andorra">Andorra</option>

</select>

after submit get value using

$specialization = implode(',',$_REQUEST['specialization']);

$specialization is multiple select values comma separated

after you can update the table value using this query

 UPDATE table_name
SET column_name=$specialization,column_name=value2,...
WHERE some_column=some_value;

Upvotes: 0

Jalpa
Jalpa

Reputation: 720

You can use array for store multiple data.

<select name="specialization[]" multiple>
</select>

In store file you can get data in array and you can store it with comma separated.

$specialization = implode(',',$_POST['specialization']);

if you want to test please write below code.

echo "<pre>";
print_r($_POST['specialization']);

Upvotes: 0

Deenadhayalan Manoharan
Deenadhayalan Manoharan

Reputation: 5444

Try this...

  $specialization=implode(",",$_POST['specialization']);

Query:

 Insert into table ("specialization")values('$specialization');

    or  

   insert into table set specialization='$specialization';



        <select name="specialization[]" multiple>
                    <option value=""></option>
                    <option value="United States" selected>United States</option>
                    <option value="United Kingdom">United Kingdom</option>
                    <option value="Afghanistan" selected>Afghanistan</option>
                    <option value="Aland Islands">Aland Islands</option>
                    <option value="Albania">Albania</option>
                    <option value="Algeria">Algeria</option>
                    <option value="American Samoa">American Samoa</option>
                    <option value="Andorra">Andorra</option>
          </select>

Upvotes: 0

Related Questions