Выполнение двух запросов на выборку в php и кодирование его в формате json - PullRequest
0 голосов
/ 05 июля 2018

Как мне вернуть два объекта JSON с одним вызовом AJAX и функцией PHP?

Вот HTML:

// bootstrap modal 
<div id="paymentViewModal" class="modal fade">
    <form method="POST" id="update_payment">
        <input type="text" class="totalAmount"  id="totalAmount">
        <br>
        <input type="text" class="pdAmount" id="pdAmount"> 
    </form>
</div>  

И Jquery:

$(document).on('click', '.payment_data', function() {
var pymnt_id = $(this).val();
$.ajax({
    url:"sum_total.php",
    method:"POST",
    data:{pymnt_id:pymnt_id},
    dataType:"json",
    success:function(data){
        // textboxt totalAmount
        $('#totalAmount').val(data.total_order_value); 
        //textbox pdAmount 
        $('#pdAmount').val(data.paid_total);  
        $('#paymentViewModal').modal('show');
    }
   });
});

результат отлично получается при первом запросе, но я хочу выполнить оба запроса

// sum_total.php
if(isset($_POST["pymnt_id"]))
{

$query =  mysqli_query($conn, "SELECT SUM(sub_total) AS total_order_value FROM tbl_order2
WHERE order_customer_id = '".$_POST["pymnt_id"]."'
");
$row = mysqli_fetch_array($query);  

// if i run only one query its work fine
// want to get result from both tables
$query = "SELECT SUM(payment_amount) AS paid_total FROM payments
WHERE customer_id = '".$_POST["pymnt_id"]."'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
}
echo json_encode($row);
?>

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы перезаписываете на $row, поэтому старые данные перезаписываются. рассмотрите возможность сделать что-то вроде этого:

Также рассмотрите возможность использования подготовленных PDO отчетов

примечание: непроверенный код

// sum_total.php
if(isset($_POST["pymnt_id"]))
{
$output = [];
// use prepared statements to prevent SQL injection
$query =  $conn->prepare($conn, "SELECT SUM(sub_total) AS total_order_value FROM tbl_order2
WHERE order_customer_id = ?
"); 
$query->exec($_POST["pymnt_id"]);
$output["row1"] = $query->fetch();  

// if i run only one query its work fine
// want to get result from both tables
$query = "SELECT SUM(payment_amount) AS paid_total FROM payments
WHERE customer_id = ?";
$query->exec($_POST["pymnt_id"]);
$output["row2"] = $query->fetch();
// echo inside the if statement
echo json_encode($output);
}

Надеюсь, это поможет

0 голосов
/ 05 июля 2018

Добавьте свои строки в массив и затем отобразите весь массив.

// sum_total.php
if(isset($_POST["pymnt_id"]))
{
    $output = array();

    $query =  mysqli_query($conn, "SELECT SUM(sub_total) AS total_order_value FROM tbl_order2
    WHERE order_customer_id = '".$_POST["pymnt_id"]."'
    ");
    $row = mysqli_fetch_array($query);  
    $output['row1'] = $row;

    // if i run only one query its work fine
    // want to get result from both tables
    $query = "SELECT SUM(payment_amount) AS paid_total FROM payments
    WHERE customer_id = '".$_POST["pymnt_id"]."'";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_array($result);
    $output['row2'] = $row;

}
    echo json_encode($output);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...