В настоящее время у меня есть поле множественного выбора, которое функционирует должным образом, пока не будет последний элемент, который не удаляется из базы данных при отмене выбора.По какой-то причине все, кроме 1 предмета удалены.
$domain_records = $DB->get_records('tag', ['tagtype' => 'domain'], $sort = 'rawname', '*');
if(!empty($_POST["domain_list"]) || isset($_POST["domain_list"])){
$posted_domains = array();
$posted_domains = $_POST["domain_list"];
// elseif logic submits newly selected tags
foreach($domain_records as $domain_record) {
// already selected and still selected
if(in_array($domain_record->id, $posted_domains) === true &&
$DB->record_exists('tcors_journal_tags_matrix', array('journal_publication_id' => $pubid, 'tag_id' => $domain_record->id))) {
continue;
}
// selected and no longer selected on post
else if(in_array($domain_record->id, $posted_domains) === false &&
$DB->record_exists('tcors_journal_tags_matrix', array('journal_publication_id' => $pubid, 'tag_id' => $domain_record->id))) {
// DELETE ME!!!!
$DB->delete_records("tcors_journal_tags_matrix", array('journal_publication_id' => $pubid, 'tag_id' => $domain_record->id));
}
else if(empty($posted_domains)){
$DB->delete_records("tcors_journal_tags_matrix", array('journal_publication_id' => $pubid, 'tag_domain' => "Domain"));
//$DB->delete_records("tcors_journal_tags_matrix", array('journal_publication_id' => $pubid, 'tag_id' => $domain_record->id));
}
else if(in_array($domain_record->id, $posted_domains) === true) {
$tag_matrix = new \stdClass();
$tag_matrix->journal_publication_id = $pubid;
$tag_matrix->tag_id = $domain_record->id;
$tag_matrix->tag_domain = 'Domain';
$tag_matrix->create_date = time();
$tag_matrix->create_by = $USER->id;
$tag_matrix->modify_date = time();
$tag_matrix->modify_by = $USER->id;
$DB->insert_record('tcors_journal_tags_matrix', $tag_matrix);
}
}
}
Моя попытка учесть сценарий, в котором массив $ posts_domains (который содержит значения, подлежащие отправке в БД) является вторым, последним оператором else if.Я хотел бы, чтобы все элементы были удалены, когда массив обратной записи ($ posts_domains) не содержит значений.