Help with Multi Array

1

Hello, can anyone help me with how to create a list with php this type of array. The data comes from two tables, Categories and Products.

I'm using MySQL to fetch the data from the two tables.

My tables:

Categories = > id, name

Products = > id, category_id, name, value

[
    {
        "id": "1",
        "nome": "Pizzas",
        "lista": [
            {
                "NOME": "Pizza Pequena",
                "VALOR": "30"
            },
            {
                "NOME": "Pizza Media",
                "VALOR": "30"
            }
        ]
    },
    {
        "id": "2",
        "nome": "Bebidas",
        "lista": [
            {
                "NOME": "Refri",
                "VALOR": "3"
            },
            {
               "NOME": "Suco",
                "VALOR": "2"
            }
        ]
    }
]

I've tried more just to list the categories.

    
asked by anonymous 17.03.2018 / 20:35

2 answers

0

Database:

PHP:

<?php$mysqli=newmysqli("localhost", "root", "", "teste");

    $meuArray = array();
    //Add dados:
    $i = 0;
    if ($sth = $mysqli->query("SELECT * FROM Categorias")){
        while ($row = $sth->fetch_assoc()){
    //Posição 0
            $id = $row['id'];
        array_push($meuArray, array(
            "id"=> $row['id'],
            "nome" => $row['nome']));


        if ($st = $mysqli->query("SELECT * FROM 'Produtos' WHERE 'id_categoria' = '$id'")){
            while ($row2 = $st->fetch_assoc()){

                array_push($meuArray[$i], array("Nome"=> $row2['nome'],
                                          "Valor" => $row2['valor']));

            }
        }

        $i++;
        }
    }

    //Aqui já pegamos todos os campos;
    print_r($meuArray);

Answer:

It was bad for the delay, was solving a business here first kkkkk

    
17.03.2018 / 21:16
1

You can use INNER JOIN to do SELECT. So:

SELECT * FROM categoria INNER JOIN produtos WHERE categoria.id = produtos.id_categoria ORDER BY categoria.nome

In this way you will be able to select the products through the category. Then you implement the best way, example:

 $query = mysqli_query($sql, "SELECT * FROM categoria INNER JOIN produtos WHERE categoria.id = produtos.id_categoria ORDER BY categoria.nome");

 $bebidas = array();
 $pizzas = array();

 $produtos = array();

  while($prods = mysqli_fetch_array($query)){

    if(in_array($prods[1], $produtos)){
        $produtos[$prods[1]][] = array($prods['nome'], $prods['valor']);
    } else {
        $produtos[] = $prods[1];
        $produtos[$prods[1]][] = array($prods['nome'], $prods['valor']);
    }
  }

  print_r($produtos);
    
17.03.2018 / 22:19