1 Вопрос: Получить данные из MySQL, используя jquery при нажатии кнопки

вопрос создан в Wed, May 8, 2019 12:00 AM

Я выбрал количество строк данных в таблице данных из базы данных MySQL. В последнем столбце таблицы будет отображаться кнопка, и я добавил идентификатор кнопки в качестве уникального идентификатора из базы данных. Когда кто-то нажмет кнопку, более подробные данные из базы данных с этим конкретным идентификатором будут показаны в правой части таблицы данных с помощью jquery.

HTML-код, который у меня есть

<tr><td>John Doe</td><td><button class="btn btn-success" id="<?php print($sms_id) ?>"> Details</button></td><tr>

Я хочу получить данные с соответствующим идентификатором в следующую таблицу

<table id="details_sms" class="table table-bordered table-striped">                      
          <tbody id="showdetails">
            <tr><td>From: </td><td></td></tr>
            <tr><td>Amount: </td><td></td></tr>
            <tr><td>Transaction ID:</td><td></td></tr>
            <tr><td>Rec Number: </td><td></td></tr> 
            <tr><td>Full SMS text: </td><td></td></tr>
            <tr><td><button class="btn btn-general">Previous</button> </td><td><button class="btn btn-general">Next</button></td></tr>                              
          </tbody>                      
    </table>

Ajax

$.ajax({
  method: "POST",
  url: "{fetch_details.php}}",
  data: {id = "" } 
})
  .done(function( msg ) {
     $("showdetails").html(result); 
  });

fetch_detail.php р>

<?php 
require_once("connection.php");
include("functions.php");


 $get_sms_info = mysqli_query($connect,"SELECT * FROM sms_in");



while($result = mysqli_fetch_array($get_sms_info,MYSQLI_ASSOC)){
                    $sms_id = $result['id'];
                    $sms_text = $result['sms_text'];
                    $sms_time = $result['sent_dt'];
                    $sender_number = $result['sender_number'];

                preg_match_all('/(\S+)\s+from\s+(\d+).*Fee\s+Tk\s+(\S+)\..*([a-zA-Z0-9]{10})\s+at\s+(.*)/', $sms_text, $matches);

?>
<tr>

                            tr><td>From: </td><td><?php print($matches[5][0]);?></td></tr>
                    <tr><td>Amount: </td><td><?php print($matches[2][0]);?></td></tr>
                    <tr><td>Transaction ID:</td><td><?php print($matches[1][0]); ?></td></tr>
                    <tr><td>Rec Number: </td><td><?php print($matches[4][0]); ?></td></tr>  
                    <tr><td>Full SMS text: </td><td>$sms_text</td></tr>
                    <tr><td><button class="btn btn-general">Previous</button> </td><td><button class="btn btn-general">Next</button></td></tr>      




</tr>
<?php
}

?>

Также кнопка Next и previous загрузит данные, соответствующие предыдущему идентификатору.

Как я могу сделать это с помощью jquery?

    
- 1
  1. Создайте функцию JS, которая добавит строку в таблицу. Получить данные из PHP через JSON. В случае успеха AJAX просто вызовите функцию добавления строки в таблицу.
    2019-05-08 16: 52: 48Z
  2. Можете ли вы уточнить с точным кодом? Благодаря
    2019-05-08 16: 56: 55Z
1 ответ                              1                         

Никогда не бойтесь разделять по функциям. Никогда не знаешь, где это пригодится.

  

JS р>

function addRowToSmsDetailsTable(rowDataFromBackEnd) {
   let html = '<tr><td>' + rowDataFromBackEnd.col1 + '....</td></tr>';
   $('#details_sms tr:last').after(html);
}


$.ajax({
  method: "POST",
  dataType: 'json', // waiting for json response
  url: "fetch_details.php",
  data: {
      id: 1
  },
  success: addRowToSmsDetailsTable // success response handler
});
     

PHP

<?php 
require_once("connection.php");
include("functions.php");

header('Content-Type: application/json'); /* set content type because ajax waiting for json */

define('SMS_INFO_REGEX', '/(\S+)\s+from\s+(\d+).*Fee\s+Tk\s+(\S+)\..*([a-zA-Z0-9]{10})\s+at\s+(.*)/');

$get_sms_info = mysqli_query($connect, "SELECT * FROM sms_in");
$resultArray = [];
while($result = mysqli_fetch_array($get_sms_info,MYSQLI_ASSOC)){
    preg_match_all(SMS_INFO_REGEX, $sms_text, $matches);
    $resultArray[] = [
        'id'            => $result['id']
        'from'          => $matches[5][0],
        'amount'        => $matches[2][0],
        'transactionId' => $matches[1][0],
        'recNumber'     => $matches[4][0],
        'smsText'       => $result['sms_text']
    ];
}

echo json_encode($resultArray);                  
?>

Json здесь для того, чтобы стандартизировать взаимодействие с внешними и внутренними интерфейсами. AJAX будет читать json как объект JS, а ваш ассоциативный массив PHP будет доступен в функции JS как объект (поскольку мы указали dataType: json). Я не проверял этот код, но думаю, что все в порядке. Однако мой совет: избегайте регулярных выражений, когда это возможно.

    
- 1
2019-05-09 10: 01: 51Z
источник размещен Вот