Jump to content
uoquisala

Uma explicação sobre php e json

Recommended Posts

Gostaria de uma explicação sobre essa parte do código abaixo e o que   => faz.!

 

Sei que estou estou pegando dados do mysql e convertendo e json, mais peguei esse código pronto e adaptei ao meu banco, e funciona normal,mais queria realmente entender o que acontece!

 

<?php
header('content-type:text/html;charset=utf-8');
include_once("conect.php");

$sql = "SELECT id, descricao FROM cardapio";
$result = mysqli_query($link, $sql);

    foreach ($result as $idx => $dado) {  // Quero entender daqui ate

       $descricao = $dado['descricao'];

      $json["itens"][] = ["id" => $dado['id'], 
                     "descricao" => utf8_encode($descricao)];  // aqui
   }

echo json_encode($json, JSON_PRETTY_PRINT);
?>

 

Share this post


Link to post
Share on other sites

Existem alguns conceitos a serem entendido, junto com o funcionamento de algumas funções.

 

A função MySQLi_query retorna, quando a consulta ocorre com sucesso, um objeto do tipo MySQLi_result.

$sql = "SELECT id, descricao FROM cardapio";
$result = mysqli_query($link, $sql);

 

O objeto MySQLi_result contém todos os resultados da consulta. Além disso ele implementa a interface Traversable. Essa interface permite que um objeto possa ser Iterado.

 

Foreach, por sua vez, é uma estrutura de controle que pode iterar sobre array ou objetos que inplementam a interface Traversable.

foreach ($result as $idx => $dado) {
	/** cada loop do foreach será uma linha do resultado da consulta **/
}

E é exatamente isso que está ocorrendo na linha com o foreach. Está sendo realizada a iteração sobre os resultados do banco de dados.

 

Dentro do Foreach, está sendo recuperado o valor da coluna descricao e adicionado a variável descrição

$descricao = $dado['descricao'];

E está sendo criado um novo novo array com alguns dos dados da consulta.

$json["itens"][] = [
    "id" => $dado['id'], 
    "descricao" => utf8_encode($descricao)
];

A função utf8_encode, por sua vez, converte uma string do formato ISO-8859-1 (que também é conhecida como Windows-1252) para o formato UTF-8.

 

No final de tudo, é impresso o JSON utilizando a função json_encode.

  • Gostei 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Henrique Augusto Rohloff
      Olá! Sou iniciante e estou treinando para configurar uma página de buscas de produtos em um banco de dados.
      Os produtos já estão sendo encontrados quando a palavra bate com os itens do banco. A conexão com o banco de dados está funcionando corretamente. Porém, quando nada é encontrado, queria que aparecesse uma mensagem "Nenhum resultado, tente novamente." Já tentei com  else de tudo que é jeito mas não aparece corretamente... Qual é o jeito certo?
       
      Segue o código:
       
       
    • By maruoppolo
      Olá, tenho 2 tabelas:
       
      tb_dados: ID - MUSICA
       
      tb_votos: ID - VOTO - RADIO - MUSICA
       
      Preciso fazer uma query que traga as musicas da tb_dados porém ordenando pelo número de votos que ela teve na tb_votos.
       
      Então assim, existem 2 tipos de voto 1 = like e 2 = dislike, cada ver que um usuário vota eu pego qual radio que ele esta ouvindo e salvo no campo radio, o id da musica na tb_dados e salvo no campo musica da tb_votos e coloco o número 1 para like e 2 para dislike no campo voto.
       
      A query precisa contar quantos likes teve na tv_votos filtrando por radio e mostrando os resultados em ordem decrescente as musicas com mais likes.
       
      A ideia é trazer as 10 musicas com mais like de cada radio
       
      Alguma ideia de como fazer?? Estou enroscado nisso a dias.
    • By Chester1
      oi, eu to tentando mexer com servidores agora no PHP e esta dando um erro muito estranho que quando eu procuro em um programa que acha erros de sintaxe ele me diz que o erro esta no </HTML>    se alguem puder me dizer qual foi o erro que eu cometi eu agradeceria
       

       
      <HTML> <HEAD><TITLE>incluindo no banco de dados</TITLE></HEAD> <body> <BODY bgcolor="#d0d0d0"> <center> <h3>Lanchonete coma bem (voltada para o internauta)</h3> <h1>24horas</h1> <?php $login_digitado=$_POST['login']; $senha=$_POST['senha']; $nome=$_POST['nome']; $email=$_POST['email']; $telefone=$_POST['telefone']; $celular=$_POST['celular']; $endereco=$_POST['endereco']; $complemento=$_POST['complemento']; if ($login_digitado == "" || $senha == "" || $nome =="" || $email == "" || $telefone == "" || $endereco == "" || $complemento == "") { echo "existem(m) campos(s) de preenchimento obrigatorio em branco,<BR> infelizmente tera que voltar para preenche-lo(s)."; echo "<BR><a href=\"cadastro.php\">clique aqui para tentar novamente</a>"; } else { { $link=mysql_connect("localhost", "root", "") or die ("<h1>nao foi possivel conectar !!!</h1> ".mysql_error());  
      obs :estou trabalhando com formularios e servidores
         
         
         
         
      ?>
      </BODY>
      </HTML>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.