Reputation: 481
<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
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
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
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
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
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
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
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