Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Array


Heltinhu

Pergunta

ola galera preciso da ajuda doceis com um array, vou tentar explicar o que estou quebrando a cuca kkkkk

seguinte esse Json é pra um aplicativo de cardapio de restaurante enfim funcionará assim...

tenho duas tabelas no banco de dados mysql -

CATEGORIAS e outra tabela ITENS

as categorias são cadastradas na Tabela CATEGORIAS tipo [1]PIZZAS / [2]BEBIDAS / [3]LANCHES / [4]COMBO e por aí vai....

Já na tabela ITENS o estabelecimento irá cadastrar os itens referentes a cada categoria por exemple:

[1]PIZZAS->Calabresa / [1]Pizzas->Bacon / [1]Pizzas->Frango / [2]Bebidas->Refri / [2]Bebidas->Breja / [2]Bebidas->LatinhasBreja etc etc etc

Agora vem a parte legal montar os array[]

Estou com esse código

<?php
$hostname = 'localhost';
$username = 'root';
$password = '1234';
$database  = 'testes';

$conexao = mysqli_connect("$hostname", "$username", "$password", "$database");

$sql = "SELECT * FROM categoria_itens INNER JOIN categoria_lojas ON (categoria_itens.categoria_id = categoria_lojas.id_categoria)";
$result = $conexao->query($sql);

    foreach ($result as $idx => $dado) {

       $categoria = $dado['categoria'];
       $id_categoria = $dado['id_categoria'];
       $item = $dado['item'];

      $json["cardapio"][] = [
                    "id_categoria" => $id_categoria,
                    "categoria"     => $categoria];
                    
   }

$resul = mb_convert_encoding($json, "utf-8", "LATIN1");

echo json_encode($resul,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

echo '<pre>';
print_r($resul);

?>

essa consulta dessa forma esta me retornando desse jeito

Array
(
    [cardapio] => Array
        (
            [0] => Array
                (
                    [id_categoria] => 1
                    [categoria] => Pízzas
                )

            [1] => Array
                (
                    [id_categoria] => 1
                    [categoria] => Pízzas
                )

            [2] => Array
                (
                    [id_categoria] => 1
                    [categoria] => Pízzas
                )

            [3] => Array
                (
                    [id_categoria] => 1
                    [categoria] => Pízzas
                )

            [4] => Array
                (
                    [id_categoria] => 2
                    [categoria] => Bebidas
                )

            [5] => Array
                (
                    [id_categoria] => 2
                    [categoria] => Bebidas
                )

            [6] => Array
                (
                    [id_categoria] => 2
                    [categoria] => Bebidas
                )

            [7] => Array
                (
                    [id_categoria] => 2
                    [categoria] => Bebidas
                )

        )

)

pois bem esta me retornando 1 array com a categoria para cada item cadastrado e isso não é nada bom nhe digamos que eu tenha uns 500 ITENS cadastrados vai virar uma zona da pega kkkkkk

como ajuntar tudo isso e ainda colocar os ITENS cadastrados tudo dentro do array da mesma CATEGORIA tipo assim....

Array
(
    [cardapio] => Array
        (
            [0] => Array(
                    [id_categoria] => 1
                    [categoria] => Pízzas
             [1] = Array(
					[item] => Calabresa
					[item] => Bacon
					[item] => Frango
					[item] => Moda da Casa					
						)
                )



            [1] => Array(
                    [id_categoria] => 2
                    [categoria] => Bebidas
            [2] = Array(
					[item] => Refri
					[item] => Breja
					[item] => LatinhaBreja
					[item] => Dolly					
						)
                )
                
        )

)

bom gente seria mais ou menos isso acho q da pra entender nhe, trocando em miúdos, seria um cardápio de restaurante com  onde teriam as categorias e relativamente referente as categorias seus sub-itens

Pizzas[Calabresa, Bacon, Frango, Catupiry...]

Bebidas[Refri, Breja, Dolly, Latinha...]

Doces[Paçoquinha, Pave, ...]

porem tudo isso vindo lá meu banco de dados

me salvem aí

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Vou recriar o database aqui pra eu tentar entender.

 

--
-- CATEGORIAS DE LOJAS
--
drop table if exists categoria_lojas;
create table categoria_lojas(
    id_categoria int(11) PRIMARY KEY AUTO_INCREMENT,
    categoria varchar(25),
    status TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

insert into categoria_lojas(categoria) values
('Pizzas'),
('Bebidas'), 
('Lanches'), 
('Combos');

--
-- CATEGORIAS DE ITENS
--
drop table if exists categoria_itens;
create table categoria_itens(
    id_categoria int(11) PRIMARY KEY AUTO_INCREMENT,
    item varchar(15),
    categoria_id int(11),
    status TINYINT(1) DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    constraint foreign key (categoria_id) REFERENCES categoria_lojas(id_categoria) ON UPDATE CASCADE
);

insert into categoria_itens(categoria_id, item) values
	(1, 'Calabreza'),
	(1, 'Bacon'),
	(1, 'Frango'),
	(2, 'Refrigerante'),
	(2, 'Cerveja'),
	(2, 'Lata Cerveja'),
	(3, 'X-Tudo'),
	(3, 'X-Calabreza'),
	(3, 'X-Bacon'),
	(3, 'X-Frango'),
	(4, 'X-Lombo + Refrigerante + Batata Frita');

Seria +- assim?

 

Sugestão:

Conecte ao banco assim:

<?php
// variáveis para conexão em localhost
    $host = 'localhost';   // define o host do banco de dados
    $user = 'root';            // user do banco de dados
    $password = '';         // senha do banco de dados
    $database = 'scriptbrasil';  // nome do banco de dados

// estabelecer conexão com o mysql
$sqli = new mysqli($host, $user, $password);
// verificar se houve erro na conexão
if ($sqli->connect_error) {
    // se houve erro, mostra erro na tela
    echo "<p>Erro ao Conectar: $sqli->connect_error</p>";
}
// alterar o tipo de codificação da conexão com o banco de dados,  para utf8
if (!$sqli->set_charset('utf8')) {
    echo "<p class='error'>O charset não é utf8: $sqli->error</p>";
}
// selecionar/abrir o banco de dados para trabalhar
if (!$sqli->select_db($database)) {
    // se o banco de dados não for encontrado
    echo "<p class='error'>Banco de dados não encontrado, chefe!</p>";
}

Faça a busca assim:

<?php
// primeiro, busque apenas as categorias (pizzas, bebidas, lanches...)
$query = "SELECT id_categoria, categoria FROM categoria_lojas";

// execute a query
$result = $sqli->query($query);

// verifica se houve algum erro na execução da query
if ($sqli->error) {
	echo '<p class="error">Falha ao executar query, chefe!</p>' . $sqli->error;
	// se não houve erro algum e algum resultado foi encontrado
} elseif ($result->num_rows) {
	// busca os dados em formato de array associativo
	$dados = $result->fetch_all(MYSQLI_ASSOC);
} else { // se nenhum resultado foi encontrado
	echo '<p class="warning">Nenhuma categoria encontrada, chefe!</p>';
}


// se existirem categorias, busque os itens:
if(isset($dados)){
	foreach ($dados as $k => $v) {

		// defina uma query de busca para essa categoria
		$query = "SELECT id_categoria, item from categoria_itens where categoria_id = ".$v['id_categoria'];

		// execute a query
		$result = $sqli->query($query);

// verifica se houve algum erro na execução da query
		if ($sqli->error) {
			// se houve, mostra o erro na tela
			echo '<p class="error">Falha ao executar query, chefe!</p>' . $sqli->error;
	// se não houve erro algum e algum resultado foi encontrado
		} elseif ($result->num_rows) {
		// busca os itens em formato de array associativo
			$dados[$k]['itens'] = $result->fetch_all(MYSQLI_ASSOC);
} else { // se nenhum iten foi encontrado

	$dados[$k]['itens'] = [];
}
}
}

	<?php 

	echo json_encode($dados,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

	echo '<pre>';
	print_r($dados);
	echo '</pre>';
	?>
 [{"id_categoria":"1","categoria":"Pizzas","itens":[{"id_categoria":"1","item":"Calabreza"},{"id_categoria":"2","item":"Bacon"},{"id_categoria":"3","item":"Frango"}]},{"id_categoria":"2","categoria":"Bebidas","itens":[{"id_categoria":"4","item":"Refrigerante"},{"id_categoria":"5","item":"Cerveja"},{"id_categoria":"6","item":"Lata Cerveja"}]},{"id_categoria":"3","categoria":"Lanches","itens":[{"id_categoria":"7","item":"X-Tudo"},{"id_categoria":"8","item":"X-Calabreza"},{"id_categoria":"9","item":"X-Bacon"},{"id_categoria":"10","item":"X-Frango"}]},{"id_categoria":"4","categoria":"Combos","itens":[{"id_categoria":"11","item":"X-Lombo + Refri"}]}]

Array
(
    [0] => Array
        (
            [id_categoria] => 1
            [categoria] => Pizzas
            [itens] => Array
                (
                    [0] => Array
                        (
                            [id_categoria] => 1
                            [item] => Calabreza
                        )

                    [1] => Array
                        (
                            [id_categoria] => 2
                            [item] => Bacon
                        )

                    [2] => Array
                        (
                            [id_categoria] => 3
                            [item] => Frango
                        )

                )

        )

    [1] => Array
        (
            [id_categoria] => 2
            [categoria] => Bebidas
            [itens] => Array
                (
                    [0] => Array
                        (
                            [id_categoria] => 4
                            [item] => Refrigerante
                        )

                    [1] => Array
                        (
                            [id_categoria] => 5
                            [item] => Cerveja
                        )

                    [2] => Array
                        (
                            [id_categoria] => 6
                            [item] => Lata Cerveja
                        )

                )

        )

    [2] => Array
        (
            [id_categoria] => 3
            [categoria] => Lanches
            [itens] => Array
                (
                    [0] => Array
                        (
                            [id_categoria] => 7
                            [item] => X-Tudo
                        )

                    [1] => Array
                        (
                            [id_categoria] => 8
                            [item] => X-Calabreza
                        )

                    [2] => Array
                        (
                            [id_categoria] => 9
                            [item] => X-Bacon
                        )

                    [3] => Array
                        (
                            [id_categoria] => 10
                            [item] => X-Frango
                        )

                )

        )

    [3] => Array
        (
            [id_categoria] => 4
            [categoria] => Combos
            [itens] => Array
                (
                    [0] => Array
                        (
                            [id_categoria] => 11
                            [item] => X-Lombo + Refri
                        )

                )

        )

)

 

Editado por wash
Link para o comentário
Compartilhar em outros sites

  • 0

eeeita meu chefe perfect perfect perfect kkkkk vlw mesmo era exatamente isso. Só mais uma coisinha pra funcionar legal aqui

seguinte....

da uma olhada aqui....

http://www.androidbegin.com/tutorial/jsonparsetutorial.txt

ta vendo essa parte do Json, é a resposta nhe

JSONObject jobj = new JSONObject(jsonstr);
JSONArray jarray = jobj.getJSONArray("worldpopulation");

 

{ 
"worldpopulation":

por exemplo no meu seria o {"cardapio":

como acrescentar essa resposta nesse array - Json

Editado por Heltinhu
melhorar e formular melhor
Link para o comentário
Compartilhar em outros sites

  • 0

heim galera e Sr Wash segue o raciocínio e estou quase terminando essa lenda kkkkkkk, mais vamos lá. Segui esse seu array e me ajudou bastante e esta quase pronto...

Porém vou tentar explicar o que esta acontecendo aqui comigo, seguinte estou trabalhando em um aplicativo para cardapio de restaurante como já expliquei. 

Eu tenho essa seguinte função

private void prepareLista(){
    lstGrupos = new ArrayList<String>();
    lstItensGrupo = new HashMap<String, List<Produto>>();

    StringRequest stringRequest = new StringRequest(Request.Method.GET,http://192.168.0.103/apps/pidoncho/v1/foodCategorias.php,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try{
                        JSONArray pro = new JSONArray(response);
                        for(int i = 0; i<pro.length();i++){

                            JSONObject proObj = pro.getJSONObject(i);
                            lstGrupos.add(proObj.getString("categoria"));//Categoria


                            JSONArray itemArray = new JSONArray(response);
                            List<Produto> foods = new ArrayList<>();
                            for(int j=0; j<itemArray.length(); j++){
                                foods.add(new Produto(proObj.getString("item"),17.9));
                            }
                                lstItensGrupo.put(lstGrupos.get(i),foods);
                        }
                        //cria um adaptador (BaseExpandableListAdapter) com os dados acima
                        listAdapter = new ExpandableListViewAdapter(MainActivity.this, lstGrupos, lstItensGrupo);
                        //define o apadtador do ExpandableListView
                        expListView.setAdapter(listAdapter);
                    }catch (JSONException e){
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
                }
            });
    Volley.newRequestQueue(this).add(stringRequest);
}

esta função esta consultando lá no meu banco de dados mysql via Json na URL_Acima e me retornando as categorias lá cadastradas, porém os itens relacionados a categoria não vem. Acho que tenho que mudar alguma forma no meu array. Me ajudem aí por favor

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...