HTML / PHP встроенное обновление и удаление для каждой строки таблицы - PullRequest
0 голосов
/ 30 мая 2018

Возникла небольшая проблема со встроенной кнопкой «обновить», когда я извлекаю данные из таблицы MySQL (готово), представляю эти данные на экран с помощью «foreach» (готово) и имею кнопку обновления и удаленияв каждой строке, которая отправляет правильное имя кнопки и идентификатор пользователя (готово).

Однако то, что не разбирает массив $ _POST, это правильные данные с информацией о строке .... Он разбирает измененияв нижний ряд, но если вы измените другой ряд, он просто снова анализирует последний ряд ....

<code>    <input type="hidden" name="action" value="submit" />
    <pre>
«;эхо 'Имя Войти E-mail Роль Группа LoftID Редактировать Удалить ';foreach ($ users как $ person) {echo '';эхо ' ';echo ' ';эхо ' ';эхо ' ';echo ' ';эхо '«;foreach ($ lofts как $ info) {if ($ info ['id'] == $ person ['LoftID']) {echo '». $ Информация [ "имя"] '';} else {echo '». $ Информация [ "имя"] '';}} echo '';echo ' Update ';echo ' Delete ';echo '';} echo '';?>

Мне нужно получить данные из $ _POST, чтобы я мог затем выбросить их обратно в базу данных в качестве обновления на основе идентификатора.Я полагаю, что могу это сделать, как я уже сделал это в своем коде ....

Я действительно хотел бы сделать это без необходимости отображать другую страницу с данными для обновления .....

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

ОК, так что я думаю, что нашел ответ и включил следующее:

echo '<form class="form-horizontal" action="" method="post">';

Прямо под первым оператором foreach, так что каждая строка является собственным элементом формы.

Кто-нибудь видит какие-либо проблемы с этим?Данные всегда будут весьма ограниченными и, вероятно, никогда не будут превышать 10 строк.

С уважением и благодарностью за помощь

0 голосов
/ 30 мая 2018

Вам нужен Ajax для выполнения этой работы без перезагрузки страницы или перехода на другую страницу с параметром.И помните, что кнопка не имеет значения, как ввод.Используйте data-id или data-pid или что угодно.И введите имя класса, например, «updateBtn», чтобы идентифицировать кнопку.

echo '<td><button type="button" data-pid="'.$person['id'].'" class="btn btn-primary updateBtn">Update</button></td>';

    <script>  
        $('.updateBtn').on('click', function() { 
        var pid = $(this).data('pid'); console.log(pid); // see the result in console
        var pid = parseInt(pid);  // change to int
        $.ajax({
                url: '/ajax/update-data/index.php', // specify folder and file name
                data: { pid : pid },
                dataType: 'json',
                success: function (response) {                                  
                if(response.status == 'success') {  

                   // do something to the html code to show the successful update
                return false;
                }   
               if(response.status == 'fail') {  

                   // do something to the html code to show the fail update
                return false;
                }   
              }   
           });        
        });
    </script>

Ajax-файл:

<?php

  function response ($status) { 
      header("Content-Type:application/json");
      $response['status'] = $status;
      $json_response = json_encode($response);
      echo $json_response;
  }

if($_POST) {

$pid = filter_input(INPUT_POST, 'pid', FILTER_SANITIZE_NUMBER_INT); 

    if($pid) {

        $done = // do php to chage update. You can refer to class or direct php mysql update

         if($done) {
          response ('success');
         }else{
          response ("fail");         
         }

    }else{
    response ("parameter fail");    

    }
}
?>
...