0

I want to try to create a json array that has an array inside that, but I have a failure where the result of the array in the array has issued the value looping in base array

this my php code

<?php 

require_once('include/db_connect.php');

$sql = "SELECT DISTINCT * FROM pesanan";

$response = mysqli_query($con, $sql);

if (mysqli_num_rows($response) > 0 ) {

    $result = array();
    $result['pesanan'] = array();

    while ($data = mysqli_fetch_assoc($response)) {

        $h['id_pesanan']        = $data['id_pesanan'];
        $h['id_user']           = $data['id_alamat'];
        $h['id_beli']           = $data['id_beli'];
        $h['id_bank']           = $data['id_bank'];
        $h['kode_pesanan']      = $data['kode_pesanan'];
        $h['harga_pesanan']     = $data['harga_pesanan'];
        $h['harga_ongkir']      = $data['harga_ongkir'];
        $h['kurir_pengiriman']  = $data['kurir_pengiriman'];
        $h['status_pesanan']    = $data['status_pesanan'];
        $id_beli                = $data['id_beli'];

        $sql2= mysqli_query($con, "SELECT * FROM `keranjang` INNER JOIN `produk`
                                ON keranjang.`id_produk` = produk.`id_produk` WHERE id_beli='".$id_beli."'");

        while ($data2 = mysqli_fetch_array($sql2)) {
            $hs[] = array('nama_produk' => $data2['nama_produk'], 'spesifiksi' => $data2['spesifikasi_order']);

            foreach ($hs['produk'] as $data2['nama_produk']) ;

            $h["produk"] = array_map("unserialize", array_unique(array_map("serialize", $hs)));

            $id_pesanan = $data2['id_pesanan'];
            $id_foto    = $data2['id_foto_produk'];

            $sql4 = "SELECT * FROM `produk_foto` WHERE id_foto_produk='".$id_foto."'";
             $response4 = mysqli_query($con,$sql4);
            while ($data4 = mysqli_fetch_array($response4)) {
                $h['foto_produk'] = $data4['foto_produk'];
            }
        }

        $sql3 = mysqli_query($con, "SELECT * FROM `pesanan_file` WHERE id_pesanan='".$id_pesanan."' ORDER BY nama_file DESC");

        while ($data3 = mysqli_fetch_array($sql3, MYSQLI_ASSOC)) {
            $h['file'] = array('url_file' => $data3['url_file'], 'id_pesanan' =>  $data3['id_pesanan']);
        }

        array_push($result['pesanan'], $h);
     } 
     echo $result["success"] = "1";
     echo json_encode($result);

} else {

    echo $result["success"] = "0";
}?>`

output

> `{
    "pesanan": [
        {
            "id_pesanan": "49",
            "id_user": "39",
            "id_beli": "295023",
            "id_bank": "8",
            "kode_pesanan": "BRO-BZB9-160917-RMZB",
            "harga_pesanan": "866200",
            "harga_ongkir": "16000",
            "kurir_pengiriman": "J&T Express REG",
            "status_pesanan": "pending",
            "produk": [
                {
                    "nama_produk": "Kalender",
                    "spesifiksi": "Ukuran Cetak : Desk Calendar Horizontal\nSisi Cetak : Satu Sisi\nTipe Kertas : Digital Via Satin 216 gsm\nHalaman : 13 Pages\nLaminasi : Matte\nSpiral : White Spiral"
                },
                {
                    "nama_produk": "Flyer",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Dua Sisi\nTipe Kertas : Digital Via Satin 216 gsm"
                }
            ],
            "foto_produk": "http://192.168.43.245/broprint_api/adminweb/foto_produk/19082017025914flayer.jpg",
            "file": {
                "url_file": "http://192.168.43.245/broprint_api/upload/file/295035920Depan.jpg",
                "id_pesanan": "295035913"
            }
        },
        {
            "id_pesanan": "50",
            "id_user": "39",
            "id_beli": "29505",
            "id_bank": "17",
            "kode_pesanan": "BRO-5D1H-160917-DUGP",
            "harga_pesanan": "185000",
            "harga_ongkir": "15000",
            "kurir_pengiriman": "JNE Express OKE",
            "status_pesanan": "pending",
            "produk": [
                {
                    "nama_produk": "Kalender",
                    "spesifiksi": "Ukuran Cetak : Desk Calendar Horizontal\nSisi Cetak : Satu Sisi\nTipe Kertas : Digital Via Satin 216 gsm\nHalaman : 13 Pages\nLaminasi : Matte\nSpiral : White Spiral"
                },
                {
                    "nama_produk": "Flyer",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Dua Sisi\nTipe Kertas : Digital Via Satin 216 gsm"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 85 x 200 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                }
            ],
            "foto_produk": "http://192.168.43.245/broprint_api/adminweb/foto_produk/19082017043417ru4.jpg",
            "file": {
                "url_file": "http://192.168.43.245/broprint_api/upload/file/295036440.jpg",
                "id_pesanan": "295036420"
            }
        },
        {
            "id_pesanan": "51",
            "id_user": "39",
            "id_beli": "295019",
            "id_bank": "8",
            "kode_pesanan": "BRO-ZKFH-160917-IFH4",
            "harga_pesanan": "1125000",
            "harga_ongkir": "16000",
            "kurir_pengiriman": "J&T Express REG",
            "status_pesanan": "pending",
            "produk": [
                {
                    "nama_produk": "Kalender",
                    "spesifiksi": "Ukuran Cetak : Desk Calendar Horizontal\nSisi Cetak : Satu Sisi\nTipe Kertas : Digital Via Satin 216 gsm\nHalaman : 13 Pages\nLaminasi : Matte\nSpiral : White Spiral"
                },
                {
                    "nama_produk": "Flyer",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Dua Sisi\nTipe Kertas : Digital Via Satin 216 gsm"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 85 x 200 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 60 x 160 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                }
            ],
            "foto_produk": "http://192.168.43.245/broprint_api/adminweb/foto_produk/19082017043417ru4.jpg",
            "file": {
                "url_file": "http://192.168.43.245/broprint_api/upload/file/295036424.jpg",
                "id_pesanan": "295036433"
            }
        },
        {
            "id_pesanan": "52",
            "id_user": "39",
            "id_beli": "295030",
            "id_bank": "18",
            "kode_pesanan": "BRO-N844-160917-EFQB",
            "harga_pesanan": "200000",
            "harga_ongkir": "16000",
            "kurir_pengiriman": "J&T Express REG",
            "status_pesanan": "pending",
            "produk": [
                {
                    "nama_produk": "Kalender",
                    "spesifiksi": "Ukuran Cetak : Desk Calendar Horizontal\nSisi Cetak : Satu Sisi\nTipe Kertas : Digital Via Satin 216 gsm\nHalaman : 13 Pages\nLaminasi : Matte\nSpiral : White Spiral"
                },
                {
                    "nama_produk": "Flyer",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Dua Sisi\nTipe Kertas : Digital Via Satin 216 gsm"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 85 x 200 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 60 x 160 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                },
                {
                    "nama_produk": "Brosur",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Satu Sisi\nLipatan :  Bifold\nTipe Kertas : Art Paper 120 gsm"
                }
            ],
            "foto_produk": "http://192.168.43.245/broprint_api/adminweb/foto_produk/19082017024433br1.jpg",
            "file": {
                "url_file": "http://192.168.43.245/broprint_api/upload/file/295035830.pdf",
                "id_pesanan": "295035814"
            }
        },
        {
            "id_pesanan": "53",
            "id_user": "39",
            "id_beli": "295041",
            "id_bank": "8",
            "kode_pesanan": "BRO-Q7B6-160917-ZLSK",
            "harga_pesanan": "211000",
            "harga_ongkir": "16000",
            "kurir_pengiriman": "JNE Express REG",
            "status_pesanan": "pending",
            "produk": [
                {
                    "nama_produk": "Kalender",
                    "spesifiksi": "Ukuran Cetak : Desk Calendar Horizontal\nSisi Cetak : Satu Sisi\nTipe Kertas : Digital Via Satin 216 gsm\nHalaman : 13 Pages\nLaminasi : Matte\nSpiral : White Spiral"
                },
                {
                    "nama_produk": "Flyer",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Dua Sisi\nTipe Kertas : Digital Via Satin 216 gsm"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 85 x 200 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                },
                {
                    "nama_produk": "Roll Up Banner",
                    "spesifiksi": "Ukuran Cetak : 60 x 160 cm\nSisi Cetak : Satu Sisi\nTipe Kertas : FF Korea 440 GSM"
                },
                {
                    "nama_produk": "Brosur",
                    "spesifiksi": "Ukuran Cetak : A4  21 x 29.7 cm\nSisi Cetak : Satu Sisi\nLipatan :  Bifold\nTipe Kertas : Art Paper 120 gsm"
                },
                {
                    "nama_produk": "Kartu Nama",
                    "spesifiksi": "Ukuran Cetak : Standard 9 x 5.5 cm\nSisi Cetak : Satu Sisi\nLayout Cetak : Vertikal\nTipe Kertas : Art Carton 260 gsm\nTipe Sudut : Square corner\nLaminasi : Tidak Ada"
                },
                {
                    "nama_produk": "Kartu Ucapan",
                    "spesifiksi": "Ukuran Cetak : A5 14.8 x 21 cm\nSisi Cetak : Dua Sisi\nTipe Kertas : Art Carton 260 gsm\nLaminasi : Matte"
                }
            ],
            "foto_produk": "http://192.168.43.245/broprint_api/adminweb/foto_produk/19082017015653ku2.jpg",
            "file": {
                "url_file": "http://192.168.43.245/broprint_api/upload/file/295035413Belakang.jpg",
                "id_pesanan": "29503548"
            }
        }
    ],
    "success": "1" }`

help will be greatly appreciated

2
  • 2
    it's unclear what your problem is. What is wrong with the current output? What do you expect? Maybe give an example. Commented Sep 16, 2017 at 12:47
  • the array of produk in the pesanan has been repeated on the next pesanan, I want the produk that is only based on $id_beli @Jeff Thanks Commented Sep 16, 2017 at 12:55

1 Answer 1

1

Before every iteration of

while ($data2 = mysqli_fetch_array($sql2)) {

you need to clear $hs array:

$sql2= mysqli_query($con, "SELECT * FROM `keranjang` INNER JOIN `produk`
                            ON keranjang.`id_produk` = produk.`id_produk` WHERE id_beli='".$id_beli."'");

// Here set empty array
$hs = array();   

while ($data2 = mysqli_fetch_array($sql2)) {
    $hs[] = array('nama_produk' => $data2['nama_produk'], 'spesifiksi' => $data2['spesifikasi_order']);
Sign up to request clarification or add additional context in comments.

2 Comments

how to order the output without "0" "1" and so on if more than 3 "pesanan": "produk": { "0": { "id_pesanan": "295035434" }, "2": { "id_pesanan": "295035312" }, "4": { "id_pesanan": "295035220" } } } ], "success": "1" }
Please do not ask questions not related to answer in comments. Ask new question with detail problem description.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.