У меня проблемы с добавлением более одной строки продукта к вызову cURL при чтении строк из MySQL - PullRequest
0 голосов
/ 22 июня 2019

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

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

Одна строка в cURL: { "type": "physical", "reference": "9788205521186", "name": "Dvalen", "quantity": 1, "quantity_unit": "pcs", "unit_price": 1000, "tax_rate": 0, "total_amount": 1000, "total_tax_amount": 0 } Несколько строк должны выглядеть следующим образом:

{
    "reference": "9788205521186",
    "type": "Physical",
    "name": "Dvalen",
    "quantity": "1",
    "quantity_unit": "stk",
    "unit_price": "1000",
    "tax_rate": "0",
    "total_amount": "1000",
    "total_tax_amount": "0",
    "product_url": "https:\/\/www.hk.no\/bok\/I9788205521186",
    "image_url": "https:\/\/res.cloudinary.com\/image\/upload\/c_fit,q_auto:best,w_140\/9788205521186"
},
{
    "reference": "9788205521186",
    "type": "Physical",
    "name": "Dvalen",
    "quantity": "1",
    "quantity_unit": "stk",
    "unit_price": "1000",
    "tax_rate": "0",
    "total_amount": "1000",
    "total_tax_amount": "0",
    "product_url": "https:\/\/www.habok.no\/bok\/I9788205521186",
    "image_url": "https:\/\/res.cloudinary.com\/image\/upload\/c_fit,q_auto:best,w_140\/9788205521186"
}

Текущий код:

/Fetch orders from database.  
$sql_ordre = "SELECT * FROM ordre WHERE behandlet = '0'";
$data = mysqli_query($dbconnection, $sql_ordre) or die(mysqli_error($dbconnection));

while ($rad =  mysqli_fetch_array($data)){
    //For each order, fetch orderlines. 
    $klarnaid = $rad['klarnaid'];
    $sql_linje = "SELECT * FROM ordrelinje WHERE behandlet = '0' AND klarnaid = '$klarnaid'";
    $linjedata = mysqli_query($dbconnection,$sql_linje) or die (mysqli_error($dbconnection));

    //For each orderline, loop through and push to array:
    while ($linjerad = mysqli_fetch_array($linjedata)) {
        $orderline = array();
        array_push($orderline, [
            "reference" => "9788205521186",
            "type" => "Physical",
            "name" => "Dvalen",
            "quantity" => "1",
            "quantity_unit" => "stk",
            "unit_price" => "1000",
            "tax_rate" => "0",
            "total_amount" => "1000",
            "total_tax_amount" => "0",
            "product_url" => "https://www.url.no/bok/I9788205521186",
            "image_url" => "https://url.no/image/upload/c_fit,q_auto:best,w_140/9788205521186"
        ]);

        //Format to Json and ehco. 
        $orderline_json = json_encode($orderline, JSON_PRETTY_PRINT);
        echo $orderline_json;
    }
}

Это прекрасно работает для одной строки заказа,но как только у меня их больше одного.У меня проблема.

1 Ответ

0 голосов
/ 22 июня 2019

Вы сбрасываете $orderline на каждой итерации, и только последняя строка из запроса MySQL достигает значения $orderline_json. Измените порядок строк следующим образом:

$orderline = array();
while ($linjerad = mysqli_fetch_array($linjedata)) {
array_push($orderline, [
// ... no changes below
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...