• 11-11-2021, 19:26:54
    #1
    Selam arkadaşlar. Aşağıdaki gibi iki tablom var ve aşağıdaki gibi json nasıl elde edebilirim?

    User tablosu:

    user_id fullname phonenumber
    1 John Doe 212-555-1212
    2 Doe John 212-555-1212


    Sepet tablosu

    cart_id user_id cart_name quantity
    1 1 Pluot 5
    2 1 Apple 1
    3 2 Pluot 5
    4 2 Apple 1


         {
           "items":[
              {
                 "user_id":"1",
                 "fullname":"John Doe",
                 "phonenumber":"212-555-1212",
                 "cart_items":[
                    {
                       "cart_name":"Pluot",
                       "quantity":5
                    },
                    {
                       "cart_name":"Apple",
                       "quantity":1
                    }
                 ]
              },
              {
                 "user_id":"2",
                 "fullname":"Doe John",
                 "phonenumber":"212-555-1212",
                 "cart_items":[
                    {
                       "cart_name":"Pluot",
                       "quantity":5
                    },
                    {
                       "cart_name":"Apple",
                       "quantity":1
                    }
                 ]
              }
           ]
        }

    Bu şekilde sadece user tablosunu alabiliyorum. İçine cart tablosunu da çektirmek istiyorum.
    <?php
    
        $query = "SELECT * FROM user";    
        $statement = $database_connection->prepare($query);
        $statement->execute();
        
        
        $userData_List = array();
        
        while($row=$statement->fetch(PDO::FETCH_ASSOC)){
            $userData_List['items'][] = $row;
        }
        header('Content-Type: application/json');
        echo json_encode($userData_List, JSON_UNESCAPED_SLASHES), "\n";
    ?>
  • 11-11-2021, 19:59:45
    #2
    $veri =array("items"=>[array("id"=>"1","fullname"=>"John Doe","phonenumber"=>"212-555-1212","cart_items"=>[array("cart_name"=>"Pluot","quantity"=>5),array("cart_name"=>"Apple","quantity"=>1)])]);

    echojson_encode($veri);




    veritabanından çektiğin verileri foreach ile yerleştirebilirsiniz hocam.
  • 11-11-2021, 20:03:42
    #3
    omergunay adlı üyeden alıntı: mesajı görüntüle
    $veri =array("items"=>[array("id"=>"1","fullname"=>"John Doe","phonenumber"=>"212-555-1212","cart_items"=>[array("cart_name"=>"Pluot","quantity"=>5),array("cart_name"=>"Apple","quantity"=>1)])]);

    echojson_encode($veri);




    veritabanından çektiğin verileri foreach ile yerleştirebilirsiniz hocam.
    beynim durmuş. örnek kod varsa atabilir misin hocam?
  • 11-11-2021, 20:22:42
    #4
    Üyeliği durduruldu
    <?php
    include '/baglan.php'; // VERİTABANI BAGLANTINI YAP

    $sorgu = $db->query("SELECT * FROM yayinlar", PDO::FETCH_ASSOC); //TABLONU YAZ
    $sonuc = $sorgu->fetchAll(PDO::FETCH_ASSOC);

    print_r(json_encode($sonuc));



    ?>
    1 tane php dosyası oluştur içerisine bu kodları kendine göre değiştir istediğin gibi çıktı alırsın.
  • 11-11-2021, 20:29:01
    #5
    shingeki adlı üyeden alıntı: mesajı görüntüle
    <?php
    include '/baglan.php'; // VERİTABANI BAGLANTINI YAP

    $sorgu = $db->query("SELECT * FROM yayinlar", PDO::FETCH_ASSOC); //TABLONU YAZ
    $sonuc = $sorgu->fetchAll(PDO::FETCH_ASSOC);

    print_r(json_encode($sonuc));



    ?>
    1 tane php dosyası oluştur içerisine bu kodları kendine göre değiştir istediğin gibi çıktı alırsın.
    hocam bu kodları biliyorum fakat istediğim gibi json alamıyorum. almak istediğim jsonu inceleme vaktin varsa sevinirim.
  • 11-11-2021, 22:23:24
    #6
    Bu şekilde bi dener misin hocam. @elax;

    try {
    $db = new PDO("mysql:host=localhost;dbname=test", "root", "");
    } catch ( PDOException $e ){
    print $e->getMessage();
    }
    
    $query = $db->prepare("SELECT * FROM tablo_adi");
    $query->execute();
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    
    
    foreach ($result as $row) {
    $veri[] =
    [
    "user_id" => $row["user_id"],
    "fullname" => $row["fullname"],
    "phonenumber" => $row["phonenumber"],
    "cart_items" =>
    [
    [
    "cart_name" => $row["cart_name"],
    "quantity" => $row["quantity"]
    ],
    ],
    ];
    }
    
    $son = ["items" => $veri];
    echo json_encode($son);
  • 11-11-2021, 23:04:09
    #7
    omergunay adlı üyeden alıntı: mesajı görüntüle
    Bu şekilde bi dener misin hocam. @elax;

    try {
    $db = new PDO("mysql:host=localhost;dbname=test", "root", "");
    } catch ( PDOException $e ){
    print $e->getMessage();
    }
    
    $query = $db->prepare("SELECT * FROM tablo_adi");
    $query->execute();
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    
    
    foreach ($result as $row) {
    $veri[] =
    [
    "user_id" => $row["user_id"],
    "fullname" => $row["fullname"],
    "phonenumber" => $row["phonenumber"],
    "cart_items" =>
    [
    [
    "cart_name" => $row["cart_name"],
    "quantity" => $row["quantity"]
    ],
    ],
    ];
    }
    
    $son = ["items" => $veri];
    echo json_encode($son);
    hocam çok sağol user tablosunu bu şekil çekebiliyoruz json istediğim gibi geliyor ama iki tablo var ilişkili cart tablosunu araya nasıl çekebilirim?
  • 12-11-2021, 04:32:16
    #8
    sepet tablonuzun adı "cart" değilse, "LEFT JOIN cart" kısmını düzenleyin.

    $statement = $database_connection->prepare(
        "SELECT u.*,
            IF(c.user_id,
                CONCAT('[', GROUP_CONCAT(JSON_OBJECT('cart_name', c.cart_name, 'quantity', c.quantity)), ']'),
                JSON_ARRAY()
            ) as cart_items
        FROM user AS u
        LEFT JOIN cart AS c ON c.user_id = u.user_id
        GROUP BY u.user_id");
    
    $statement->execute();
    $userData_List = array();
    
    while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
        $row['cart_items'] = json_decode($row['cart_items']);
        $userData_List['items'][] = $row;
    }
    
    header('Content-Type: application/json');
    echo json_encode($userData_List, JSON_UNESCAPED_SLASHES), "\n";
  • 12-11-2021, 20:53:27
    #9
    @ghergedan; çok sağol hocam senin yaptığında çalışıyor. Senden önce @omergunay; hocam da skypedan yardımcı oldu. sana da ona da çok teşekkürler. onun kodlarını da bırakıyorum faydalanan olur diye.

    $users = $db->prepare("SELECT * FROM usertest");
    $users->execute();
    $result = $users->fetchAll(PDO::FETCH_ASSOC);
    
    
    $user = array();
    foreach ($result as $value) {
    
        $carts = $db->prepare("SELECT carttest.cart_name,carttest.quantity FROM carttest WHERE user_id=?");
        $carts->execute(array($value["user_id"]));
        $result2 = $carts->fetchAll(PDO::FETCH_ASSOC);
    
    
        $user[] = 
         [
            "user_id" => $value["user_id"],
            "fullname" => $value["fullname"],
            "phonenumber" => $value["phonenumber"],
            "cart_items" => $result2
        ];
    }
    echo json_encode($user);