У меня есть таблица с несколькими кнопками редактирования. Каждая кнопка редактирования должна открывать модальное окно, и я пытаюсь передать ему delivery_id, чтобы затем использовать его в запросе MySQL.
echo "<td><button type='button' class='btn dt_buttons' data-toggle='modal' data-id='$delivery_id' data-target='#editModal'>Edit</button></td>";
Как лучше всего получить это значение в модальном окне и использовать его в качестве переменной? Я думал, что просто использовать $ delivery_id сработает, но, конечно, это было бы слишком просто!
Код внутри модального окна:
<div id = "editModal" class = "modal fade" role = "dialog">
<div class = "modal-dialog">
<!-- Modal content-->
<div class = "modal-content">
<div class = "modal-header">
<button type = "button" class = "close" data-dismiss = "modal">×</button>
<h4 class = "modal-title">Edit Purchase</h4>
</div>
<div class = "modal-body">
<?
$query = "SELECT id, supplier_id, date as del_date, delivery_number, po_number, cost_value FROM store_purchases WHERE id = $delivery_id";
echo $query;
$retval = f_select_query($query, $datarows);
$lint_product_id = f_htmlspecialchars_decode($datarows[0]->id , ENT_QUOTES);
$supplier_id = intval($datarows[0]->supplier_id);
$delivery_date = $datarows[0]->del_date;
$delivery_number = intval($datarows[0]->delivery_number);
$lint_unit_cost = f_htmlspecialchars_decode($datarows[0]->cost_value , ENT_QUOTES);
$lint_unit_cost = floatval($lint_unit_cost);
$lint_unit_cost = number_format($lint_unit_cost, 2);
$department_id_dropdown = f_get_dropdown("supplier_name", "supplier_name", "supplier_master", $supplier_id, "id", " store_id = $store_id", '', '', '', false, false, true);
?>
<div class = "container-fluid" id = "div_user_master" class = "ae_form" >
<form id = "myForm" action = "/platformDev/create_subscription.php" method = "POST">
<?
echo "Supplier Name: <td class='text-right' id='department_id' style='width:20%;'> $department_id_dropdown </td> <input id='purch_id' name='purch_id' class='form-control purch_id' value='$product_id' type='hidden'/>";
echo "Delivery Date: <span class='required_field'><i class='fa fa-star fa-sm'></i> </span> <input class='form-control' tabindex='3' id='date' name='date' value= '$delivery_date' type='text'/> <br/>";
echo "Delivery Number: <input type='text' id='unit_cost' name='unit_cost' class='form-control unit_cost' style='width:80%;' value='$delivery_number' />";
echo "Invoice Cost: <input type='text' id='unit_cost' name='unit_cost' class='form-control unit_cost' style='width:80%;' value='$lint_unit_cost' /></div>";
?>
</form>
</div>
</div>
<div class = "modal-footer">
<button class = "btn form-btns btn-primary" style = "float: left;" data-dismiss = "modal" id = "customButton">Add Purchase</button>
<button type = "button" class = "btn dt_buttons close_this ajax_forms" data-dismiss = "modal">Close</button>
</div>
</div>
</div>






Приведенный ниже код получит значение data-id от нажатой кнопки.
Вы можете использовать этот шаблон:
$('#editModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
var delivery_id = button.data('id'); // delivery id here
var modal = $(this)
modal.find('.modal-title').text('Delivery #' + delivery_id);
modal.find('.modal-body').html('content here');
});
https://getbootstrap.com/docs/4.0/components/modal/https://getbootstrap.com/docs/3.3/javascript/#modals
Вам нужно поместить свой php-код в отдельный файл php. Из модального кода вы выполняете ajax для вызова php-файла, чтобы получить желаемое содержимое.
Так у меня изначально это работало. То есть нет возможности все это включить в один файл? Мне нужен отдельный файл php для получения данных для модального окна?
Да, вам лучше выбрать отдельный файл. Нет другого пути, кроме ajax.
Я предполагаю, что вы пытаетесь использовать этот id для извлечения записей и заполнения модального окна этими данными.
В таком случае:
Вы можете получить значение атрибута data-id с помощью Javascript и отправить запрос Ajax в свой сценарий php и запросить свою базу данных.
$('.dt_buttons').on('click', function()
{
var id = $(this).attr('data-id');
$.ajax
({
url: "your/url",
data:
{
id : id
},
method: 'POST'
}).success(function(response)
{
var json = response,
obj = JSON && JSON.parse(json) || $.parseJSON(json);
// say you have following fields.
var fid = obj[0].id;
var title = obj[0].title;
//retrieve record fields here.
// or just pass the `id` skipping the Ajax stuff above.
$('#editModal')
.find('span.doc-title').text(title).end()
.find('[name = "id"]').val(id).end();
/* show modal.. */
$('#editModal').modal('show');
});
});
Хорошо, я понимаю, что происходит по большей части в этом коде, но как я могу затем использовать полученный идентификатор данных в запросе MySQL? Пожалуйста, посмотрите мой отредактированный вопрос, который показывает код внутри модального окна, что может дать лучшее понимание того, что мне нужно делать.