Заполните выпадающий список select2 выбранным значением - PullRequest
0 голосов
/ 05 января 2019

Я использую скрипт PHP для редактирования данных, хранящихся в моей базе данных. Данные хранятся с динамическими строками.

В моем сценарии я также использую сценарий Select2, который позволяет выполнять поиск в моем раскрывающемся списке.

Сценарий Ajax, который я использую для заполнения, выглядит следующим образом:

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script> 
    function getName<?php echo $m; ?>() { 
      $.ajax
      ({
        type: 'POST',
        url: './get/name/get1.php',
        dataType: 'text',
        cache: false,
        success: function(data){
          $('#name<?php echo $m; ?>').html(data);
        },
        complete: function(){}
      }); 
    }
    $(document).ready(function(){
      getName<?php echo $m; ?>();
    });
</script>

В get1.php я могу использовать следующую инструкцию для выбора данных:

SELECT internal_id, name FROM scu_stock 

Таблица scu_stock содержит следующие данные:

-------------------------
| internal_id |   name  |
|      1      |   One   |
|      2      |   Two   |
|      3      |  Three  |
|      4      |   Four  |
-------------------------

Значение, которое я хочу представить как selected value, хранится в другой таблице. scu_address

---------------------------------------
| id |  city  | country | internal_id |
| 6  |   aa   |   ww    |      1      |
| 7  |   bb   |   xx    |      2      |
| 8  |   cc   |   yy    |      3      |
| 9  |   dd   |   zz    |      4      |
---------------------------------------

Когда я открываю index.php?id=8 Я хочу увидеть данные в таблице scu_stock с выбранным значением, которое вызывается в таблице scu_address.

Кто-нибудь знает, как я могу это реализовать?

Вот мой полный код:

<?php
  $statement = $connect->prepare("SELECT * FROM scu_address WHERE id = :id");
  $statement->execute(
    array(
      ':id'       =>  $_GET["id"]
    )
  );
  $item_result = $statement->fetchAll();
  $m = 0;
  foreach($item_result as $sub_row)
  {
    $m = $m + 1;
?>
    <tr id="row_id_<?php echo $m; ?>">
      <td><label for="name">Name</label></td>
      <td><select style="width:100%" id="name<?php echo $m; ?>" name="name[]" data-srno="<?php echo $m; ?>"></select></td>

      <script type="text/javascript" src="../../../../vendors/select2/dist/js/select2.min.js"></script>
      <script type="text/javascript">
        $.fn.select2.defaults = $.extend($.fn.select2.defaults, {
          allowClear: true,
          closeOnSelect: true,
          value: 'Name',
          minimumResultsForSearch: 15
        });

        $(document).ready(
          function () {
            var configParamsObj = {
              placeholder: 'Name',
              minimumResultsForSearch: 3
            };
            $("#name<?php echo $m; ?>").select2(configParamsObj);
          });
      </script>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <script> 
        function getName<?php echo $m; ?>() { 
          $.ajax
          ({
            type: 'POST',
            url: './get/name/get1.php',
            dataType: 'text',
            cache: false,
            success: function(data){
              $('#name<?php echo $m; ?>').html(data);
            },
            complete: function(){}
          }); 
        }
        $(document).ready(function(){
          getName<?php echo $m; ?>();
        });
    </script>
    </tr>
<?php
  }
?>

1 Ответ

0 голосов
/ 06 января 2019

Чтобы заполнить текстовое поле select2 выбранным значением, выбранным из базы данных:

  1. Создайте переменную PHP для заполнения извлеченными данными $selecteddata = " ";, затем заполните ее, чтобы получить следующий формат $selecteddata .="'1','2','3','4'";
  2. После кода select2 добавьте следующий скрипт:

    <script>

    $('#select2ID').val([<?php echo $selecteddata ;?>]);

    $('#select2ID').trigger('change');

    </script>

При этом вы будете выбирать только те данные, которые вы выбрали, чтобы вы могли редактировать.

...