В настоящее время у меня есть страница с несколькими модалами (в моем примере только один), но в основном пользователь заходит на эту страницу и нажимает на элемент div, который вызывает модал с редактором tinyMCE, они создают контент и нажимают кнопку Отправить.который закрывает модальное и отправляет ajax-вызов для создания записи для контента.
Это прекрасно работает.
Проблема в том, что если пользователь снова нажимает div, он вызывает модальноес их недавно созданным контентом для редактирования.Они вносят изменения, но отправка просто создает новую запись, что не то, что я хочу.Мне нужно сделать так, чтобы, если они снова щелкают по элементу div, вызывая модальный режим, когда они нажимают кнопку submit, он просто обновляет запись контента.
Я знаю, что мог бы сделать это, вероятно, с предложением дублирующего ключа, ноЯ не уверен, как поступить с модалом.
Скажем, пользователь нажимает на первый div, который имеет #leftHalfForm и создает некоторый контент, а затем отправляет.Это делает запись контента с идентификатором 182.
Теперь, когда они снова щелкают по левому диву модом #leftHalfForm, мне нужно знать во всплывающем окне модала, что он содержит данные дляcontent_id 182.
Модал с формой:
<div class="modal fade bd-example-modal-lg" id="leftFiftyModal" tabindex="-1" role="dialog" aria-labelledby="leftFiftyLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<?php include 'widgets.php'; ?>
<hr>
<h3>Create your own content</h3>
<form id="leftHalfForm" method="post">
<input type="hidden" name="page_content" id="leftHalfPageContent" value="">
<input type="hidden" name="panel_type" value="2">
<input type="hidden" id="page_id" name="page_id">
<textarea class="original" id="leftHalfTextArea" name="halfLeftText"></textarea>
<input type="submit" value="Save Content">
</form>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
Это мои JS и AJAX, которые появляются после того, как они сделали некоторый контент и отправили:
<script type="text/javascript">
$("#leftHalfForm").submit(function(e){
var leftContentVar = tinymce.get("leftHalfTextArea").getContent();
$(".leftContent").html(leftContentVar);
$("#leftHalfPageContent").val(leftContentVar);
var string = $('#leftHalfForm').serialize() + '&page_id=' + page_id;
console.log(string);
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "addPanel.php",
data: string,
cache: false,
success: function(response){
console.log(JSON.stringify(response));
console.log(string);
$('#leftFiftyModal').modal('hide');
$('.modal-backdrop').remove();
}
});
return false;
});
</script>
Ajax отправляет данные в этот скрипт, который вставляет содержимое, получает идентификатор этой записи содержимого и затем создает запись панели, содержащую этот идентификатор содержимого (это делается для создания записи для содержимого И записи панели, содержащей его. Для последующегощелчки, мне нужно только обновить запись содержимого):
$content = $_POST['page_content'];
$addContent = "
INSERT INTO content(content)
VALUES('$content');
";
if ($mysqlConn->query($addContent) === TRUE) {
$cont_id = $mysqlConn->insert_id;
$data['last_insert_id'] = $cont_id;
echo json_encode($data);
} else {
echo "Error: " . $addContent . "<br>" . $mysqlConn->error;
}
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];
$addPanel = "
INSERT INTO panels(panel_type_id, page_id, cont_id)
VALUES ('$panelID', '$pageID', '$cont_id');
";
// $mysqlConn->query($addPanel);
if ($mysqlConn->query($addPanel) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $addPanel . "<br>" . $mysqlConn->error;
}
Это все работает отлично, но как я могу изменить это так, чтобы каждый раз, когда они нажимают на этот модал для редактирования, он всегда содержит идентификатор для этогозапись содержимого?