1

<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.

Divakarcool
  • 473
  • 6
  • 20
  • what and how comes from database...?? We need such information to solve problems. Try it using array. – Ajay Makwana Nov 18 '15 at 09:27
  • 4
    Possible duplicate of [How to get multiple selected values of select box in php?](http://stackoverflow.com/questions/2407284/how-to-get-multiple-selected-values-of-select-box-in-php) – bansi Nov 18 '15 at 09:29

7 Answers7

2
<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'";
}?>
Nana Partykar
  • 10,556
  • 10
  • 48
  • 77
  • @Divakarcool : If you think this answer helped you. Please mark it as correct answer. As it will help other user to find it easily. Thanks. Glad to help. – Nana Partykar Nov 18 '15 at 12:29
0

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.

Pathik Vejani
  • 4,263
  • 8
  • 57
  • 98
0

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>
Deenadhayalan Manoharan
  • 5,436
  • 14
  • 30
  • 50
0

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']);
Jalpa
  • 697
  • 3
  • 13
0

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;
Parth Chavda
  • 1,819
  • 1
  • 23
  • 30
0

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

Julian Heinovski
  • 1,822
  • 3
  • 16
  • 27
manigopal
  • 1
  • 5
  • 1
    Could you please explain why this works perfectly for you? Just dumping code isn't a helpful answer. – oscfri Jul 23 '18 at 17:02
  • @insert we pass the array values here by this code, // assigning value foreach($_POST["movie_genre"] as $row) { $movie_genre.= $row.', '; } $movie_genre = substr($movie_genre, 0, -2); – manigopal Jul 24 '18 at 07:16
0

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.
}
Dexter
  • 7,911
  • 4
  • 41
  • 40