Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Azalin

Gerar Json com PHP com mySQL

Recommended Posts

amigos, como posso gerar um resultado JSON com PHP igual ao resultado abaixo vindo de uma esquisa mySQL, a complexidade para mim está no array das categorias.

se alguem poder ajudar agradeço desde já.

 

att

[{
	"id": 1,
	"nome": "Mercearia do João",
	"endereco": "Rua Machado de Assis",
	"tel": "9999.9999",
	"imagem": "logo.jpg",	
	"carnes":[
				{"nome":"Picanha", "imagem":"picanha.jpg", "preco":"32.50"},
				{"nome":"Picanha", "imagem":"picanha.jpg", "preco":"32.50"},
				{"nome":"Picanha", "imagem":"picanha.jpg", "preco":"32.50"},
				{"nome":"Picanha", "imagem":"picanha.jpg", "preco":"32.50"}
			 ]
	"pães":[
				{"nome":"pão de forma", "imagem":"paodeforma.jpg", "preco":"2.50"},
				{"nome":"pão de forma", "imagem":"paodeforma.jpg", "preco":"2.50"},
				{"nome":"pão de forma", "imagem":"paodeforma.jpg", "preco":"2.50"},
				{"nome":"pão de forma", "imagem":"paodeforma.jpg", "preco":"2.50"}
			 ]
	"frutas":[
				{"nome":"manga", "imagem":"manga.jpg", "preco":"1.50"},
				{"nome":"manga", "imagem":"manga.jpg", "preco":"1.50"},
				{"nome":"manga", "imagem":"manga.jpg", "preco":"1.50"},
				{"nome":"manga", "imagem":"manga.jpg", "preco":"1.50"}
			 ]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, obrigado pela dica, mas ai que está o problema, eu já tentei algumas coisa e não consegui, o maximo que eu já consegui chegar foi esse cód. o problema é a manipulação do Array !

<?php
        $db_name  = 'teste';
        $hostname = '127.0.0.1';
        $username = 'teste';
        $password = '123';

        $dbh = new PDO("mysql:host=$hostname;dbname=$db_name", $username, $password);

        $sql = 'SELECT * FROM estabelecimentos';
        $stmt = $dbh->prepare( $sql );
        $stmt->execute();
        $result = $stmt->fetchAll( PDO::FETCH_ASSOC );
        $json = json_encode( $result );
        echo $json;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

preciso que o php me retorne o JSON neste formato, é o que eu não estou sabendo fazer.

"carnes":[
				{"nome":"Picanha", "imagem":"picanha.jpg", "preco":"32.50"}
			 ]
	"pães":[
				{"nome":"pão de forma", "imagem":"paodeforma.jpg", "preco":"2.50"}
			 ]
	"frutas":[
				{"nome":"manga", "imagem":"manga.jpg", "preco":"1.50"}
			 ]

o codigo que eu coloquei acima só me retorna os valores dessa forma:

"id": 1,
	"nome": "Mercearia do João",
	"endereco": "Rua Machado de Assis",
	"tel": "9999.9999",
	"imagem": "logo.jpg",	
	"carnes":"",
        "pães":"",
        "frutas":"",


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem segredo, segue a logica, e tente adaptar a sua consulta.

Em execução http://ideone.com/YF1pu3

<?php
$array = array();

$dados['id'] = 1;
$dados['nome'] = "Mercearia do João";
$dados['endereco'] = "Rua Machado de Assis";
$dados['tel'] = "9999.9999";

$carnes = array();
for ($i=0; $i < 4 ; $i++) {		
	$carne['nome'] = 'Picanha';
	$carne['imagem'] = 'picanha.jpg';
	$carne['preco'] = '32.50';		
	array_push($carnes, $carne);
}


$paes = array();
for ($i=0; $i < 4 ; $i++) {		
	$pao['nome'] = 'pão de forma';
	$pao['imagem'] = 'paodeforma.jpg';
	$pao['preco'] = '2.50';		
	array_push($paes, $pao);
}

$frutas = array();
for ($i=0; $i < 4 ; $i++) {		
	$fruta['nome'] = 'manga';
	$fruta['imagem'] = 'manga.jpg';
	$fruta['preco'] = '1.50';		
	array_push($frutas, $fruta);
}

$dados['carnes'] = $carnes;
$dados['paes'] = $paes;
$dados['frutas'] = $frutas;

array_push($array, $dados);
echo json_encode($array) ;

output

[
    {
        "id": 1,
        "nome": "Mercearia do João",
        "endereco": "Rua Machado de Assis",
        "tel": "9999.9999",
        "carnes": [
            {
                "nome": "Picanha",
                "imagem": "picanha.jpg",
                "preco": "32.50"
            },
            {
                "nome": "Picanha",
                "imagem": "picanha.jpg",
                "preco": "32.50"
            },
            {
                "nome": "Picanha",
                "imagem": "picanha.jpg",
                "preco": "32.50"
            },
            {
                "nome": "Picanha",
                "imagem": "picanha.jpg",
                "preco": "32.50"
            }
        ],
        "paes": [
            {
                "nome": "pão de forma",
                "imagem": "paodeforma.jpg",
                "preco": "2.50"
            },
            {
                "nome": "pão de forma",
                "imagem": "paodeforma.jpg",
                "preco": "2.50"
            },
            {
                "nome": "pão de forma",
                "imagem": "paodeforma.jpg",
                "preco": "2.50"
            },
            {
                "nome": "pão de forma",
                "imagem": "paodeforma.jpg",
                "preco": "2.50"
            }
        ],
        "frutas": [
            {
                "nome": "manga",
                "imagem": "manga.jpg",
                "preco": "1.50"
            },
            {
                "nome": "manga",
                "imagem": "manga.jpg",
                "preco": "1.50"
            },
            {
                "nome": "manga",
                "imagem": "manga.jpg",
                "preco": "1.50"
            },
            {
                "nome": "manga",
                "imagem": "manga.jpg",
                "preco": "1.50"
            }
        ]
    }
]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams Duarte, esse seria a melhor forma, mas eu preciso que venha do banco mysql. então estou com minha pesquisa, mas não estou conseguindo, cheguei a esse codigo abaixo. mas não funciona.

<?php
	$response =array();
	$response_lanche =array();

	require_once 'db.php';

	$db = new connexion();

	$result = $db->query("SELECT * FROM cliente inner join frutas on (cliente.id=lanches.idcliente)");

	if(mysqli_num_rows($result) > 0){

		$response["clientes"] = array();

		while ($row = $result->fetch_object()) {
			$cliente = array();
			$cliente["id"] 		= $row->id;
			$cliente["nome"] 	= $row->nome;
			$cliente["tel"] 	= $row->tel;
			$cliente["end"] 	= $row->end;
			$cliente["img"] 	= $row->img;
			$cliente["idFruta"]= $row->idFruta;
			$cliente["idcliente"]= $row->idcliente;
			$cliente["fruta"] 	= $row->fruta;
			$cliente["descricao"] = $row->descricao;
			$cliente["preco1"] 	= $row->preco1;

			array_push($response["clientes"], $cliente);
		}
		$response["sucesso"] = 1;

		echo json_encode($response);
	}else{
		$response["sucesso"] = 0;
		$response["mensagem"] = "Por favor atualize a pagina!";
		echo json_encode($response);

	}
?>

ele mostra o cliente mas não faz os arrays que preciso dentro dos dados do cliente.

se alguem poder ajudar!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams Duarte, esse seria a melhor forma, mas eu preciso que venha do banco mysql. então estou com minha pesquisa, mas não estou conseguindo, cheguei a esse codigo abaixo. mas não funciona.

Como assim seria a melhor forma?

 

O exemplo que postei é somente a lógica do negócio, se precisar de duas consultas, faça, teste e quebre a cabeça testando, agora que não posso e fazer por você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.