Передача переменной PHP в модальное окно и использование ее в запросе MySQL

У меня есть таблица с несколькими кнопками редактирования. Каждая кнопка редактирования должна открывать модальное окно, и я пытаюсь передать ему 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">&times;</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>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
387
2

Ответы 2

Приведенный ниже код получит значение 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

Хорошо, я понимаю, что происходит по большей части в этом коде, но как я могу затем использовать полученный идентификатор данных в запросе MySQL? Пожалуйста, посмотрите мой отредактированный вопрос, который показывает код внутри модального окна, что может дать лучшее понимание того, что мне нужно делать.

artlemaks 15.05.2018 14:12

Вам нужно поместить свой php-код в отдельный файл php. Из модального кода вы выполняете ajax для вызова php-файла, чтобы получить желаемое содержимое.

Karlo Kokkak 15.05.2018 14:36

Так у меня изначально это работало. То есть нет возможности все это включить в один файл? Мне нужен отдельный файл php для получения данных для модального окна?

artlemaks 15.05.2018 15:30

Да, вам лучше выбрать отдельный файл. Нет другого пути, кроме ajax.

Karlo Kokkak 16.05.2018 11:25

Я предполагаю, что вы пытаетесь использовать этот 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');
    });  
});

Другие вопросы по теме