Skip to content

Instantly share code, notes, and snippets.

@pipiscrew
Last active August 29, 2015 14:26
Show Gist options
  • Save pipiscrew/3bb8a7abfea372dc7745 to your computer and use it in GitHub Desktop.
Save pipiscrew/3bb8a7abfea372dc7745 to your computer and use it in GitHub Desktop.
using davidstutz bootstrap-multiselect via PHP
//more simply examples http://www.pipiscrew.com/2015/06/bootstrap-select-mutliselect/
////////////////////////[index.php]
<?php
//convert recordset to 1D array (will use it, to mark the multi-selects @ JS)
function get_array_by_set($db_set)
{
$rec_children = array();
foreach($db_set as $row) {
$rec_children[]= $row[0];
}
return $rec_children;
}
///////////////////READ SPEFIC RECORD
if (isset($_GET["id"])) {
$rec_id=intval($_GET["id"]);
$row = getRow($db,"SELECT * FROM events where event_id=?",array($rec_id));
//construct an array of children id records (fallback to JS)
$key_topic_set = getSet($db, "select event_key_topic_id from event_key_topic_ties where event_id=?",array($rec_id));
$cmb_key_topic = get_array_by_set($key_topic_set);
//construct an array of children id records (fallback to JS)
$present_set = getSet($db, "select event_present_id from event_present_ties where event_id=?",array($rec_id));
$cmb_present = get_array_by_set($present_set);
//construct an array of children id records (fallback to JS)
$benefits_set = getSet($db, "select event_benefit_id from event_benefits_ties where event_id=?",array($rec_id));
$cmb_benefits = get_array_by_set($benefits_set);
//construct an array of children id records (fallback to JS)
$reqs_set = getSet($db, "select event_requirement_id from event_requirement_ties where event_id=?",array($rec_id));
$cmb_reqs = get_array_by_set($reqs_set);
//construct an array of children id records (fallback to JS)
$tauds_set = getSet($db, "select event_target_audience_id from event_target_audience_ties where event_id=?",array($rec_id));
$cmb_tauds = get_array_by_set($tauds_set);
//construct an array of children id records (fallback to JS)
$sponsors_set = getSet($db, "select event_sponsor_id from event_sponsor_ties where event_id=?",array($rec_id));
$cmb_sponsors = get_array_by_set($sponsors_set);
//construct an array of children id records (fallback to JS)
$speakers_set = getSet($db, "select event_speaker_id from event_speaker_ties where event_id=?",array($rec_id));
$cmb_speakers = get_array_by_set($speakers_set);
}
///////////////////READ SPEFIC RECORD
//fill multi-selects
$key_topics = getSet($db,"SELECT event_key_topic_id,event_key_topic_name FROM event_key_topics order by event_key_topic_name",null);
$presents = getSet($db,"SELECT event_present_id,event_present_name FROM event_presents order by event_present_name",null);
$benefits = getSet($db,"SELECT event_benefit_id, event_benefit_name FROM event_benefits order by event_benefit_name",null);
$reqs = getSet($db,"SELECT event_requirement_id, event_requirement_name FROM event_requirements order by event_requirement_name",null);
$target_audiences = getSet($db,"SELECT event_target_audience_id, event_target_audience_name FROM event_target_audiences order by event_target_audience_name",null);
$sponsors = getSet($db,"SELECT event_sponsor_id, event_sponsor_name FROM event_sponsors order by event_sponsor_name",null);
$speakers = getSet($db,"SELECT event_speaker_id, event_speaker_name FROM event_speakers order by event_speaker_name",null);
//fill multi-selects
?>
<script>
// jquery
$(function() {
///////////////////////////////////////////////////////////// FILL key_topics
var jArray_key_topics = <?php echo json_encode($key_topics); ?>;
var combo_key_topics_rows = "";
for (var i = 0; i < jArray_key_topics.length; i++)
{
combo_key_topics_rows += "<option value='" + jArray_key_topics[i]["event_key_topic_id"] + "'>" + jArray_key_topics[i]["event_key_topic_name"] + "</option>";
}
$("#cmb_key_topic").html(combo_key_topics_rows);
$('#cmb_key_topic').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL key_topics
///////////////////////////////////////////////////////////// FILL presents (also included)
var jArray_presents = <?php echo json_encode($presents); ?>;
var combo_presents_rows = "";
for (var i = 0; i < jArray_presents.length; i++)
{
combo_presents_rows += "<option value='" + jArray_presents[i]["event_present_id"] + "'>" + jArray_presents[i]["event_present_name"] + "</option>";
}
$("#cmb_present").html(combo_presents_rows);
$('#cmb_present').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL presents (also included)
///////////////////////////////////////////////////////////// FILL benefits
var jArray_benefits = <?php echo json_encode($benefits); ?>;
var combo_benefits_rows = "";
for (var i = 0; i < jArray_benefits.length; i++)
{
combo_benefits_rows += "<option value='" + jArray_benefits[i]["event_benefit_id"] + "'>" + jArray_benefits[i]["event_benefit_name"] + "</option>";
}
$("#cmb_benefits").html(combo_benefits_rows);
$('#cmb_benefits').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL benefits
///////////////////////////////////////////////////////////// FILL req
var jArray_reqs = <?php echo json_encode($reqs); ?>;
var combo_reqs_rows = "";
for (var i = 0; i < jArray_reqs.length; i++)
{
combo_reqs_rows += "<option value='" + jArray_reqs[i]["event_requirement_id"] + "'>" + jArray_reqs[i]["event_requirement_name"] + "</option>";
}
$("#cmb_reqs").html(combo_reqs_rows);
$('#cmb_reqs').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL req
///////////////////////////////////////////////////////////// FILL target_audiences
var jArray_target_audiences = <?php echo json_encode($target_audiences); ?>;
var combo_target_audiences_rows = "";
for (var i = 0; i < jArray_target_audiences.length; i++)
{
combo_target_audiences_rows += "<option value='" + jArray_target_audiences[i]["event_target_audience_id"] + "'>" + jArray_target_audiences[i]["event_target_audience_name"] + "</option>";
}
$("#cmb_tauds").html(combo_target_audiences_rows);
$('#cmb_tauds').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL target_audiences
///////////////////////////////////////////////////////////// FILL sponsors
var jArray_sponsors = <?php echo json_encode($sponsors); ?>;
var combo_sponsors_rows = "";
for (var i = 0; i < jArray_sponsors.length; i++)
{
combo_sponsors_rows += "<option value='" + jArray_sponsors[i]["event_sponsor_id"] + "'>" + jArray_sponsors[i]["event_sponsor_name"] + "</option>";
}
$("#cmb_sponsors").html(combo_sponsors_rows);
$('#cmb_sponsors').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL sponsors
///////////////////////////////////////////////////////////// FILL speakers
var jArray_speakers = <?php echo json_encode($speakers); ?>;
var combo_speakers_rows = "";
for (var i = 0; i < jArray_speakers.length; i++)
{
combo_speakers_rows += "<option value='" + jArray_speakers[i]["event_speaker_id"] + "'>" + jArray_speakers[i]["event_speaker_name"] + "</option>";
}
$("#cmb_speakers").html(combo_speakers_rows);
$('#cmb_speakers').multiselect({
includeSelectAllOption: true
});
///////////////////////////////////////////////////////////// FILL speakers
///////////////////////////////////////////////////////////// EDIT RECORD
var jArray = <?php echo json_encode($row); ?>;
if (jArray) {
$('[name=eventsFORM_updateID]').val(jArray["event_id"]);
$('[name=event_type_id]').val(jArray["event_type_id"]);
var cmb_key_topic = <?php echo json_encode($cmb_key_topic); ?>;
$('#cmb_key_topic').multiselect('select', cmb_key_topic);
var cmb_present = <?php echo json_encode($cmb_present); ?>;
$('#cmb_present').multiselect('select', cmb_present);
var cmb_benefits = <?php echo json_encode($cmb_benefits); ?>;
$('#cmb_benefits').multiselect('select', cmb_benefits);
var cmb_reqs = <?php echo json_encode($cmb_reqs); ?>;
$('#cmb_reqs').multiselect('select', cmb_reqs);
var cmb_tauds = <?php echo json_encode($cmb_tauds); ?>;
$('#cmb_tauds').multiselect('select', cmb_tauds);
var cmb_sponsors = <?php echo json_encode($cmb_sponsors); ?>;
$('#cmb_sponsors').multiselect('select', cmb_sponsors);
var cmb_speakers = <?php echo json_encode($cmb_speakers); ?>;
$('#cmb_speakers').multiselect('select', cmb_speakers);
}
///////////////////////////////////////////////////////////// EDIT RECORD
//when form submitted (multi-selects belong there)
$("#form_EVENTS").submit(function(e) {
e.preventDefault();
////////////////////////// validation
var form = $(this);
form.validate();
if (!form.valid())
return;
////////////////////////// validation
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
//if #multiple select# is exists merge to post!
if($("#cmb_key_topic").length > 0) {
postData.push({name: "cmb_key_topic", value : $("#cmb_key_topic").val()});
postData.push({name: "cmb_present", value : $("#cmb_present").val()});
postData.push({name: "cmb_benefits", value : $("#cmb_benefits").val()});
postData.push({name: "cmb_reqs", value : $("#cmb_reqs").val()});
postData.push({name: "cmb_tauds", value : $("#cmb_tauds").val()});
postData.push({name: "cmb_sponsors", value : $("#cmb_sponsors").val()});
postData.push({name: "cmb_speakers", value : $("#cmb_speakers").val()});
}
loading.appendTo($('#formEVENTS'));
$.ajax(
{
url : formURL,
type: "POST",
data : postData,
success:function(data, textStatus, jqXHR)
{
loading.remove();
if (data=="00000")
{ //refresh table @ main php
$('#events_tbl').bootstrapTable('refresh');
//return to grid
$("#events").show();
$("#events_details").hide();
}
else
alert("ERROR");
},
error: function(jqXHR, textStatus, errorThrown)
{
loading.remove();
alert("ERROR - connection error");
}
});
});
}) /jQ ends
</script>
<body>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Key Course Topics :</label>
<select class="form-control" id="cmb_key_topic" multiple="multiple" name="cmb_key_topic[]"></select>
</div>
</div>
</div>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Also Included :</label>
<select class="form-control" id="cmb_present" multiple="multiple" name="cmb_present[]"></select>
</div>
</div>
</div>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Benefits :</label>
<select class="form-control" id="cmb_benefits" multiple="multiple" name="cmb_benefits[]"></select>
</div>
</div>
</div>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Requirements :</label>
<select class="form-control" id="cmb_reqs" multiple="multiple" name="cmb_reqs[]"></select>
</div>
</div>
</div>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Target Audiences :</label>
<select class="form-control" id="cmb_tauds" multiple="multiple" name="cmb_tauds[]"></select>
</div>
</div>
</div>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Sponsors :</label>
<select class="form-control" id="cmb_sponsors" multiple="multiple" name="cmb_sponsors[]"></select>
</div>
</div>
</div>
<div class="col-xs-6 col-md-4">
<div class='form-group'>
<div style="text-align: right;">
<label> Speakers :</label>
<select class="form-control" id="cmb_speakers" multiple="multiple" name="cmb_speakers[]"></select>
</div>
</div>
</div>
</div>
</body>
////////////////////////[save.php]
<?php
.
//insert/update the main record here
//when insert mark $trans_type=0
//when update mark $trans_type=1
.
.
$res = $stmt->errorCode(); //get result
if ($res=="00000") //if success
{
if ($trans_type==0)
$event_id =$db->lastInsertId();
else
{
$event_id = $_POST['eventsFORM_updateID'];
//when update delete all to FK table!
executeSQL($db, "delete from post_categories where post_id=?", array($post_id));
}
//////////////////////
//[event_key_topics]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_key_topic_ties where event_id=?", array($event_id));
//get key_topics
$key_topics = $_POST['cmb_key_topic'];
if (!empty($key_topics)) {
$key_topics_arr = explode(',', $key_topics);
$sql = "INSERT INTO `event_key_topic_ties` (event_id, event_key_topic_id, event_key_topic_tie_order_id) VALUES (:event_id, :event_key_topic_id, :event_key_topic_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($key_topics_arr as $key_topics_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_key_topic_id' , $key_topics_id);
$stmt->bindValue(':event_key_topic_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
//////////////////////
//[Also Included]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_present_ties where event_id=?", array($event_id));
//get key_topics
$presents = $_POST['cmb_present'];
if (!empty($presents)) {
$presents_arr = explode(',', $presents);
$sql = "INSERT INTO `event_present_ties` (event_id, event_present_id, event_present_tie_order_id) VALUES (:event_id, :event_present_id, :event_present_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($presents_arr as $present_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_present_id' , $present_id);
$stmt->bindValue(':event_present_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
//////////////////////
//[Benefits]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_benefits_ties where event_id=?", array($event_id));
//get key_topics
$benefits = $_POST['cmb_benefits'];
if (!empty($benefits)) {
$benefits_arr = explode(',', $benefits);
$sql = "INSERT INTO `event_benefits_ties` (event_id, event_benefit_id, event_benefit_tie_order_id) VALUES (:event_id, :event_benefit_id, :event_benefit_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($benefits_arr as $benefit_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_benefit_id' , $benefit_id);
$stmt->bindValue(':event_benefit_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
//////////////////////
//[Reqs]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_requirement_ties where event_id=?", array($event_id));
//get key_topics
$reqs = $_POST['cmb_reqs'];
if (!empty($reqs)) {
$reqs_arr = explode(',', $reqs);
$sql = "INSERT INTO `event_requirement_ties` (event_id, event_requirement_id, event_requirement_tie_order_id) VALUES (:event_id, :event_requirement_id, :event_requirement_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($reqs_arr as $req_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_requirement_id' , $req_id);
$stmt->bindValue(':event_requirement_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
//////////////////////
//[Tauds]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_target_audience_ties where event_id=?", array($event_id));
//get key_topics
$tauds = $_POST['cmb_tauds'];
if (!empty($tauds)) {
$tauds_arr = explode(',', $tauds);
$sql = "INSERT INTO `event_target_audience_ties` (event_id, event_target_audience_id, event_target_audience_tie_order_id) VALUES (:event_id, :event_target_audience_id, :event_target_audience_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($tauds_arr as $taud_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_target_audience_id' , $taud_id);
$stmt->bindValue(':event_target_audience_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
//////////////////////
//[Sponsors]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_sponsor_ties where event_id=?", array($event_id));
//get key_topics
$sponsors = $_POST['cmb_sponsors'];
if (!empty($sponsors)) {
$sponsors_arr = explode(',', $sponsors);
$sql = "INSERT INTO `event_sponsor_ties` (event_id, event_sponsor_id, event_sponsor_tie_order_id) VALUES (:event_id, :event_sponsor_id, :event_sponsor_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($sponsors_arr as $sponsor_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_sponsor_id' , $sponsor_id);
$stmt->bindValue(':event_sponsor_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
//////////////////////
//[Speakers]
//////////////////////
//when update delete all to FK table!
executeSQL($db, "delete from event_speaker_ties where event_id=?", array($event_id));
//get key_topics
$speakers = $_POST['cmb_speakers'];
if (!empty($speakers)) {
$speakers_arr = explode(',', $speakers);
$sql = "INSERT INTO `event_speaker_ties` (event_id, event_speaker_id, event_speaker_tie_order_id) VALUES (:event_id, :event_speaker_id, :event_speaker_tie_order_id)";
if ($stmt = $db->prepare($sql)){
foreach ($speakers_arr as $speaker_id) {
$stmt->bindValue(':event_id' , $event_id);
$stmt->bindValue(':event_speaker_id' , $speaker_id);
$stmt->bindValue(':event_speaker_tie_order_id' , 0);
$stmt->execute();
if($stmt->errorCode() != "00000"){
echo $stmt->errorCode();
exit;
} } } }
}
echo $res;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment